@@ -15,7 +15,6 @@ import (
1515 "log"
1616 "math/rand"
1717 "net"
18- "net/http"
1918 "os"
2019 "os/signal"
2120 "path/filepath"
@@ -26,16 +25,13 @@ import (
2625 "syscall"
2726 "time"
2827
29- "github.com/featurebasedb/featurebase/v3/dax"
3028 "golang.org/x/sync/errgroup"
3129
3230 pilosa "github.com/featurebasedb/featurebase/v3"
3331 "github.com/featurebasedb/featurebase/v3/authn"
3432 "github.com/featurebasedb/featurebase/v3/authz"
3533 "github.com/featurebasedb/featurebase/v3/batch"
3634 "github.com/featurebasedb/featurebase/v3/boltdb"
37- "github.com/featurebasedb/featurebase/v3/dax/computer"
38- "github.com/featurebasedb/featurebase/v3/dax/computer/alpha"
3935 "github.com/featurebasedb/featurebase/v3/encoding/proto"
4036 petcd "github.com/featurebasedb/featurebase/v3/etcd"
4137 "github.com/featurebasedb/featurebase/v3/gcnotify"
@@ -79,12 +75,7 @@ type Command struct {
7975 logger loggerLogger
8076 queryLogger loggerLogger
8177
82- mds pilosa.MDS
83- writeLogger pilosa.WriteLogger
84- snapshotter pilosa.Snapshotter
85-
8678 Handler pilosa.HandlerI
87- httpHandler http.Handler
8879 grpcServer * grpcServer
8980 grpcLn net.Listener
9081 API * pilosa.API
@@ -95,10 +86,6 @@ type Command struct {
9586
9687 serverOptions []pilosa.ServerOption
9788 auth * authn.Auth
98-
99- // isComputeNode is set to true if this node is running as a DAX compute
100- // node.
101- isComputeNode bool
10289}
10390
10491type CommandOption func (c * Command ) error
@@ -124,50 +111,13 @@ func OptCommandConfig(config *Config) CommandOption {
124111 c .Config .Etcd = config .Etcd
125112 c .Config .Auth = config .Auth
126113 c .Config .TLS = config .TLS
127- c .Config .MDSAddress = config .MDSAddress
128- c .Config .WriteLogger = config .WriteLogger
129114 return nil
130115 }
131116 c .Config = config
132117 return nil
133118 }
134119}
135120
136- // OptCommandSetConfig was added because OptCommandConfig only sets a small
137- // sub-set of the config options (it doesn't seem to be used for anything but
138- // tests). We need a functional option which sets the full Config.
139- func OptCommandSetConfig (config * Config ) CommandOption {
140- return func (c * Command ) error {
141- defer c .Config .MustValidate ()
142- c .Config = config
143- return nil
144- }
145- }
146-
147- // OptCommandInjections injects the interface implementations.
148- func OptCommandInjections (inj Injections ) CommandOption {
149- return func (c * Command ) error {
150- if inj .MDS != nil {
151- c .mds = inj .MDS
152- }
153- if inj .WriteLogger != nil {
154- c .writeLogger = inj .WriteLogger
155- }
156- if inj .Snapshotter != nil {
157- c .snapshotter = inj .Snapshotter
158- }
159- c .isComputeNode = inj .IsComputeNode
160- return nil
161- }
162- }
163-
164- type Injections struct {
165- MDS pilosa.MDS
166- WriteLogger pilosa.WriteLogger
167- Snapshotter pilosa.Snapshotter
168- IsComputeNode bool
169- }
170-
171121// NewCommand returns a new instance of Main.
172122func NewCommand (stdin io.Reader , stdout , stderr io.Writer , opts ... CommandOption ) * Command {
173123 c := & Command {
@@ -265,70 +215,12 @@ func (m *Command) setupResourceLimits() error {
265215 return setupResourceLimitsErr
266216}
267217
268- // StartNoServe starts the pilosa server, but doesn't serve on the http handler.
269- func (m * Command ) StartNoServe () (err error ) {
270- // Seed random number generator
271- rand .Seed (time .Now ().UTC ().UnixNano ())
272-
273- // setupServer
274- err = m .setupServer ()
275- if err != nil {
276- return errors .Wrap (err , "setting up server" )
277- }
278- err = m .setupResourceLimits ()
279- if err != nil {
280- return errors .Wrap (err , "setting resource limits" )
281- }
282-
283- // Initialize server.
284- if err = m .Server .Open (); err != nil {
285- return errors .Wrap (err , "opening server" )
286- }
287-
288- return nil
289- }
290-
291- // Register registers the node with the MDS service using whatever MDS
292- // implementation was injected during setup.
293- func (m * Command ) Register () (err error ) {
294- if m .mds == nil {
295- return errors .New ("no MDS implementation with which to register" )
296- }
297-
298- node := & dax.Node {
299- Address : dax .Address (m .Config .Advertise ),
300- RoleTypes : []dax.RoleType {
301- dax .RoleTypeCompute ,
302- dax .RoleTypeTranslate ,
303- },
304- }
305- return m .mds .RegisterNode (context .Background (), node )
306- }
307-
308- // CheckIn is called periodically to check in with the MDS service using
309- // whatever MDS implementation was injected during setup.
310- func (m * Command ) CheckIn () (err error ) {
311- if m .mds == nil {
312- return errors .New ("no MDS implementation with which to check-in" )
313- }
314-
315- node := & dax.Node {
316- Address : dax .Address (m .Config .Advertise ),
317- RoleTypes : []dax.RoleType {
318- dax .RoleTypeCompute ,
319- dax .RoleTypeTranslate ,
320- },
321- }
322- return m .mds .CheckInNode (context .Background (), node )
323- }
324-
325218// Start starts the pilosa server - it returns once the server is running.
326219func (m * Command ) Start () (err error ) {
327220 // Seed random number generator
328221 rand .Seed (time .Now ().UTC ().UnixNano ())
329-
330- // setupServer
331- err = m .setupServer ()
222+ // SetupServer
223+ err = m .SetupServer ()
332224 if err != nil {
333225 return errors .Wrap (err , "setting up server" )
334226 }
@@ -366,8 +258,8 @@ func (m *Command) UpAndDown() (err error) {
366258 // Seed random number generator
367259 rand .Seed (time .Now ().UTC ().UnixNano ())
368260
369- // setupServer
370- err = m .setupServer ()
261+ // SetupServer
262+ err = m .SetupServer ()
371263 if err != nil {
372264 return errors .Wrap (err , "setting up server" )
373265 }
@@ -408,8 +300,8 @@ func (m *Command) Wait() error {
408300 }
409301}
410302
411- // setupServer uses the cluster configuration to set up this server.
412- func (m * Command ) setupServer () error {
303+ // SetupServer uses the cluster configuration to set up this server.
304+ func (m * Command ) SetupServer () error {
413305 runtime .SetBlockProfileRate (m .Config .Profile .BlockRate )
414306 runtime .SetMutexProfileFraction (m .Config .Profile .MutexFraction )
415307
@@ -476,13 +368,9 @@ func (m *Command) setupServer() error {
476368 return errors .Wrap (err , "new stats client" )
477369 }
478370
479- if m .Config .Listener == nil {
480- m .ln , err = getListener (* uri , m .tlsConfig )
481- if err != nil {
482- return errors .Wrap (err , "getting listener" )
483- }
484- } else {
485- m .ln = m .Config .Listener
371+ m .ln , err = getListener (* uri , m .tlsConfig )
372+ if err != nil {
373+ return errors .Wrap (err , "getting listener" )
486374 }
487375
488376 // If port is 0, get auto-allocated port from listener
@@ -551,21 +439,6 @@ func (m *Command) setupServer() error {
551439 m .Config .Etcd .Dir = filepath .Join (path , pilosa .DiscoDir )
552440 }
553441
554- // WriteLogger setup.
555- var wlw computer.WriteLogWriter = computer .NewNopWriteLogWriter ()
556- var wlr computer.WriteLogReader = computer .NewNopWriteLogReader ()
557- if m .writeLogger != nil {
558- alphaWriteLog := alpha .NewAlphaWriteLog (m .writeLogger )
559- wlr = alphaWriteLog
560- wlw = alphaWriteLog
561- }
562-
563- // Snapshotter setup.
564- var snap computer.SnapshotReadWriter = computer .NewNopSnapshotReadWriter ()
565- if m .snapshotter != nil {
566- snap = alpha .NewAlphaSnapshot (m .snapshotter )
567- }
568-
569442 m .Config .Etcd .Id = m .Config .Name // TODO(twg) rethink this
570443 e := petcd .NewEtcd (m .Config .Etcd , m .logger , m .Config .Cluster .ReplicaN , version )
571444
@@ -604,9 +477,6 @@ func (m *Command) setupServer() error {
604477 pilosa .OptServerPartitionAssigner (m .Config .Cluster .PartitionToNodeAssignment ),
605478 pilosa .OptServerDisCo (e , e , e , e ),
606479 pilosa .OptServerExecutionPlannerFn (executionPlannerFn ),
607- pilosa .OptServerWriteLogReader (wlr ),
608- pilosa .OptServerWriteLogWriter (wlw ),
609- pilosa .OptServerSnapshotReadWriter (snap ),
610480 }
611481
612482 if m .Config .LookupDBDSN != "" {
@@ -622,18 +492,14 @@ func (m *Command) setupServer() error {
622492 }
623493
624494 m .Server , err = pilosa .NewServer (serverOptions ... )
495+
625496 if err != nil {
626497 return errors .Wrap (err , "new server" )
627498 }
628499
629500 m .API , err = pilosa .NewAPI (
630501 pilosa .OptAPIServer (m .Server ),
631502 pilosa .OptAPIImportWorkerPoolSize (m .Config .ImportWorkerPoolSize ),
632- pilosa .OptAPIWriteLogReader (wlr ),
633- pilosa .OptAPIWriteLogWriter (wlw ),
634- pilosa .OptAPISnapshotter (snap ),
635- pilosa .OptAPIDirectiveWorkerPoolSize (m .Config .DirectiveWorkerPoolSize ),
636- pilosa .OptAPIIsComputeNode (m .isComputeNode ),
637503 )
638504 if err != nil {
639505 return errors .Wrap (err , "new api" )
@@ -693,7 +559,7 @@ func (m *Command) setupServer() error {
693559 return errors .Wrap (err , "getting grpcServer" )
694560 }
695561
696- hndlr , err : = pilosa .NewHandler (
562+ m . Handler , err = pilosa .NewHandler (
697563 pilosa .OptHandlerAllowedOrigins (m .Config .Handler .AllowedOrigins ),
698564 pilosa .OptHandlerAPI (m .API ),
699565 pilosa .OptHandlerLogger (m .logger ),
@@ -708,21 +574,7 @@ func (m *Command) setupServer() error {
708574 pilosa .OptHandlerRoaringSerializer (proto .RoaringSerializer ),
709575 pilosa .OptHandlerSQLEnabled (m .Config .SQL .EndpointEnabled ),
710576 )
711- if err != nil {
712- return errors .Wrap (err , "new handler" )
713- }
714-
715- m .httpHandler = hndlr
716- m .Handler = hndlr
717-
718- return nil
719- }
720-
721- // HTTPHandler was added for the case where we want to get the full
722- // http.Handler, and not just those methods which satisfy the pilosa.HandlerI
723- // interface.
724- func (m * Command ) HTTPHandler () http.Handler {
725- return m .httpHandler
577+ return errors .Wrap (err , "new handler" )
726578}
727579
728580// setupLogger sets up the logger based on the configuration.
0 commit comments