diff --git a/internal/fabric/client/client_ccp.go b/internal/fabric/client/client_ccp.go index 7d3ae54..7639a54 100644 --- a/internal/fabric/client/client_ccp.go +++ b/internal/fabric/client/client_ccp.go @@ -142,6 +142,7 @@ func (w *ccpRPCWrapper) SignerUpdated(signer string) { func (w *ccpRPCWrapper) getChannelClient(channelId string, signer string) (*ccpClientWrapper, error) { w.mu.Lock() + defer w.mu.Unlock() id, err := w.idClient.GetSigningIdentity(signer) if err == msp.ErrUserNotFound { return nil, errors.Errorf("Signer %s does not exist", signer) @@ -169,7 +170,6 @@ func (w *ccpRPCWrapper) getChannelClient(channelId string, signer string) (*ccpC w.channelClients[channelId][id.Identifier().ID] = newWrapper clientOfUser = newWrapper } - w.mu.Unlock() return clientOfUser, nil } diff --git a/internal/fabric/client/client_gateway_clientside.go b/internal/fabric/client/client_gateway_clientside.go index 2d7f884..4f728be 100644 --- a/internal/fabric/client/client_gateway_clientside.go +++ b/internal/fabric/client/client_gateway_clientside.go @@ -178,6 +178,7 @@ func (w *gwRPCWrapper) sendTransaction(signer, channelId, chaincodeName, method // the discovery service and selecting the right set of endorsers are automated func (w *gwRPCWrapper) getGatewayClient(channelId, signer string) (gatewayClient *gateway.Network, err error) { w.mu.Lock() + defer w.mu.Unlock() gatewayClientsForSigner := w.gwGatewayClients[signer] if gatewayClientsForSigner == nil { // no channel clients have been created for this signer at all @@ -200,7 +201,6 @@ func (w *gwRPCWrapper) getGatewayClient(channelId, signer string) (gatewayClient } gatewayClientsForSigner[channelId] = gatewayClient } - w.mu.Unlock() return gatewayClient, nil } @@ -209,6 +209,7 @@ func (w *gwRPCWrapper) getGatewayClient(channelId, signer string) (gatewayClient // do a "strong read" across multiple peers func (w *gwRPCWrapper) getChannelClient(channelId, signer string) (channelClient *channel.Client, err error) { w.mu.Lock() + defer w.mu.Unlock() channelClientsForSigner := w.gwChannelClients[signer] if channelClientsForSigner == nil { channelClientsForSigner = make(map[string]*channel.Client) @@ -230,7 +231,6 @@ func (w *gwRPCWrapper) getChannelClient(channelId, signer string) (channelClient } channelClientsForSigner[channelId] = channelClient } - w.mu.Unlock() return channelClient, nil } diff --git a/internal/fabric/client/eventsubscriber.go b/internal/fabric/client/eventsubscriber.go index 75a6e42..ff87b27 100644 --- a/internal/fabric/client/eventsubscriber.go +++ b/internal/fabric/client/eventsubscriber.go @@ -97,6 +97,7 @@ func (e *eventClientWrapper) subscribeEvent(subInfo *eventsapi.SubscriptionInfo, func (e *eventClientWrapper) getEventClient(channelId, signer string, since uint64, chaincodeId string) (eventClient *event.Client, err error) { e.mu.Lock() + defer e.mu.Unlock() eventClientsForSigner := e.eventClients[signer] if eventClientsForSigner == nil { eventClientsForSigner = make(map[string]*event.Client) @@ -120,7 +121,6 @@ func (e *eventClientWrapper) getEventClient(channelId, signer string, since uint } eventClientsForSigner[key] = eventClient } - e.mu.Unlock() return eventClient, nil } diff --git a/internal/fabric/client/ledger.go b/internal/fabric/client/ledger.go index 816327b..03c4d6d 100644 --- a/internal/fabric/client/ledger.go +++ b/internal/fabric/client/ledger.go @@ -120,6 +120,7 @@ func (l *ledgerClientWrapper) queryTransaction(channelId, signer, txId string) ( func (l *ledgerClientWrapper) getLedgerClient(channelId, signer string) (ledgerClient *ledger.Client, err error) { l.mu.Lock() + defer l.mu.Unlock() ledgerClientsForSigner := l.ledgerClients[signer] if ledgerClientsForSigner == nil { ledgerClientsForSigner = make(map[string]*ledger.Client) @@ -134,7 +135,6 @@ func (l *ledgerClientWrapper) getLedgerClient(channelId, signer string) (ledgerC } ledgerClientsForSigner[channelId] = ledgerClient } - l.mu.Unlock() return ledgerClient, nil }