Details
-
Bug
-
Resolution: Unresolved
-
Major
-
7.6.0, 7.0.0-Beta1, 7.0.0, 7.0.1, 7.0.2, 7.0.3, 7.0.4, 7.1.4, 7.0.5, 7.1.0, 7.1.1, 7.1.2, 7.2.0, 7.1.3, 7.2.1, 7.1.5, 7.2.4, 7.0.6, 7.1.7, 7.2.2, 7.1.6, 7.2.3, 7.2.5, 7.6.2, 7.2.6, 7.6.1, 7.6.4, 7.2.7, 7.6.5, 7.7
-
None
-
Untriaged
-
0
-
Unknown
Description
In an empty bucket (or at least no new mutations) DCP_ADD_STREAM can inflate memory with no recovery path. This can only happen if DCP_ADD_STREAM is allowed to execute repeatedly which happens if the DCP replication connection is disconnected, i.e. you cannot just issue DCP_ADD_STREAM to hit this issue.
Each disconnect of the replication connection will trigger the recreation of replication, and the recreation of all DCP streams, which is done on the consumer end by invoking DCP_ADD_STREAM for each vbucket.
On success DCP_ADD_STREAM will flush the new failover log to using the set-vbucket-state meta-data item.
- https://src.couchbase.org/source/xref/7.2.5/kv_engine/engines/ep/src/dcp/consumer.cc?r=525edae7#1439
If we cycle indefinitley (disconnect/connect/addstreams) then that function is called many times, each time adding a new set-vb-state meta item to the open-checkpoint (each time increasing memory).
If nothing else is going on in the system, there is no path to free this memory. The set-vb-state meta item cannot be expelled (when it could be) and nothing will remove the checkpoint because it is open, and won't be closed unless activity on the active vbucket occurs.
Attachments
Gerrit Reviews
For Gerrit Dashboard: MB-63341 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
215274,9 | MB-63341: Expel set-vb-state from checkpoints | master | kv_engine | Status: NEW | -1 | +1 |
215273,3 | MB-63341: Include Item CAS in checkpoint dump | master | kv_engine | Status: MERGED | +2 | +1 |
215573,3 | MB-63341: Pre-condition validation in Checkpoint unit test | master | kv_engine | Status: MERGED | +2 | +1 |