Details
-
Bug
-
Resolution: Fixed
-
Critical
-
7.0.5
-
Triaged
-
0
-
No
Description
There is a lock contention in WatchMetadata and findWatcherByIndexerId when WatchMetadata gets triggered to updateIndexerList due to poolChangeNotification and findWatcherByIndexerId gets triggered in query plan phase i.e. from Refresh -> safeUpdate -> updateTopology -> FindServiceForIndexer
Steps to repro like in the Customer's environment
- Create a 4 node cluster kv+n1ql, index, index index
- Create 4 or more indexes with one replica each
- Failover an indexer node
- Add delay in handleClientStats of lifecycle manager so that watcher addition gets delayed.
- Add back the indexer node and rebalance
- Now scan any index
- While the watcher is being added back scan must be triggered resulting in long plan phase timings.
Attachments
For Gerrit Dashboard: MB-58297 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
195614,3 | MB-58297 Retrieve client stats asynchronously and process client stats in bootstrap | unstable | indexing | Status: MERGED | +2 | +1 |
195760,1 | MB-58297 Retrieve client stats asynchronously and process client stats in bootstrap | neo | indexing | Status: MERGED | +2 | +1 |