Avoid a rare panic if DestroyServer is called early

I never actually hit this bug, but I noticed it was possible when
examining the WaitGroup code that gets .Done() by DestroyServer().
This commit is contained in:
James Shubin
2016-07-26 01:58:13 -04:00
parent a606961a22
commit f6c1bba3b6

View File

@@ -1589,6 +1589,9 @@ func (obj *EmbdEtcd) DestroyServer() error {
log.Printf("Etcd: DestroyServer: Done removing data...") log.Printf("Etcd: DestroyServer: Done removing data...")
obj.memberId = 0 obj.memberId = 0
if obj.server == nil { // skip the .Done() below because we didn't .Add(1) it.
return err
}
obj.server = nil // important because this is used as an isRunning flag obj.server = nil // important because this is used as an isRunning flag
log.Printf("Etcd: DestroyServer: Unlocking server...") log.Printf("Etcd: DestroyServer: Unlocking server...")
obj.serverwg.Done() // -1 obj.serverwg.Done() // -1