Update github.com/coreos/etcd dependency

This commit is contained in:
Wojciech Tyczynski 2015-11-25 11:17:47 +01:00
parent 9379e4cf08
commit ebf4086a92
10 changed files with 258 additions and 144 deletions

97
Godeps/Godeps.json generated
View File

@ -117,123 +117,123 @@
},
{
"ImportPath": "github.com/coreos/etcd/client",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/discovery",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/error",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/crc",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/fileutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/httputil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/idutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/ioutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/netutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/pathutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/pbutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/runtime",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/timeutil",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/transport",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/types",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/wait",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/raft",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/rafthttp",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/snap",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/storage",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/store",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/version",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/etcd/wal",
"Comment": "v2.2.1-1-g4dc835c",
"Rev": "4dc835c718bbdbb9a1c36ef5cdf1921a423cbf70"
"Comment": "v2.2.2-1-g09b81ba",
"Rev": "09b81bad15e96e05dafd0494a8c165a13718c350"
},
{
"ImportPath": "github.com/coreos/go-etcd/etcd",
@ -382,7 +382,6 @@
},
{
"ImportPath": "github.com/fsouza/go-dockerclient",
"Comment": "0.2.1-728-g1399676",
"Rev": "1399676f53e6ccf46e0bf00751b21bed329bc60e"
},
{

View File

@ -15,10 +15,18 @@ import (
)
const (
codecSelferC_UTF81819 = 1
codecSelferC_RAW1819 = 0
// ----- content types ----
codecSelferC_UTF81819 = 1
codecSelferC_RAW1819 = 0
// ----- value types used ----
codecSelferValueTypeArray1819 = 10
codecSelferValueTypeMap1819 = 9
// ----- containerStateValues ----
codecSelfer_containerMapKey1819 = 2
codecSelfer_containerMapValue1819 = 3
codecSelfer_containerMapEnd1819 = 4
codecSelfer_containerArrayElem1819 = 6
codecSelfer_containerArrayEnd1819 = 7
)
var (
@ -29,10 +37,10 @@ var (
type codecSelfer1819 struct{}
func init() {
if codec1978.GenVersion != 4 {
if codec1978.GenVersion != 5 {
_, file, _, _ := runtime.Caller(0)
err := fmt.Errorf("codecgen version mismatch: current: %v, need %v. Re-generate file: %v",
4, codec1978.GenVersion, file)
5, codec1978.GenVersion, file)
panic(err)
}
if false { // reference the types, but skip this branch at build/run time
@ -58,18 +66,21 @@ func (x *Response) CodecEncodeSelf(e *codec1978.Encoder) {
var yyq2 [3]bool
_, _, _ = yysep2, yyq2, yy2arr2
const yyr2 bool = false
var yynn2 int
if yyr2 || yy2arr2 {
r.EncodeArrayStart(3)
} else {
var yynn2 int = 3
yynn2 = 3
for _, b := range yyq2 {
if b {
yynn2++
}
}
r.EncodeMapStart(yynn2)
yynn2 = 0
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
yym4 := z.EncBinary()
_ = yym4
if false {
@ -77,7 +88,9 @@ func (x *Response) CodecEncodeSelf(e *codec1978.Encoder) {
r.EncodeString(codecSelferC_UTF81819, string(x.Action))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("action"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym5 := z.EncBinary()
_ = yym5
if false {
@ -86,13 +99,16 @@ func (x *Response) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if x.Node == nil {
r.EncodeNil()
} else {
x.Node.CodecEncodeSelf(e)
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("node"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
if x.Node == nil {
r.EncodeNil()
} else {
@ -100,21 +116,26 @@ func (x *Response) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if x.PrevNode == nil {
r.EncodeNil()
} else {
x.PrevNode.CodecEncodeSelf(e)
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("prevNode"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
if x.PrevNode == nil {
r.EncodeNil()
} else {
x.PrevNode.CodecEncodeSelf(e)
}
}
if yysep2 {
r.EncodeEnd()
if yyr2 || yy2arr2 {
z.EncSendContainerState(codecSelfer_containerArrayEnd1819)
} else {
z.EncSendContainerState(codecSelfer_containerMapEnd1819)
}
}
}
@ -129,17 +150,18 @@ func (x *Response) CodecDecodeSelf(d *codec1978.Decoder) {
if false {
} else if z.HasExtensions() && z.DecExt(x) {
} else {
if r.IsContainerType(codecSelferValueTypeMap1819) {
yyct9 := r.ContainerType()
if yyct9 == codecSelferValueTypeMap1819 {
yyl9 := r.ReadMapStart()
if yyl9 == 0 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerMapEnd1819)
} else {
x.codecDecodeSelfFromMap(yyl9, d)
}
} else if r.IsContainerType(codecSelferValueTypeArray1819) {
} else if yyct9 == codecSelferValueTypeArray1819 {
yyl9 := r.ReadArrayStart()
if yyl9 == 0 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
} else {
x.codecDecodeSelfFromArray(yyl9, d)
}
@ -166,8 +188,10 @@ func (x *Response) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
break
}
}
z.DecSendContainerState(codecSelfer_containerMapKey1819)
yys10Slc = r.DecodeBytes(yys10Slc, true, true)
yys10 := string(yys10Slc)
z.DecSendContainerState(codecSelfer_containerMapValue1819)
switch yys10 {
case "action":
if r.TryDecodeAsNil() {
@ -201,9 +225,7 @@ func (x *Response) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
z.DecStructFieldNotFound(-1, yys10)
} // end switch yys10
} // end for yyj10
if !yyhl10 {
r.ReadEnd()
}
z.DecSendContainerState(codecSelfer_containerMapEnd1819)
}
func (x *Response) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
@ -220,9 +242,10 @@ func (x *Response) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb14 = r.CheckBreak()
}
if yyb14 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.Action = ""
} else {
@ -235,9 +258,10 @@ func (x *Response) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb14 = r.CheckBreak()
}
if yyb14 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
if x.Node != nil {
x.Node = nil
@ -255,9 +279,10 @@ func (x *Response) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb14 = r.CheckBreak()
}
if yyb14 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
if x.PrevNode != nil {
x.PrevNode = nil
@ -278,9 +303,10 @@ func (x *Response) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if yyb14 {
break
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
z.DecStructFieldNotFound(yyj14-1, "")
}
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
}
func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
@ -303,18 +329,21 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
yyq19[1] = x.Dir != false
yyq19[6] = x.Expiration != nil
yyq19[7] = x.TTL != 0
var yynn19 int
if yyr19 || yy2arr19 {
r.EncodeArrayStart(8)
} else {
var yynn19 int = 5
yynn19 = 5
for _, b := range yyq19 {
if b {
yynn19++
}
}
r.EncodeMapStart(yynn19)
yynn19 = 0
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
yym21 := z.EncBinary()
_ = yym21
if false {
@ -322,7 +351,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
r.EncodeString(codecSelferC_UTF81819, string(x.Key))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("key"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym22 := z.EncBinary()
_ = yym22
if false {
@ -331,6 +362,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if yyq19[1] {
yym24 := z.EncBinary()
_ = yym24
@ -343,7 +375,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
} else {
if yyq19[1] {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("dir"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym25 := z.EncBinary()
_ = yym25
if false {
@ -353,6 +387,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
yym27 := z.EncBinary()
_ = yym27
if false {
@ -360,7 +395,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
r.EncodeString(codecSelferC_UTF81819, string(x.Value))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("value"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym28 := z.EncBinary()
_ = yym28
if false {
@ -369,13 +406,16 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if x.Nodes == nil {
r.EncodeNil()
} else {
x.Nodes.CodecEncodeSelf(e)
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("nodes"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
if x.Nodes == nil {
r.EncodeNil()
} else {
@ -383,6 +423,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
yym31 := z.EncBinary()
_ = yym31
if false {
@ -390,7 +431,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
r.EncodeUint(uint64(x.CreatedIndex))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("createdIndex"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym32 := z.EncBinary()
_ = yym32
if false {
@ -399,6 +442,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
yym34 := z.EncBinary()
_ = yym34
if false {
@ -406,7 +450,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
r.EncodeUint(uint64(x.ModifiedIndex))
}
} else {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("modifiedIndex"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym35 := z.EncBinary()
_ = yym35
if false {
@ -415,6 +461,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if yyq19[6] {
if x.Expiration == nil {
r.EncodeNil()
@ -438,7 +485,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
} else {
if yyq19[6] {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("expiration"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
if x.Expiration == nil {
r.EncodeNil()
} else {
@ -459,6 +508,7 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if yyq19[7] {
yym42 := z.EncBinary()
_ = yym42
@ -471,7 +521,9 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
} else {
if yyq19[7] {
z.EncSendContainerState(codecSelfer_containerMapKey1819)
r.EncodeString(codecSelferC_UTF81819, string("ttl"))
z.EncSendContainerState(codecSelfer_containerMapValue1819)
yym43 := z.EncBinary()
_ = yym43
if false {
@ -480,8 +532,10 @@ func (x *Node) CodecEncodeSelf(e *codec1978.Encoder) {
}
}
}
if yysep19 {
r.EncodeEnd()
if yyr19 || yy2arr19 {
z.EncSendContainerState(codecSelfer_containerArrayEnd1819)
} else {
z.EncSendContainerState(codecSelfer_containerMapEnd1819)
}
}
}
@ -496,17 +550,18 @@ func (x *Node) CodecDecodeSelf(d *codec1978.Decoder) {
if false {
} else if z.HasExtensions() && z.DecExt(x) {
} else {
if r.IsContainerType(codecSelferValueTypeMap1819) {
yyct45 := r.ContainerType()
if yyct45 == codecSelferValueTypeMap1819 {
yyl45 := r.ReadMapStart()
if yyl45 == 0 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerMapEnd1819)
} else {
x.codecDecodeSelfFromMap(yyl45, d)
}
} else if r.IsContainerType(codecSelferValueTypeArray1819) {
} else if yyct45 == codecSelferValueTypeArray1819 {
yyl45 := r.ReadArrayStart()
if yyl45 == 0 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
} else {
x.codecDecodeSelfFromArray(yyl45, d)
}
@ -533,8 +588,10 @@ func (x *Node) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
break
}
}
z.DecSendContainerState(codecSelfer_containerMapKey1819)
yys46Slc = r.DecodeBytes(yys46Slc, true, true)
yys46 := string(yys46Slc)
z.DecSendContainerState(codecSelfer_containerMapValue1819)
switch yys46 {
case "key":
if r.TryDecodeAsNil() {
@ -606,9 +663,7 @@ func (x *Node) codecDecodeSelfFromMap(l int, d *codec1978.Decoder) {
z.DecStructFieldNotFound(-1, yys46)
} // end switch yys46
} // end for yyj46
if !yyhl46 {
r.ReadEnd()
}
z.DecSendContainerState(codecSelfer_containerMapEnd1819)
}
func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
@ -625,9 +680,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.Key = ""
} else {
@ -640,9 +696,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.Dir = false
} else {
@ -655,9 +712,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.Value = ""
} else {
@ -670,9 +728,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.Nodes = nil
} else {
@ -686,9 +745,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.CreatedIndex = 0
} else {
@ -701,9 +761,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.ModifiedIndex = 0
} else {
@ -716,9 +777,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
if x.Expiration != nil {
x.Expiration = nil
@ -748,9 +810,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
yyb57 = r.CheckBreak()
}
if yyb57 {
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
return
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
if r.TryDecodeAsNil() {
x.TTL = 0
} else {
@ -766,9 +829,10 @@ func (x *Node) codecDecodeSelfFromArray(l int, d *codec1978.Decoder) {
if yyb57 {
break
}
z.DecSendContainerState(codecSelfer_containerArrayElem1819)
z.DecStructFieldNotFound(yyj57-1, "")
}
r.ReadEnd()
z.DecSendContainerState(codecSelfer_containerArrayEnd1819)
}
func (x Nodes) CodecEncodeSelf(e *codec1978.Encoder) {
@ -807,13 +871,14 @@ func (x codecSelfer1819) encNodes(v Nodes, e *codec1978.Encoder) {
_, _, _ = h, z, r
r.EncodeArrayStart(len(v))
for _, yyv70 := range v {
z.EncSendContainerState(codecSelfer_containerArrayElem1819)
if yyv70 == nil {
r.EncodeNil()
} else {
yyv70.CodecEncodeSelf(e)
}
}
r.EncodeEnd()
z.EncSendContainerState(codecSelfer_containerArrayEnd1819)
}
func (x codecSelfer1819) decNodes(v *Nodes, d *codec1978.Decoder) {
@ -823,39 +888,44 @@ func (x codecSelfer1819) decNodes(v *Nodes, d *codec1978.Decoder) {
yyv71 := *v
yyh71, yyl71 := z.DecSliceHelperStart()
var yyrr71, yyrl71 int
var yyc71, yyrt71 bool
_, _, _ = yyc71, yyrt71, yyrl71
yyrr71 = yyl71
if yyv71 == nil {
if yyrl71, yyrt71 = z.DecInferLen(yyl71, z.DecBasicHandle().MaxInitLen, 8); yyrt71 {
yyrr71 = yyrl71
}
yyv71 = make(Nodes, yyrl71)
yyc71 = true
}
var yyc71 bool
if yyl71 == 0 {
if len(yyv71) != 0 {
if yyv71 == nil {
yyv71 = []*Node{}
yyc71 = true
} else if len(yyv71) != 0 {
yyv71 = yyv71[:0]
yyc71 = true
}
} else if yyl71 > 0 {
var yyrr71, yyrl71 int
var yyrt71 bool
if yyl71 > cap(yyv71) {
yyrl71, yyrt71 = z.DecInferLen(yyl71, z.DecBasicHandle().MaxInitLen, 8)
yyv71 = make([]*Node, yyrl71)
yyc71 = true
yyrg71 := len(yyv71) > 0
yyv271 := yyv71
yyrl71, yyrt71 = z.DecInferLen(yyl71, z.DecBasicHandle().MaxInitLen, 8)
if yyrt71 {
if yyrl71 <= cap(yyv71) {
yyv71 = yyv71[:yyrl71]
} else {
yyv71 = make([]*Node, yyrl71)
}
} else {
yyv71 = make([]*Node, yyrl71)
}
yyc71 = true
yyrr71 = len(yyv71)
if yyrg71 {
copy(yyv71, yyv271)
}
} else if yyl71 != len(yyv71) {
yyv71 = yyv71[:yyl71]
yyc71 = true
}
yyj71 := 0
for ; yyj71 < yyrr71; yyj71++ {
yyh71.ElemContainerState(yyj71)
if r.TryDecodeAsNil() {
if yyv71[yyj71] != nil {
*yyv71[yyj71] = Node{}
@ -872,6 +942,7 @@ func (x codecSelfer1819) decNodes(v *Nodes, d *codec1978.Decoder) {
if yyrt71 {
for ; yyj71 < yyl71; yyj71++ {
yyv71 = append(yyv71, nil)
yyh71.ElemContainerState(yyj71)
if r.TryDecodeAsNil() {
if yyv71[yyj71] != nil {
*yyv71[yyj71] = Node{}
@ -888,12 +959,14 @@ func (x codecSelfer1819) decNodes(v *Nodes, d *codec1978.Decoder) {
}
} else {
for yyj71 := 0; !r.CheckBreak(); yyj71++ {
yyj71 := 0
for ; !r.CheckBreak(); yyj71++ {
if yyj71 >= len(yyv71) {
yyv71 = append(yyv71, nil) // var yyz71 *Node
yyc71 = true
}
yyh71.ElemContainerState(yyj71)
if yyj71 < len(yyv71) {
if r.TryDecodeAsNil() {
if yyv71[yyj71] != nil {
@ -912,10 +985,16 @@ func (x codecSelfer1819) decNodes(v *Nodes, d *codec1978.Decoder) {
}
}
yyh71.End()
if yyj71 < len(yyv71) {
yyv71 = yyv71[:yyj71]
yyc71 = true
} else if yyj71 == 0 && yyv71 == nil {
yyv71 = []*Node{}
yyc71 = true
}
}
yyh71.End()
if yyc71 {
*v = yyv71
}
}

View File

@ -22,6 +22,7 @@ import (
"reflect"
"sort"
"strings"
"sync"
"time"
etcderr "github.com/coreos/etcd/error"
@ -52,8 +53,8 @@ var rootRole = Role{
Role: RootRoleName,
Permissions: Permissions{
KV: RWPermission{
Read: []string{"*"},
Write: []string{"*"},
Read: []string{"/*"},
Write: []string{"/*"},
},
},
}
@ -62,8 +63,8 @@ var guestRole = Role{
Role: GuestRoleName,
Permissions: Permissions{
KV: RWPermission{
Read: []string{"*"},
Write: []string{"*"},
Read: []string{"/*"},
Write: []string{"/*"},
},
},
}
@ -93,7 +94,9 @@ type store struct {
server doer
timeout time.Duration
ensuredOnce bool
enabled *bool
mu sync.Mutex // protect enabled
enabled *bool
}
type User struct {
@ -377,6 +380,9 @@ func (s *store) UpdateRole(role Role) (Role, error) {
}
func (s *store) AuthEnabled() bool {
s.mu.Lock()
defer s.mu.Unlock()
return s.detectAuth()
}
@ -384,6 +390,10 @@ func (s *store) EnableAuth() error {
if s.AuthEnabled() {
return authErr(http.StatusConflict, "already enabled")
}
s.mu.Lock()
defer s.mu.Unlock()
_, err := s.GetUser("root")
if err != nil {
return authErr(http.StatusConflict, "No root user available, please create one")
@ -412,6 +422,10 @@ func (s *store) DisableAuth() error {
if !s.AuthEnabled() {
return authErr(http.StatusConflict, "already disabled")
}
s.mu.Lock()
defer s.mu.Unlock()
err := s.disableAuth()
if err == nil {
b := false

View File

@ -220,6 +220,9 @@ func (c *cluster) SetID(id types.ID) { c.id = id }
func (c *cluster) SetStore(st store.Store) { c.store = st }
func (c *cluster) Recover() {
c.Lock()
defer c.Unlock()
c.members, c.removed = membersFromStore(c.store)
c.version = clusterVersionFromStore(c.store)
MustDetectDowngrade(c.version)

View File

@ -16,6 +16,7 @@ package etcdserver
import (
"errors"
"fmt"
etcdErr "github.com/coreos/etcd/error"
)
@ -37,3 +38,12 @@ func isKeyNotFound(err error) bool {
e, ok := err.(*etcdErr.Error)
return ok && e.ErrorCode == etcdErr.EcodeKeyNotFound
}
type DiscoveryError struct {
Op string
Err error
}
func (e DiscoveryError) Error() string {
return fmt.Sprintf("failed to %s discovery cluster (%v)", e.Op, e.Err)
}

View File

@ -52,6 +52,8 @@ const (
)
var (
// protects raftStatus
raftStatusMu sync.Mutex
// indirection for expvar func interface
// expvar panics when publishing duplicate name
// expvar does not support remove a registered name
@ -62,7 +64,11 @@ var (
func init() {
raft.SetLogger(capnslog.NewPackageLogger("github.com/coreos/etcd", "raft"))
expvar.Publish("raft.status", expvar.Func(func() interface{} { return raftStatus() }))
expvar.Publish("raft.status", expvar.Func(func() interface{} {
raftStatusMu.Lock()
defer raftStatusMu.Unlock()
return raftStatus()
}))
}
type RaftTimer interface {
@ -273,7 +279,9 @@ func startNode(cfg *ServerConfig, cl *cluster, ids []types.ID) (id types.ID, n r
MaxInflightMsgs: maxInflightMsgs,
}
n = raft.StartNode(c, peers)
raftStatusMu.Lock()
raftStatus = n.Status
raftStatusMu.Unlock()
advanceTicksForElection(n, c.ElectionTick)
return
}
@ -303,7 +311,9 @@ func restartNode(cfg *ServerConfig, snapshot *raftpb.Snapshot) (types.ID, *clust
MaxInflightMsgs: maxInflightMsgs,
}
n := raft.RestartNode(c)
raftStatusMu.Lock()
raftStatus = n.Status
raftStatusMu.Unlock()
advanceTicksForElection(n, c.ElectionTick)
return id, cl, n, s, w
}

View File

@ -238,7 +238,7 @@ func NewServer(cfg *ServerConfig) (*EtcdServer, error) {
if cfg.ShouldDiscover() {
str, err := discovery.JoinCluster(cfg.DiscoveryURL, cfg.DiscoveryProxy, m.ID, cfg.InitialPeerURLsMap.String())
if err != nil {
return nil, err
return nil, &DiscoveryError{Op: "join", Err: err}
}
urlsmap, err := types.NewURLsMap(str)
if err != nil {

View File

@ -83,32 +83,34 @@ func newPipeline(tr http.RoundTripper, picker *urlPicker, from, to, cid types.ID
}
func (p *pipeline) stop() {
close(p.msgc)
close(p.stopc)
p.wg.Wait()
}
func (p *pipeline) handle() {
defer p.wg.Done()
for m := range p.msgc {
start := time.Now()
err := p.post(pbutil.MustMarshal(&m))
if err == errStopped {
return
}
end := time.Now()
if err != nil {
reportSentFailure(pipelineMsg, m)
p.status.deactivate(failureType{source: pipelineMsg, action: "write"}, err.Error())
if m.Type == raftpb.MsgApp && p.fs != nil {
p.fs.Fail()
for {
select {
case m := <-p.msgc:
start := time.Now()
err := p.post(pbutil.MustMarshal(&m))
end := time.Now()
if err != nil {
p.status.deactivate(failureType{source: pipelineMsg, action: "write"}, err.Error())
reportSentFailure(pipelineMsg, m)
if m.Type == raftpb.MsgApp && p.fs != nil {
p.fs.Fail()
}
p.r.ReportUnreachable(m.To)
if isMsgSnap(m) {
p.r.ReportSnapshot(m.To, raft.SnapshotFailure)
}
continue
}
p.r.ReportUnreachable(m.To)
if isMsgSnap(m) {
p.r.ReportSnapshot(m.To, raft.SnapshotFailure)
}
} else {
p.status.activate()
if m.Type == raftpb.MsgApp && p.fs != nil {
p.fs.Succ(end.Sub(start))
@ -117,6 +119,8 @@ func (p *pipeline) handle() {
p.r.ReportSnapshot(m.To, raft.SnapshotFinish)
}
reportSentDuration(pipelineMsg, m, time.Since(start))
case <-p.stopc:
return
}
}
}
@ -138,13 +142,6 @@ func (p *pipeline) post(data []byte) (err error) {
req.Header.Set("X-Min-Cluster-Version", version.MinClusterVersion)
req.Header.Set("X-Etcd-Cluster-ID", p.cid.String())
var stopped bool
defer func() {
if stopped {
// rewrite to errStopped so the caller goroutine can stop itself
err = errStopped
}
}()
done := make(chan struct{}, 1)
cancel := httputil.RequestCanceler(p.tr, req)
go func() {
@ -152,7 +149,6 @@ func (p *pipeline) post(data []byte) (err error) {
case <-done:
case <-p.stopc:
waitSchedule()
stopped = true
cancel()
}
}()

View File

@ -151,7 +151,10 @@ func (t *transport) Send(msgs []raftpb.Message) {
t.maybeUpdatePeersTerm(m.Term)
}
t.mu.RLock()
p, ok := t.peers[to]
t.mu.RUnlock()
if ok {
if m.Type == raftpb.MsgApp {
t.serverStats.SendAppendReq(m.Size())

View File

@ -27,7 +27,7 @@ import (
var (
// MinClusterVersion is the min cluster version this etcd binary is compatible with.
MinClusterVersion = "2.1.0"
Version = "2.2.1+git"
Version = "2.2.2+git"
// Git SHA Value will be set during build
GitSHA = "Not provided (use ./build instead of go build)"