From eaef1f9c3704cb5d482841aa7f46d1d8c48dfb68 Mon Sep 17 00:00:00 2001 From: Samuel Stokes Date: Tue, 29 Aug 2023 09:38:50 -0400 Subject: [PATCH 1/2] Remove unused logDestination argument --- internal/node/node.go | 3 +-- main.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/internal/node/node.go b/internal/node/node.go index 6efbff16b..84f72dbf8 100644 --- a/internal/node/node.go +++ b/internal/node/node.go @@ -3,7 +3,6 @@ package node import ( "fmt" "log/slog" - "os" "github.com/ethereum/go-ethereum/common" "github.com/statechannels/go-nitro/internal/chain" @@ -17,7 +16,7 @@ import ( ) func InitializeNode(pkString string, chainOpts chain.ChainOpts, - useDurableStore bool, durableStoreFolder string, msgPort int, logDestination *os.File, bootPeers []string, + useDurableStore bool, durableStoreFolder string, msgPort int, bootPeers []string, ) (*node.Node, *store.Store, *p2pms.P2PMessageService, *chainservice.EthChainService, error) { if pkString == "" { panic("pk must be set") diff --git a/main.go b/main.go index 0546bce92..bad543b57 100644 --- a/main.go +++ b/main.go @@ -178,7 +178,7 @@ func main() { logging.SetupDefaultLogger(os.Stdout, slog.LevelDebug) - node, _, _, _, err := node.InitializeNode(pkString, chainOpts, useDurableStore, durableStoreFolder, msgPort, os.Stdout, peerSlice) + node, _, _, _, err := node.InitializeNode(pkString, chainOpts, useDurableStore, durableStoreFolder, msgPort, peerSlice) if err != nil { return err } From a2c0f1b421dc312d0a3f5b7e44e07a5d126af231 Mon Sep 17 00:00:00 2001 From: Samuel Stokes Date: Tue, 29 Aug 2023 09:39:17 -0400 Subject: [PATCH 2/2] Fix race condition related to rpcClient.Address() --- rpc/client.go | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/rpc/client.go b/rpc/client.go index 95b8ba7da..d52c7f842 100644 --- a/rpc/client.go +++ b/rpc/client.go @@ -104,6 +104,16 @@ func NewRpcClient(trans transport.Requester) (RpcClientApi, error) { c := &rpcClient{trans, &safesync.Map[chan struct{}]{}, &safesync.Map[chan query.LedgerChannelInfo]{}, &safesync.Map[chan query.PaymentChannelInfo]{}, cancel, &sync.WaitGroup{}, common.Address{}, slog.Default()} + // Retrieve the address and set it on the rpcClient + res, err := waitForRequest[serde.NoPayloadRequest, common.Address](c, serde.GetAddressMethod, serde.NoPayloadRequest{}) + if err != nil { + return nil, err + } + c.nodeAddress = res + + // Update the logger so we output the address + c.logger = logging.LoggerWithAddress(c.logger, c.nodeAddress) + notificationChan, err := c.transport.Subscribe() if err != nil { return nil, err @@ -125,17 +135,6 @@ func NewHttpRpcClient(rpcServerUrl string) (RpcClientApi, error) { // Address returns the address of the the nitro node func (rc *rpcClient) Address() (common.Address, error) { - if (rc.nodeAddress == common.Address{}) { - res, err := waitForRequest[serde.NoPayloadRequest, common.Address](rc, serde.GetAddressMethod, serde.NoPayloadRequest{}) - if err != nil { - return res, err - } - - // Update the logger so we output the address - rc.nodeAddress = res - rc.logger = logging.LoggerWithAddress(rc.logger, rc.nodeAddress) - return res, nil - } return rc.nodeAddress, nil }