@@ -20,8 +20,8 @@ type ServeCommand struct {
2020 queueConsumerCommand
2121}
2222
23- func (c * ServeCommand ) Execute ( args []string ) error {
24- ctx , stopCtx := context .WithCancel (context . Background () )
23+ func (c * ServeCommand ) ExecuteContext ( ctx context. Context , args []string ) error {
24+ ctx , stopCtx := context .WithCancel (ctx )
2525 stopCh := make (chan error , 1 )
2626
2727 cli .InitLog (& c .LogOptions , name )
@@ -88,32 +88,39 @@ func (c *ServeCommand) Execute(args []string) error {
8888 startDataServer , stopDataServer := c .initDataServer (dataHandler )
8989 go func () {
9090 err := startDataServer ()
91- ctxlog .Get (ctx ).Errorf (err , "data server stopped" )
91+ if err != context .Canceled {
92+ ctxlog .Get (ctx ).Errorf (err , "data server stopped" )
93+ }
9294 stopCh <- err
9395 }()
9496
9597 go func () {
9698 err := c .runEventDequeuer (ctx , qOpt , server )
97- ctxlog .Get (ctx ).Errorf (err , "event dequeuer stopped" )
99+ if err != context .Canceled {
100+ ctxlog .Get (ctx ).Errorf (err , "event dequeuer stopped" )
101+ }
98102 stopCh <- err
99103 }()
100104
101105 go func () {
102106 err := c .runEventEnqueuer (ctx , qOpt , watcher )
103- ctxlog .Get (ctx ).Errorf (err , "event enqueuer stopped" )
107+ if err != context .Canceled {
108+ ctxlog .Get (ctx ).Errorf (err , "event enqueuer stopped" )
109+ }
104110 stopCh <- err
105111 }()
106112
107- go func () {
108- stopCh <- stopOnSignal (ctx )
109- }()
110-
111113 c .probeReadiness = true
112114
113- err = <- stopCh
115+ select {
116+ case <- ctx .Done ():
117+ err = ctx .Err ()
118+ case err = <- stopCh :
119+ // stop the other servers that did not fail
120+ stopCtx ()
121+ }
114122
115- // stop servers gracefully
116- stopCtx ()
123+ // stop data server, it does not stop with context
117124 stopDataServer ()
118125
119126 return err
0 commit comments