Skip to content

Commit 86f2769

Browse files
authored
Merge pull request #405 from shutter-network/fix/context-done-service
Graceful shutdown on service errors
2 parents 2dfdd09 + 0c4e028 commit 86f2769

File tree

7 files changed

+24
-15
lines changed

7 files changed

+24
-15
lines changed

rolling-shutter/chainobserver/observer.go

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,17 @@ func (chainobs *ChainObserver) Observe(ctx context.Context, eventTypes []*events
8888
})
8989
errorgroup.Go(func() error {
9090
for {
91-
eventSyncUpdate, err := syncer.Next(errorctx)
92-
if err != nil {
93-
return err
94-
}
95-
if err := chainobs.handleEventSyncUpdate(errorctx, eventSyncUpdate); err != nil {
96-
return err
91+
select {
92+
case <-errorctx.Done():
93+
return errorctx.Err()
94+
default:
95+
eventSyncUpdate, err := syncer.Next(errorctx)
96+
if err != nil {
97+
return err
98+
}
99+
if err := chainobs.handleEventSyncUpdate(errorctx, eventSyncUpdate); err != nil {
100+
return err
101+
}
97102
}
98103
}
99104
})

rolling-shutter/keyper/keyper.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ func (kpr *keyper) Start(ctx context.Context, runner service.Runner) error {
119119
if kpr.config.Metrics.Enabled {
120120
epochkghandler.InitMetrics()
121121
kpr.metricsServer = metricsserver.New(kpr.config.Metrics)
122-
runner.Defer(kpr.metricsServer.Shutdown)
123122
}
124123

125124
kpr.dbpool = dbpool

rolling-shutter/medley/metricsserver/metricsserver.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func New(config *MetricsConfig) *MetricsServer {
2222
return &MetricsServer{config: config, mux: http.NewServeMux()}
2323
}
2424

25-
func (srv *MetricsServer) Start(_ context.Context, group service.Runner) error {
25+
func (srv *MetricsServer) Start(ctx context.Context, group service.Runner) error { //nolint:unparam
2626
group.Go(func() error {
2727
srv.mux.Handle("/metrics", promhttp.Handler())
2828
addr := fmt.Sprintf("%s:%d", srv.config.Host, srv.config.Port)
@@ -39,6 +39,11 @@ func (srv *MetricsServer) Start(_ context.Context, group service.Runner) error {
3939
}
4040
return nil
4141
})
42+
group.Go(func() error {
43+
<-ctx.Done()
44+
srv.Shutdown()
45+
return ctx.Err()
46+
})
4247
return nil
4348
}
4449

rolling-shutter/medley/rootcmd/root.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -162,10 +162,9 @@ func Cmd() *cobra.Command {
162162

163163
func Main(c *cobra.Command) {
164164
status := 0
165-
166165
if err := c.Execute(); err != nil {
166+
fmt.Fprintln(os.Stderr, err)
167167
status = 1
168168
}
169-
170169
os.Exit(status)
171170
}

rolling-shutter/snapshot/snapshot.go

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,11 @@ func (snp *Snapshot) Start(ctx context.Context, runner service.Runner) error {
8686
return err
8787
}
8888
snp.metricsServer = metricsserver.New(snp.Config.Metrics)
89-
runner.Defer(snp.metricsServer.Shutdown)
9089
}
9190

9291
hub := hubapi.New(snp.Config.SnapshotHubURL)
9392
snp.hubapi = hub
9493

95-
runner.Defer(snp.jrpc.Shutdown)
96-
9794
snp.setupP2PHandler()
9895
return runner.StartService(snp.getServices()...)
9996
}

rolling-shutter/snapshot/snpjrpc/server.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ func New(
145145
return &jrpc
146146
}
147147

148-
func (snpjrpc *SnpJRPC) Start(_ context.Context, group service.Runner) error {
148+
func (snpjrpc *SnpJRPC) Start(ctx context.Context, group service.Runner) error { //nolint:unparam
149149
group.Go(func() error {
150150
httpServer := snpjrpc.Server.Prepare()
151151
log.Info().Str("address", snpjrpc.Server.Host).Msg("Running JSON-RPC server at")
@@ -154,6 +154,11 @@ func (snpjrpc *SnpJRPC) Start(_ context.Context, group service.Runner) error {
154154
}
155155
return nil
156156
})
157+
group.Go(func() error {
158+
<-ctx.Done()
159+
snpjrpc.Shutdown()
160+
return ctx.Err()
161+
})
157162
return nil
158163
}
159164

rolling-shutter/snapshotkeyper/snapshotkeyper.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,6 @@ func (snkpr *snapshotkeyper) Start(ctx context.Context, runner service.Runner) e
9090
if snkpr.config.Metrics.Enabled {
9191
epochkghandler.InitMetrics()
9292
snkpr.metricsServer = metricsserver.New(snkpr.config.Metrics)
93-
runner.Defer(snkpr.metricsServer.Shutdown)
9493
}
9594

9695
snkpr.dbpool = dbpool

0 commit comments

Comments
 (0)