소스 검색

embed: signal 'grpcServerC' before cmux serve

CMux.Serve blocks, so grpcServerC was never closed.

Fix https://github.com/coreos/etcdlabs/issues/216.

Signed-off-by: Gyu-Ho Lee <gyuhox@gmail.com>
Gyu-Ho Lee 9 년 전
부모
커밋
ba299bcaaf
1개의 변경된 파일1개의 추가작업 그리고 2개의 파일을 삭제
  1. 1 2
      embed/serve.go

+ 1 - 2
embed/serve.go

@@ -74,8 +74,6 @@ func (sctx *serveCtx) serve(s *etcdserver.EtcdServer, tlscfg *tls.Config, handle
 	servElection := v3election.NewElectionServer(v3c)
 	servElection := v3election.NewElectionServer(v3c)
 	servLock := v3lock.NewLockServer(v3c)
 	servLock := v3lock.NewLockServer(v3c)
 
 
-	defer close(sctx.grpcServerC)
-
 	if sctx.insecure {
 	if sctx.insecure {
 		gs := v3rpc.Server(s, nil)
 		gs := v3rpc.Server(s, nil)
 		sctx.grpcServerC <- gs
 		sctx.grpcServerC <- gs
@@ -140,6 +138,7 @@ func (sctx *serveCtx) serve(s *etcdserver.EtcdServer, tlscfg *tls.Config, handle
 		plog.Infof("serving client requests on %s", sctx.l.Addr().String())
 		plog.Infof("serving client requests on %s", sctx.l.Addr().String())
 	}
 	}
 
 
+	close(sctx.grpcServerC)
 	return m.Serve()
 	return m.Serve()
 }
 }