From e9f4a7b0b9d1f296132cb4e759faedc23763876f Mon Sep 17 00:00:00 2001 From: Derrick Hammer Date: Tue, 27 Feb 2024 07:27:10 -0500 Subject: [PATCH] feat: add ability to exclude a list of nodes when querying --- storage/provider/provider.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/storage/provider/provider.go b/storage/provider/provider.go index c39841e..7381fdd 100644 --- a/storage/provider/provider.go +++ b/storage/provider/provider.go @@ -26,6 +26,7 @@ type StorageLocationProviderImpl struct { isWaitingForUri bool mutex sync.Mutex logger *zap.Logger + excludeNodes []*encoding.NodeId } func (s *StorageLocationProviderImpl) Start() error { @@ -43,6 +44,10 @@ func (s *StorageLocationProviderImpl) Start() error { continue } + if containsNode(s.excludeNodes, nodeId) { + continue + } + s.availableNodes = append(s.availableNodes, nodeId) } @@ -91,6 +96,9 @@ func (s *StorageLocationProviderImpl) Start() error { s.logger.Error("Error decoding node id", zap.Error(err)) continue } + if containsNode(s.excludeNodes, nodeId) { + continue + } if !containsNode(s.availableNodes, nodeId) { s.availableNodes = append(s.availableNodes, nodeId) hasNewNode = true @@ -180,6 +188,7 @@ func NewStorageLocationProvider(params StorageLocationProviderParams) *StorageLo timeoutDuration: 60 * time.Second, uris: make(map[string]storage.StorageLocation), logger: params.Logger, + excludeNodes: params.ExcludeNodes, } } func containsNode(slice []*encoding.NodeId, item *encoding.NodeId) bool { @@ -195,5 +204,6 @@ type StorageLocationProviderParams struct { Services service.Services Hash *encoding.Multihash LocationTypes []types.StorageLocationType + ExcludeNodes []*encoding.NodeId service.ServiceParams }