Skip to content

Commit 2032af2

Browse files
committed
Better shutdown
1 parent d1de3b3 commit 2032af2

File tree

2 files changed

+21
-21
lines changed

2 files changed

+21
-21
lines changed

block/components.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ func (bc *Components) Start(ctx context.Context) error {
100100
func (bc *Components) Stop() error {
101101
var errs error
102102
if bc.Executor != nil {
103-
println("+++ stopping executor")
104103
if err := bc.Executor.Stop(); err != nil {
105104
errs = errors.Join(errs, fmt.Errorf("failed to stop executor: %w", err))
106105
}

node/failover.go

Lines changed: 21 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,8 @@ func setupFailoverState(
164164
}, nil
165165
}
166166

167-
func (f *failoverState) Run(ctx context.Context) (multiErr error) {
168-
var wg errgroup.Group
169-
wg.Go(func() error {
170-
f.logger.Info().Str("addr", f.rpcServer.Addr).Msg("Started RPC server")
171-
if err := f.rpcServer.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
172-
return err
173-
}
174-
return nil
175-
})
167+
func (f *failoverState) Run(pCtx context.Context) (multiErr error) {
168+
wg, ctx := errgroup.WithContext(pCtx)
176169

177170
if err := f.p2pClient.Start(ctx); err != nil {
178171
return fmt.Errorf("start p2p: %w", err)
@@ -204,23 +197,31 @@ func (f *failoverState) Run(ctx context.Context) (multiErr error) {
204197
}
205198
}()
206199

200+
wg.Go(func() (rerr error) {
201+
defer func() {
202+
if err := f.bc.Stop(); err != nil && !errors.Is(err, context.Canceled) {
203+
rerr = errors.Join(rerr, fmt.Errorf("stopping block components: %w", err))
204+
}
205+
}()
206+
207+
f.logger.Info().Str("addr", f.rpcServer.Addr).Msg("Started RPC server")
208+
if err := f.rpcServer.ListenAndServe(); err != nil && !errors.Is(err, http.ErrServerClosed) {
209+
return err
210+
}
211+
return nil
212+
})
213+
207214
wg.Go(func() error {
215+
defer func() {
216+
shutdownCtx, done := context.WithTimeout(context.Background(), 3*time.Second)
217+
defer done()
218+
_ = f.rpcServer.Shutdown(shutdownCtx)
219+
}()
208220
if err := f.bc.Start(ctx); err != nil && !errors.Is(err, context.Canceled) {
209221
return fmt.Errorf("components started with error: %w", err)
210222
}
211223
return nil
212224
})
213-
defer func() {
214-
if err := f.bc.Stop(); err != nil && !errors.Is(err, context.Canceled) {
215-
multiErr = errors.Join(multiErr, fmt.Errorf("stopping block components: %w", err))
216-
}
217-
}()
218-
219-
defer func() { // shutdown first
220-
shutdownCtx, done := context.WithTimeout(context.Background(), 3*time.Second)
221-
defer done()
222-
_ = f.rpcServer.Shutdown(shutdownCtx)
223-
}()
224225

225226
return wg.Wait()
226227
}

0 commit comments

Comments
 (0)