From a2f5c39f457f8866fb2f589da6b27c131fd693d2 Mon Sep 17 00:00:00 2001 From: Aaron Lu <50029043+aalu1418@users.noreply.github.com> Date: Wed, 21 Aug 2024 11:02:23 -0600 Subject: [PATCH] add relay statemachine to prevent multiple chan close (#826) --- pkg/solana/relay.go | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/solana/relay.go b/pkg/solana/relay.go index a272f15ea..acb43720c 100644 --- a/pkg/solana/relay.go +++ b/pkg/solana/relay.go @@ -29,6 +29,7 @@ type TxManager interface { var _ relaytypes.Relayer = &Relayer{} //nolint:staticcheck type Relayer struct { + services.StateMachine lggr logger.Logger chain Chain stopCh services.StopChan @@ -49,17 +50,21 @@ func (r *Relayer) Name() string { // Start starts the relayer respecting the given context. func (r *Relayer) Start(context.Context) error { - // No subservices started on relay start, but when the first job is started - if r.chain == nil { - return errors.New("Solana unavailable") - } - return nil + return r.StartOnce("SolanaRelayer", func() error { + // No subservices started on relay start, but when the first job is started + if r.chain == nil { + return errors.New("Solana unavailable") + } + return nil + }) } // Close will close all open subservices func (r *Relayer) Close() error { - close(r.stopCh) - return nil + return r.StopOnce("SolanaRelayer", func() error { + close(r.stopCh) + return nil + }) } func (r *Relayer) Ready() error {