Browse Source

Fix the daemon panic on consul server restart

Signed-off-by: Santhosh Manohar <santhosh@docker.com>
Santhosh Manohar 9 năm trước cách đây
mục cha
commit
4df4ba70ca
1 tập tin đã thay đổi với 7 bổ sung0 xóa
  1. 7 0
      libnetwork/datastore/datastore.go

+ 7 - 0
libnetwork/datastore/datastore.go

@@ -265,6 +265,13 @@ func (ds *datastore) Watch(kvObject KVObject, stopCh <-chan struct{}) (<-chan KV
 				close(sCh)
 				return
 			case kvPair := <-kvpCh:
+				// If the backend KV store gets reset libkv's go routine
+				// for the watch can exit resulting in a nil value in
+				// channel.
+				if kvPair == nil {
+					close(sCh)
+					return
+				}
 				dstO := ctor.New()
 
 				if err := dstO.SetValue(kvPair.Value); err != nil {