Details
-
Bug
-
Resolution: Fixed
-
Major
-
7.0.4, 7.1.1
-
None
-
Untriaged
-
1
-
Unknown
Description
Steps to reproduce:
a. Create a 2 node cluster with 1KV+n1ql, 1 index node
b. Create an index on default scope, default collection
c. Create 3 collections - C1, C2, C3
d. Drop all three collections
Indexer log will be flooded with 3*1024 lines of "Indexer:: processCollectionDrop" messages. This is because MAINT_STREAM opens a bucket level stream and all events are propagated to indexer on MAINT_STREAM. These events can not be filtered at projector as indexer needs these events to update the manifestUID due to the collection event. On indexer side, indexer can disable the logging to reduce logging impact but indexer would still end-up processing all index instances for CollectionDrop event from each vbucket. If there are 1000 index instances, this will be 1000*1024 instance checks per collection drop.
There are two possible ways to address this issue:
a. Send a new event type - Like updateSeqno indexer still receives seqno. and manifestUID update due to collectionDrop event but will not process the event if it does not belong to the keyspace of interest.
b. Indexer will maintain a map of collectionID's and will process a drop message only if the collectionID exists in the map
Approach (a) has mixed mode implications. Approach (b) seems preferable
Attachments
For Gerrit Dashboard: MB-52514 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
176169,3 | MB-52514 Do not process collectionDrop for all collection drops | unstable | indexing | Status: MERGED | +2 | +1 |