@@ -51,7 +51,7 @@ type Registry struct {
5151 filterIPs bool
5252 freezer * freeze.Freezer
5353 maxPoll int
54- provMutex sync.Mutex
54+ provMutex sync.RWMutex
5555 pollDone chan struct {}
5656 providers map [peer.ID ]* ProviderInfo
5757 sequences * sequences
@@ -843,17 +843,17 @@ func (r *Registry) register(ctx context.Context, info *ProviderInfo) error {
843843
844844// IsRegistered checks if the provider is in the registry
845845func (r * Registry ) IsRegistered (providerID peer.ID ) bool {
846- r .provMutex .Lock ()
846+ r .provMutex .RLock ()
847847 _ , found := r .providers [providerID ]
848- r .provMutex .Unlock ()
848+ r .provMutex .RUnlock ()
849849 return found
850850}
851851
852852// ProviderInfo returns information for a registered provider.
853853func (r * Registry ) ProviderInfo (providerID peer.ID ) (* ProviderInfo , bool ) {
854- r .provMutex .Lock ()
854+ r .provMutex .RLock ()
855855 pinfo , ok := r .providers [providerID ]
856- r .provMutex .Unlock ()
856+ r .provMutex .RUnlock ()
857857 if ! ok {
858858 return nil , false
859859 }
@@ -863,7 +863,7 @@ func (r *Registry) ProviderInfo(providerID peer.ID) (*ProviderInfo, bool) {
863863// AllProviderInfo returns information for all registered providers that are
864864// active and allowed.
865865func (r * Registry ) AllProviderInfo () []* ProviderInfo {
866- r .provMutex .Lock ()
866+ r .provMutex .RLock ()
867867 infos := make ([]* ProviderInfo , 0 , len (r .providers ))
868868 for _ , info := range r .providers {
869869 if r .assigned != nil {
@@ -878,7 +878,7 @@ func (r *Registry) AllProviderInfo() []*ProviderInfo {
878878 }
879879 infos = append (infos , info )
880880 }
881- r .provMutex .Unlock ()
881+ r .provMutex .RUnlock ()
882882
883883 // Stats tracks the number of active, allowed providers.
884884 stats .Record (context .Background (), metrics .ProviderCount .M (int64 (len (infos ))))
@@ -1055,8 +1055,8 @@ func (r *Registry) RemoveProvider(ctx context.Context, providerID peer.ID) error
10551055}
10561056
10571057func (r * Registry ) ProviderByPublisher (pubID peer.ID ) (peer.ID , bool ) {
1058- r .provMutex .Lock ()
1059- defer r .provMutex .Unlock ()
1058+ r .provMutex .RLock ()
1059+ defer r .provMutex .RUnlock ()
10601060
10611061 pinfo , ok := r .providers [pubID ]
10621062 if ok && pinfo .Publisher == pubID {
0 commit comments