diff --git a/client_test.go b/client_test.go index 636873242..70ea6c669 100644 --- a/client_test.go +++ b/client_test.go @@ -35,7 +35,7 @@ func createCluster(c *pilosa.Cluster) ([]*test.Server, []*test.Holder) { for i := 0; i < numNodes; i++ { hldr[i] = test.MustOpenHolder() server[i] = test.NewServer() - server[i].Handler.Host = server[i].HostURI() + server[i].Handler.URI = server[i].HostURI() server[i].Handler.Cluster = c server[i].Handler.Cluster.Nodes[i].Host = server[i].Host() server[i].Handler.Holder = hldr[i].Holder @@ -210,7 +210,7 @@ func TestClient_Import(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -261,7 +261,7 @@ func TestClient_ImportInverseEnabled(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -310,7 +310,7 @@ func TestClient_ImportValue(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -348,7 +348,7 @@ func TestClient_BackupRestore(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -413,7 +413,7 @@ func TestClient_BackupInverseView(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -450,7 +450,7 @@ func TestClient_BackupInvalidView(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -479,7 +479,7 @@ func TestClient_FragmentBlocks(t *testing.T) { s := test.NewServer() defer s.Close() - s.Handler.Host = s.HostURI() + s.Handler.URI = s.HostURI() s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder diff --git a/ctl/backup_test.go b/ctl/backup_test.go index 4b7fc816e..3db4b3b73 100644 --- a/ctl/backup_test.go +++ b/ctl/backup_test.go @@ -50,7 +50,7 @@ func TestBackupCommand_Run(t *testing.T) { if err != nil { t.Fatal(err) } - s.Handler.Host = uri + s.Handler.URI = uri s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder diff --git a/ctl/export_test.go b/ctl/export_test.go index 21f00d81d..401b902e9 100644 --- a/ctl/export_test.go +++ b/ctl/export_test.go @@ -63,7 +63,7 @@ func TestExportCommand_Run(t *testing.T) { if err != nil { t.Fatal(err) } - s.Handler.Host = uri + s.Handler.URI = uri s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder diff --git a/ctl/import_test.go b/ctl/import_test.go index e9bb4d57e..5979bdbee 100644 --- a/ctl/import_test.go +++ b/ctl/import_test.go @@ -69,7 +69,7 @@ func TestImportCommand_Run(t *testing.T) { if err != nil { t.Fatal(err) } - s.Handler.Host = uri + s.Handler.URI = uri s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder @@ -109,7 +109,7 @@ func TestImportCommand_RunValue(t *testing.T) { if err != nil { t.Fatal(err) } - s.Handler.Host = uri + s.Handler.URI = uri s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder diff --git a/ctl/restore_test.go b/ctl/restore_test.go index ad3644841..9dd2d3661 100644 --- a/ctl/restore_test.go +++ b/ctl/restore_test.go @@ -52,7 +52,7 @@ func TestRestoreCommand_Run(t *testing.T) { if err != nil { t.Fatal(err) } - s.Handler.Host = uri + s.Handler.URI = uri s.Handler.Cluster = test.NewCluster(1) s.Handler.Cluster.Nodes[0].Host = s.Host() s.Handler.Holder = hldr.Holder diff --git a/handler.go b/handler.go index 880d9d563..8cdeede67 100644 --- a/handler.go +++ b/handler.go @@ -56,8 +56,8 @@ type Handler struct { StatusHandler StatusHandler // Local hostname & cluster configuration. - Host *URI - Cluster *Cluster + URI *URI + Cluster *Cluster ClientOptions *ClientOptions Router *mux.Router @@ -1167,8 +1167,8 @@ func (h *Handler) handlePostImport(w http.ResponseWriter, r *http.Request) { } // Validate that this handler owns the slice. - if !h.Cluster.OwnsFragment(h.Host.HostPort(), req.Index, req.Slice) { - mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.Host, req.Index, req.Slice) + if !h.Cluster.OwnsFragment(h.URI.HostPort(), req.Index, req.Slice) { + mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.URI, req.Index, req.Slice) http.Error(w, mesg, http.StatusPreconditionFailed) return } @@ -1237,8 +1237,8 @@ func (h *Handler) handlePostImportValue(w http.ResponseWriter, r *http.Request) } // Validate that this handler owns the slice. - if !h.Cluster.OwnsFragment(h.Host.HostPort(), req.Index, req.Slice) { - mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.Host, req.Index, req.Slice) + if !h.Cluster.OwnsFragment(h.URI.HostPort(), req.Index, req.Slice) { + mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.URI, req.Index, req.Slice) http.Error(w, mesg, http.StatusPreconditionFailed) return } @@ -1303,8 +1303,8 @@ func (h *Handler) handleGetExportCSV(w http.ResponseWriter, r *http.Request) { } // Validate that this handler owns the slice. - if !h.Cluster.OwnsFragment(h.Host.HostPort(), index, slice) { - mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.Host, index, slice) + if !h.Cluster.OwnsFragment(h.URI.HostPort(), index, slice) { + mesg := fmt.Sprintf("host does not own slice %s-%s slice:%d", h.URI, index, slice) http.Error(w, mesg, http.StatusPreconditionFailed) return } @@ -1535,7 +1535,7 @@ func (h *Handler) handlePostFrameRestore(w http.ResponseWriter, r *http.Request) // Loop over each slice and import it if this node owns it. for slice := uint64(0); slice <= maxSlices[indexName]; slice++ { // Ignore this slice if we don't own it. - if !h.Cluster.OwnsFragment(h.Host.HostPort(), indexName, slice) { + if !h.Cluster.OwnsFragment(h.URI.HostPort(), indexName, slice) { continue } diff --git a/holder.go b/holder.go index 5e16e7a39..a6b85ff75 100644 --- a/holder.go +++ b/holder.go @@ -417,7 +417,7 @@ func (h *Holder) logger() *log.Logger { return log.New(h.LogOutput, "", log.Lstd type HolderSyncer struct { Holder *Holder - Host *URI + URI *URI Cluster *Cluster ClientOptions *ClientOptions @@ -468,7 +468,7 @@ func (s *HolderSyncer) SyncHolder() error { for slice := uint64(0); slice <= s.Holder.Index(di.Name).MaxSlice(); slice++ { // Ignore slices that this host doesn't own. - if !s.Cluster.OwnsFragment(s.Host.HostPort(), di.Name, slice) { + if !s.Cluster.OwnsFragment(s.URI.HostPort(), di.Name, slice) { continue } @@ -504,7 +504,7 @@ func (s *HolderSyncer) syncIndex(index string) error { } // Sync with every other host. - for _, node := range Nodes(s.Cluster.Nodes).FilterHost(s.Host.HostPort()) { + for _, node := range Nodes(s.Cluster.Nodes).FilterHost(s.URI.HostPort()) { client, err := NewClient(node.Host, s.ClientOptions) if err != nil { return err @@ -549,7 +549,7 @@ func (s *HolderSyncer) syncFrame(index, name string) error { } // Sync with every other host. - for _, node := range Nodes(s.Cluster.Nodes).FilterHost(s.Host.HostPort()) { + for _, node := range Nodes(s.Cluster.Nodes).FilterHost(s.URI.HostPort()) { client, err := NewClient(node.Host, s.ClientOptions) if err != nil { return err @@ -604,7 +604,7 @@ func (s *HolderSyncer) syncFragment(index, frame, view string, slice uint64) err // Sync fragments together. fs := FragmentSyncer{ Fragment: frag, - Host: s.Host.HostPort(), + Host: s.URI.HostPort(), Cluster: s.Cluster, Closing: s.Closing, ClientOptions: s.ClientOptions, diff --git a/holder_test.go b/holder_test.go index 8158de43f..104bd1bb0 100644 --- a/holder_test.go +++ b/holder_test.go @@ -383,7 +383,7 @@ func TestHolderSyncer_SyncHolder(t *testing.T) { } syncer := pilosa.HolderSyncer{ Holder: hldr0.Holder, - Host: uri, + URI: uri, Cluster: cluster, } diff --git a/server.go b/server.go index bdc602a1d..773cf9025 100644 --- a/server.go +++ b/server.go @@ -60,7 +60,7 @@ type Server struct { // Cluster configuration. // Host is replaced with actual host after opening if port is ":0". Network string - Host *URI + URI *URI Cluster *Cluster // Background monitoring intervals. @@ -109,33 +109,33 @@ func (s *Server) Open() error { var err error // If bind URI has the https scheme, enable TLS - if s.Host.Scheme() == "https" && s.TLS != nil { - ln, err = tls.Listen("tcp", s.Host.HostPort(), s.TLS) + if s.URI.Scheme() == "https" && s.TLS != nil { + ln, err = tls.Listen("tcp", s.URI.HostPort(), s.TLS) if err != nil { return err } - } else if s.Host.Scheme() == "http" { + } else if s.URI.Scheme() == "http" { // Open HTTP listener to determine port (if specified as :0). - ln, err = net.Listen(s.Network, s.Host.HostPort()) + ln, err = net.Listen(s.Network, s.URI.HostPort()) if err != nil { return fmt.Errorf("net.Listen: %v", err) } } else { - return fmt.Errorf("unsupported scheme: %s", s.Host.Scheme()) + return fmt.Errorf("unsupported scheme: %s", s.URI.Scheme()) } s.ln = ln - if s.Host.Port() == 0 { + if s.URI.Port() == 0 { // If the port is 0, it is set automatically. // Find out automatically set port and update the host. - s.Host.SetPort(uint16(s.ln.Addr().(*net.TCPAddr).Port)) + s.URI.SetPort(uint16(s.ln.Addr().(*net.TCPAddr).Port)) } // Create local node if no cluster is specified. if len(s.Cluster.Nodes) == 0 { s.Cluster.Nodes = []*Node{ - {Scheme: s.Host.Scheme(), Host: s.Host.HostPort()}, + {Scheme: s.URI.Scheme(), Host: s.URI.HostPort()}, } } @@ -166,15 +166,15 @@ func (s *Server) Open() error { // Create executor for executing queries. e := NewExecutor(&ClientOptions{TLS: s.TLS}) e.Holder = s.Holder - e.Scheme = s.Host.Scheme() - e.Host = s.Host.HostPort() + e.Scheme = s.URI.Scheme() + e.Host = s.URI.HostPort() e.Cluster = s.Cluster e.MaxWritesPerRequest = s.MaxWritesPerRequest // Initialize HTTP handler. s.Handler.Broadcaster = s.Broadcaster s.Handler.StatusHandler = s - s.Handler.Host = s.Host + s.Handler.URI = s.URI s.Handler.Cluster = s.Cluster s.Handler.Executor = e s.Handler.LogOutput = s.LogOutput @@ -246,7 +246,7 @@ func (s *Server) monitorAntiEntropy() { // Initialize syncer with local holder and remote client. var syncer HolderSyncer syncer.Holder = s.Holder - syncer.Host = s.Host + syncer.URI = s.URI syncer.Cluster = s.Cluster syncer.Closing = s.closing syncer.ClientOptions = &ClientOptions{TLS: s.TLS} @@ -283,7 +283,7 @@ func (s *Server) monitorMaxSlices() { oldmaxslices := s.Holder.MaxSlices() for _, node := range s.Cluster.Nodes { - if s.Host.HostPort() != node.Host { + if s.URI.HostPort() != node.Host { maxSlices, _ := s.checkMaxSlices(node.Scheme, node.Host) for index, newmax := range maxSlices { // if we don't know about an index locally, log an error because @@ -386,14 +386,14 @@ func (s *Server) LocalStatus() (proto.Message, error) { } ns := internal.NodeStatus{ - Host: s.Host.HostPort(), + Host: s.URI.HostPort(), State: NodeStateUp, Indexes: EncodeIndexes(s.Holder.Indexes()), } // Append Slice list per this Node's indexes for _, index := range ns.Indexes { - index.Slices = s.Cluster.OwnsSlices(index.Name, index.MaxSlice, s.Host.HostPort()) + index.Slices = s.Cluster.OwnsSlices(index.Name, index.MaxSlice, s.URI.HostPort()) } return &ns, nil @@ -406,7 +406,7 @@ func (s *Server) ClusterStatus() (proto.Message, error) { if err != nil { return nil, err } - node := s.Cluster.NodeByHost(s.Host.HostPort()) + node := s.Cluster.NodeByHost(s.URI.HostPort()) node.SetStatus(ns.(*internal.NodeStatus)) // Update NodeState for all nodes. @@ -416,7 +416,7 @@ func (s *Server) ClusterStatus() (proto.Message, error) { // the local node as UP. // TODO: we should be able to remove this check if/when cluster.Nodes and // cluster.NodeSet are unified. - if host == s.Host.HostPort() { + if host == s.URI.HostPort() { nodeState = NodeStateUp } node := s.Cluster.NodeByHost(host) diff --git a/server/server.go b/server/server.go index 5fde9443f..d1063f306 100644 --- a/server/server.go +++ b/server/server.go @@ -100,7 +100,7 @@ func (m *Command) Run(args ...string) (err error) { return fmt.Errorf("server.Open: %v", err) } - m.Server.Logger().Printf("Listening as %s\n", m.Server.Host.Normalize()) + m.Server.Logger().Printf("Listening as %s\n", m.Server.URI.Normalize()) return nil } @@ -115,7 +115,7 @@ func (m *Command) SetupServer() error { if err != nil { return err } - m.Server.Host = uri + m.Server.URI = uri cluster := pilosa.NewCluster() cluster.ReplicaN = m.Config.Cluster.ReplicaN diff --git a/server/server_test.go b/server/server_test.go index 1c2d2a556..a5de5d68c 100644 --- a/server/server_test.go +++ b/server/server_test.go @@ -53,7 +53,7 @@ func TestMain_Set_Quick(t *testing.T) { defer m.Close() // Create client. - client, err := pilosa.NewClient(m.Server.Host.HostPort(), nil) + client, err := pilosa.NewClient(m.Server.URI.HostPort(), nil) if err != nil { t.Fatal(err) } @@ -288,8 +288,8 @@ func TestMain_FrameRestore(t *testing.T) { // Update cluster config. m0.Server.Cluster.Nodes = []*pilosa.Node{ - {Scheme: "http", Host: m0.Server.Host.HostPort()}, - {Scheme: "http", Host: m1.Server.Host.HostPort()}, + {Scheme: "http", Host: m0.Server.URI.HostPort()}, + {Scheme: "http", Host: m1.Server.URI.HostPort()}, } m1.Server.Cluster.Nodes = m0.Server.Cluster.Nodes @@ -326,14 +326,14 @@ func TestMain_FrameRestore(t *testing.T) { defer m2.Close() // Import from first cluster. - client, err := pilosa.NewClient(m2.Server.Host.HostPort(), nil) + client, err := pilosa.NewClient(m2.Server.URI.HostPort(), nil) if err != nil { t.Fatal(err) } else if err := m2.Client().CreateIndex(context.Background(), "i", pilosa.IndexOptions{}); err != nil && err != pilosa.ErrIndexExists { t.Fatal(err) } else if err := m2.Client().CreateFrame(context.Background(), "i", "f", pilosa.FrameOptions{}); err != nil { t.Fatal(err) - } else if err := client.RestoreFrame(context.Background(), m0.Server.Host.HostPort(), "i", "f"); err != nil { + } else if err := client.RestoreFrame(context.Background(), m0.Server.URI.HostPort(), "i", "f"); err != nil { t.Fatal(err) } @@ -427,17 +427,17 @@ func TestMain_SendReceiveMessage(t *testing.T) { // Update cluster config m0.Server.Cluster.Nodes = []*pilosa.Node{ - {Host: m0.Server.Host.HostPort()}, - {Host: m1.Server.Host.HostPort()}, + {Host: m0.Server.URI.HostPort()}, + {Host: m1.Server.URI.HostPort()}, } m1.Server.Cluster.Nodes = m0.Server.Cluster.Nodes // Configure node0 // get the host portion of addr to use for binding - gossipHost, _, err := net.SplitHostPort(m0.Server.Host.HostPort()) + gossipHost, _, err := net.SplitHostPort(m0.Server.URI.HostPort()) if err != nil { - gossipHost = m0.Server.Host.HostPort() + gossipHost = m0.Server.URI.HostPort() } gossipPort, err := strconv.Atoi(freePorts[0]) if err != nil { @@ -445,7 +445,7 @@ func TestMain_SendReceiveMessage(t *testing.T) { } gossipSeed := gossipHost + ":" + freePorts[0] - gossipNodeSet0 := gossip.NewGossipNodeSet(m0.Server.Host.HostPort(), gossipHost, gossipPort, gossipSeed, m0.Server) + gossipNodeSet0 := gossip.NewGossipNodeSet(m0.Server.URI.HostPort(), gossipHost, gossipPort, gossipSeed, m0.Server) m0.Server.Cluster.NodeSet = gossipNodeSet0 m0.Server.Broadcaster = gossipNodeSet0 m0.Server.Handler.Broadcaster = m0.Server.Broadcaster @@ -463,16 +463,16 @@ func TestMain_SendReceiveMessage(t *testing.T) { // Configure node1 // get the host portion of addr to use for binding - gossipHost, _, err = net.SplitHostPort(m1.Server.Host.HostPort()) + gossipHost, _, err = net.SplitHostPort(m1.Server.URI.HostPort()) if err != nil { - gossipHost = m1.Server.Host.HostPort() + gossipHost = m1.Server.URI.HostPort() } gossipPort, err = strconv.Atoi(freePorts[1]) if err != nil { t.Fatal(err) } - gossipNodeSet1 := gossip.NewGossipNodeSet(m1.Server.Host.HostPort(), gossipHost, gossipPort, gossipSeed, m1.Server) + gossipNodeSet1 := gossip.NewGossipNodeSet(m1.Server.URI.HostPort(), gossipHost, gossipPort, gossipSeed, m1.Server) m1.Server.Cluster.NodeSet = gossipNodeSet1 m1.Server.Broadcaster = gossipNodeSet1 m1.Server.Handler.Broadcaster = m1.Server.Broadcaster @@ -697,7 +697,7 @@ func (m *Main) URL() string { return "http://" + m.Server.Addr().String() } // Client returns a client to connect to the program. func (m *Main) Client() *pilosa.Client { - client, err := pilosa.NewClient(m.Server.Host.HostPort(), nil) + client, err := pilosa.NewClient(m.Server.URI.HostPort(), nil) if err != nil { panic(err) } diff --git a/test/handler.go b/test/handler.go index 3924efeb7..aa5a56acb 100644 --- a/test/handler.go +++ b/test/handler.go @@ -66,7 +66,7 @@ func NewServer() *Server { if err != nil { panic(err) } - s.Handler.Host = uri + s.Handler.URI = uri // Handler test messages can no-op. s.Handler.Broadcaster = pilosa.NopBroadcaster @@ -85,14 +85,14 @@ func (s *Server) LocalStatus() (proto.Message, error) { } ns := internal.NodeStatus{ - Host: s.Handler.Handler.Host.HostPort(), + Host: s.Handler.Handler.URI.HostPort(), State: pilosa.NodeStateUp, Indexes: pilosa.EncodeIndexes(s.Handler.Holder.Indexes()), } // Append Slice list per this Node's indexes for _, index := range ns.Indexes { - index.Slices = s.Handler.Cluster.OwnsSlices(index.Name, index.MaxSlice, s.Handler.Host.HostPort()) + index.Slices = s.Handler.Cluster.OwnsSlices(index.Name, index.MaxSlice, s.Handler.URI.HostPort()) } return &ns, nil