From 33b3a14b2464cbc2245b6002fd7c8a98115b9445 Mon Sep 17 00:00:00 2001 From: Matt Jaffee Date: Tue, 19 Jun 2018 16:28:54 -0500 Subject: [PATCH 1/3] move static cluster setup logic into Server/Cluster --- cluster.go | 17 +++++++++++++++++ server.go | 19 +++++++++++++++++-- server/server.go | 18 +++++------------- 3 files changed, 39 insertions(+), 15 deletions(-) diff --git a/cluster.go b/cluster.go index 8dc3a60d1..7cea731bd 100644 --- a/cluster.go +++ b/cluster.go @@ -1801,3 +1801,20 @@ func (c *Cluster) mergeClusterStatus(cs *internal.ClusterStatus) error { return nil } + +func (c *Cluster) setStatic(hosts []string) error { + if len(hosts) == 0 { + return errors.New("must specify at least one host") + } + c.Static = true + c.Coordinator = c.Node.ID + for _, address := range hosts { + uri, err := NewURIFromAddress(address) + if err != nil { + return errors.Wrap(err, "getting URI") + } + c.Nodes = append(c.Nodes, &Node{URI: *uri}) + } + c.MemberSet = NewStaticMemberSet(c.Nodes) + return nil +} diff --git a/server.go b/server.go index 39074de95..9e1b282b8 100644 --- a/server.go +++ b/server.go @@ -57,6 +57,7 @@ type Server struct { TranslateFile *TranslateFile diagnostics *DiagnosticsCollector executor *Executor + hosts []string // External handler Handler @@ -207,6 +208,15 @@ func OptServerURI(uri *URI) ServerOption { } } +// OptClusterStatic tells the server to use a static cluster with the defined +// hosts. Mostly used for testing. +func OptServerClusterStatic(hosts []string) ServerOption { + return func(s *Server) error { + s.hosts = hosts + return nil + } +} + // NewServer returns a new instance of Server. func NewServer(opts ...ServerOption) (*Server, error) { s := &Server{ @@ -272,6 +282,12 @@ func NewServer(opts ...ServerOption) (*Server, error) { IsCoordinator: s.Cluster.Coordinator == s.NodeID, } s.Cluster.Node = node + if len(s.hosts) > 0 { + err := s.Cluster.setStatic(s.hosts) + if err != nil { + return nil, errors.Wrap(err, "setting cluster static") + } + } // Append the NodeID tag to stats. s.Holder.Stats = s.Holder.Stats.WithTags(fmt.Sprintf("NodeID:%s", s.NodeID)) @@ -290,9 +306,8 @@ func NewServer(opts ...ServerOption) (*Server, error) { // Open opens and initializes the server. func (s *Server) Open() error { s.logger.Printf("open server") - // s.ln can be configured prior to Open() via s.OpenListener(). if s.ln == nil { - return errors.New("Must pass a listener option to NewServer") + return errors.New("must pass a listener option to NewServer") } // Log startup diff --git a/server/server.go b/server/server.go index b9493e8ca..373975e5f 100644 --- a/server/server.go +++ b/server/server.go @@ -209,6 +209,10 @@ func (m *Command) SetupServer() error { if err != nil { return errors.Wrap(err, "new stats client") } + var hosts []string + if m.Config.Cluster.Disabled { + hosts = m.Config.Cluster.Hosts + } ln, err := getListener(*uri, TLSConfig) if err != nil { @@ -242,6 +246,7 @@ func (m *Command) SetupServer() error { pilosa.OptServerURI(uri), pilosa.OptServerInternalClient(http.NewInternalClientFromURI(uri, c)), pilosa.OptServerPrimaryTranslateStore(primaryTranslateStore), + pilosa.OptServerClusterStatic(hosts), ) return errors.Wrap(err, "new server") @@ -250,19 +255,6 @@ func (m *Command) SetupServer() error { // SetupNetworking sets up internode communication based on the configuration. func (m *Command) SetupNetworking() error { if m.Config.Cluster.Disabled { - m.Server.Cluster.Static = true - m.Server.Cluster.Coordinator = m.Server.NodeID - for _, address := range m.Config.Cluster.Hosts { - uri, err := pilosa.NewURIFromAddress(address) - if err != nil { - return errors.Wrap(err, "getting URI") - } - m.Server.Cluster.Nodes = append(m.Server.Cluster.Nodes, &pilosa.Node{ - URI: *uri, - }) - } - - m.Server.Cluster.MemberSet = pilosa.NewStaticMemberSet(m.Server.Cluster.Nodes) return nil } From 69b1f2ea97bdb072bf64a827a4b703b40b65d334 Mon Sep 17 00:00:00 2001 From: Matt Jaffee Date: Tue, 19 Jun 2018 17:02:44 -0500 Subject: [PATCH 2/3] make behavior equivalent to pre-change to stop test from failing --- cluster.go | 3 --- server.go | 22 ++++++++++++---------- server/server.go | 6 +----- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/cluster.go b/cluster.go index 7cea731bd..c8cec60a2 100644 --- a/cluster.go +++ b/cluster.go @@ -1803,9 +1803,6 @@ func (c *Cluster) mergeClusterStatus(cs *internal.ClusterStatus) error { } func (c *Cluster) setStatic(hosts []string) error { - if len(hosts) == 0 { - return errors.New("must specify at least one host") - } c.Static = true c.Coordinator = c.Node.ID for _, address := range hosts { diff --git a/server.go b/server.go index 9e1b282b8..14d9bb2b6 100644 --- a/server.go +++ b/server.go @@ -52,12 +52,13 @@ type Server struct { closing chan struct{} // Internal - Holder *Holder - Cluster *Cluster - TranslateFile *TranslateFile - diagnostics *DiagnosticsCollector - executor *Executor - hosts []string + Holder *Holder + Cluster *Cluster + TranslateFile *TranslateFile + diagnostics *DiagnosticsCollector + executor *Executor + hosts []string + clusterDisabled bool // External handler Handler @@ -208,11 +209,12 @@ func OptServerURI(uri *URI) ServerOption { } } -// OptClusterStatic tells the server to use a static cluster with the defined -// hosts. Mostly used for testing. -func OptServerClusterStatic(hosts []string) ServerOption { +// OptClusterDisabled tells the server whether to use a static cluster with the +// defined hosts. Mostly used for testing. +func OptServerClusterDisabled(disabled bool, hosts []string) ServerOption { return func(s *Server) error { s.hosts = hosts + s.clusterDisabled = disabled return nil } } @@ -282,7 +284,7 @@ func NewServer(opts ...ServerOption) (*Server, error) { IsCoordinator: s.Cluster.Coordinator == s.NodeID, } s.Cluster.Node = node - if len(s.hosts) > 0 { + if s.clusterDisabled { err := s.Cluster.setStatic(s.hosts) if err != nil { return nil, errors.Wrap(err, "setting cluster static") diff --git a/server/server.go b/server/server.go index 373975e5f..4898088f3 100644 --- a/server/server.go +++ b/server/server.go @@ -209,10 +209,6 @@ func (m *Command) SetupServer() error { if err != nil { return errors.Wrap(err, "new stats client") } - var hosts []string - if m.Config.Cluster.Disabled { - hosts = m.Config.Cluster.Hosts - } ln, err := getListener(*uri, TLSConfig) if err != nil { @@ -246,7 +242,7 @@ func (m *Command) SetupServer() error { pilosa.OptServerURI(uri), pilosa.OptServerInternalClient(http.NewInternalClientFromURI(uri, c)), pilosa.OptServerPrimaryTranslateStore(primaryTranslateStore), - pilosa.OptServerClusterStatic(hosts), + pilosa.OptServerClusterDisabled(m.Config.Cluster.Disabled, m.Config.Cluster.Hosts), ) return errors.Wrap(err, "new server") From 8c35cb89bb1438ca0695fc0a1e3dd9037153033c Mon Sep 17 00:00:00 2001 From: Travis Turner Date: Tue, 19 Jun 2018 17:54:16 -0500 Subject: [PATCH 3/3] rename test/frame.go to test/field.go --- test/{frame.go => field.go} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename test/{frame.go => field.go} (100%) diff --git a/test/frame.go b/test/field.go similarity index 100% rename from test/frame.go rename to test/field.go