etcd: Chooser shouldn't be used with --no-server
We forgot to check this in Init().
This commit is contained in:
20
etcd/etcd.go
20
etcd/etcd.go
@@ -253,6 +253,7 @@ type EmbdEtcd struct { // EMBeddeD etcd
|
|||||||
// Chooser is the implementation of the algorithm that decides which
|
// Chooser is the implementation of the algorithm that decides which
|
||||||
// hosts to add or remove to grow and shrink the cluster.
|
// hosts to add or remove to grow and shrink the cluster.
|
||||||
Chooser chooser.Chooser
|
Chooser chooser.Chooser
|
||||||
|
chooser chooser.Chooser // the one we use if it's active
|
||||||
|
|
||||||
// Converger is a converged coordinator object that can be used to
|
// Converger is a converged coordinator object that can be used to
|
||||||
// track the converged state.
|
// track the converged state.
|
||||||
@@ -496,7 +497,7 @@ func (obj *EmbdEtcd) Init() error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if obj.Chooser != nil {
|
if !obj.NoServer { // you don't need a Chooser if there's no server...
|
||||||
data := &chooser.Data{
|
data := &chooser.Data{
|
||||||
Hostname: obj.Hostname,
|
Hostname: obj.Hostname,
|
||||||
Debug: obj.Debug,
|
Debug: obj.Debug,
|
||||||
@@ -504,7 +505,8 @@ func (obj *EmbdEtcd) Init() error {
|
|||||||
obj.Logf("chooser: "+format, v...)
|
obj.Logf("chooser: "+format, v...)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
if err := obj.Chooser.Init(data); err != nil {
|
obj.chooser = obj.Chooser // copy
|
||||||
|
if err := obj.chooser.Init(data); err != nil {
|
||||||
return errwrap.Wrapf(err, "error initializing chooser")
|
return errwrap.Wrapf(err, "error initializing chooser")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -578,8 +580,8 @@ func (obj *EmbdEtcd) Init() error {
|
|||||||
func (obj *EmbdEtcd) Close() error {
|
func (obj *EmbdEtcd) Close() error {
|
||||||
var reterr error
|
var reterr error
|
||||||
|
|
||||||
if obj.Chooser != nil {
|
if obj.chooser != nil {
|
||||||
reterr = errwrap.Append(reterr, obj.Chooser.Close())
|
reterr = errwrap.Append(reterr, obj.chooser.Close())
|
||||||
}
|
}
|
||||||
|
|
||||||
return reterr
|
return reterr
|
||||||
@@ -890,7 +892,7 @@ func (obj *EmbdEtcd) Run() error {
|
|||||||
go func() {
|
go func() {
|
||||||
defer obj.wg.Done()
|
defer obj.wg.Done()
|
||||||
defer close(obj.errExit2) // multi-signal for errChan close op
|
defer close(obj.errExit2) // multi-signal for errChan close op
|
||||||
if obj.Chooser == nil {
|
if obj.chooser == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -907,12 +909,12 @@ func (obj *EmbdEtcd) Run() error {
|
|||||||
obj.err(errwrap.Wrapf(err, "error during chooser init"))
|
obj.err(errwrap.Wrapf(err, "error during chooser init"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if err := obj.Chooser.Connect(exitCtx, c); err != nil {
|
if err := obj.chooser.Connect(exitCtx, c); err != nil {
|
||||||
obj.err(errwrap.Wrapf(err, "error during chooser connect"))
|
obj.err(errwrap.Wrapf(err, "error during chooser connect"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
ch, err := obj.Chooser.Watch()
|
ch, err := obj.chooser.Watch()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
obj.err(errwrap.Wrapf(err, "error running chooser watch"))
|
obj.err(errwrap.Wrapf(err, "error running chooser watch"))
|
||||||
return
|
return
|
||||||
@@ -920,10 +922,10 @@ func (obj *EmbdEtcd) Run() error {
|
|||||||
chooserChan = ch // watch it
|
chooserChan = ch // watch it
|
||||||
}()
|
}()
|
||||||
defer func() {
|
defer func() {
|
||||||
if obj.Chooser == nil {
|
if obj.chooser == nil {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
obj.Chooser.Disconnect() // ignore error if any
|
obj.chooser.Disconnect() // ignore error if any
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// call this once to start the server so we'll be able to connect
|
// call this once to start the server so we'll be able to connect
|
||||||
|
|||||||
Reference in New Issue
Block a user