MCPcopy
hub / github.com/etcd-io/etcd / Launch

Method Launch

tests/framework/integration/cluster.go:962–1123  ·  view source on GitHub ↗

Launch starts a member based on ServerConfig, PeerListeners and ClientListeners.

()

Source from the content-addressed store, hash-verified

960// Launch starts a member based on ServerConfig, PeerListeners
961// and ClientListeners.
962func (m *Member) Launch() error {
963 m.Logger.Info(
964 "launching a member",
965 zap.String("name", m.Name),
966 zap.Strings("advertise-peer-urls", m.PeerURLs.StringSlice()),
967 zap.Strings("listen-client-urls", m.ClientURLs.StringSlice()),
968 zap.String("grpc-url", m.GRPCURL),
969 )
970 var err error
971 if m.Server, err = etcdserver.NewServer(m.ServerConfig); err != nil {
972 return fmt.Errorf("failed to initialize the etcd server: %w", err)
973 }
974 m.Server.SyncTicker = time.NewTicker(500 * time.Millisecond)
975 m.Server.Start()
976
977 var peerTLScfg *tls.Config
978 if m.PeerTLSInfo != nil && !m.PeerTLSInfo.Empty() {
979 if peerTLScfg, err = m.PeerTLSInfo.ServerConfig(); err != nil {
980 return err
981 }
982 }
983
984 if m.GRPCListener != nil {
985 var tlscfg *tls.Config
986 if m.ClientTLSInfo != nil && !m.ClientTLSInfo.Empty() {
987 tlscfg, err = m.ClientTLSInfo.ServerConfig()
988 if err != nil {
989 return err
990 }
991 }
992 m.GRPCServer = v3rpc.Server(m.Server, tlscfg, m.GRPCServerRecorder.UnaryInterceptor(), m.GRPCServerOpts...)
993 m.ServerClient = v3client.New(m.Server)
994 lockpb.RegisterLockServer(m.GRPCServer, v3lock.NewLockServer(m.ServerClient))
995 epb.RegisterElectionServer(m.GRPCServer, v3election.NewElectionServer(m.ServerClient))
996 go m.GRPCServer.Serve(m.GRPCListener)
997 }
998
999 m.RaftHandler = &testutil.PauseableHandler{Next: etcdhttp.NewPeerHandler(m.Logger, m.Server)}
1000
1001 h := (http.Handler)(m.RaftHandler)
1002 if m.GRPCListener != nil {
1003 h = http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
1004 m.RaftHandler.ServeHTTP(w, r)
1005 })
1006 }
1007
1008 for _, ln := range m.PeerListeners {
1009 cm := cmux.New(ln)
1010 // don't hang on matcher after closing listener
1011 cm.SetReadTimeout(time.Second)
1012
1013 // serve http1/http2 rafthttp/grpc
1014 ll := cm.Match(cmux.Any())
1015 if peerTLScfg != nil {
1016 if ll, err = transport.NewTLSListener(ll, m.PeerTLSInfo); err != nil {
1017 return err
1018 }
1019 }

Callers 7

RestartMethod · 0.95
TestMemberPromoteFunction · 0.45
LaunchMethod · 0.45
addMemberMethod · 0.45

Calls 13

CloseMethod · 0.95
NewClientV3Function · 0.85
InfoMethod · 0.80
StringSliceMethod · 0.80
ServerConfigMethod · 0.80
UnaryInterceptorMethod · 0.80
MatchMethod · 0.80
StringMethod · 0.65
ErrorfMethod · 0.65
StartMethod · 0.65
CloseMethod · 0.65
EmptyMethod · 0.45

Tested by 3

TestMemberPromoteFunction · 0.36