shards: compute shard rank outside of critical section
Change-Id: I899eabf0bfc216329bf9f96a92e9dd1c17521ab3
diff --git a/shards/shards.go b/shards/shards.go
index f9893fe..96e8419 100644
--- a/shards/shards.go
+++ b/shards/shards.go
@@ -355,6 +355,11 @@
}
func (s *shardedSearcher) replace(key string, shard zoekt.Searcher) {
+ var rank uint16
+ if shard != nil {
+ rank = shardRank(shard)
+ }
+
s.lock(context.Background())
defer s.unlock()
old := s.shards[key]
@@ -365,9 +370,8 @@
if shard == nil {
delete(s.shards, key)
} else {
-
s.shards[key] = rankedShard{
- rank: shardRank(shard),
+ rank: rank,
Searcher: shard,
}
}