Details
-
Bug
-
Resolution: Fixed
-
Major
-
7.2.0
-
Untriaged
-
0
-
No
-
KV 2023-2
Description
As identified while implementing MB-54853, the DCP StreamRequest command does not validate that the specified flags are valid - we simply ignore unknown flags and return success (assuming the request is otherwise valid).
As a result, a DCP client requesting a "new" feature (not part of the original base flag set from CB 3.0) may think it has enabled some feature, when in fact KV-Engine has just ignored it.
I believe this has occurred as we do validate flags passed to the sibling DCP AddStream command (which is used to start a stream on a consumer node). As such while DCP replication streams effectively do have their flags validated (as they are always created via an AdddStream sent by ns_server to the consumer), this is not the case for other, non-replication clients (XDCR, GSI, Kafka Connector, ...)
Attachments
For Gerrit Dashboard: MB-55441 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
187060,2 | MB-55441: Validate DCP StreamRequest flags | neo | kv_engine | Status: MERGED | +2 | +1 |
187283,3 | MB-55441: Include base (0x) indicator in invalid flags message | neo | kv_engine | Status: MERGED | +2 | +1 |
187285,2 | MB-55678: StreamRequest flag STRICT_VBUUID should be considered valid | neo | kv_engine | Status: MERGED | +2 | +1 |
191797,5 | Merge commit neo/99a149233 into master | master | kv_engine | Status: MERGED | +2 | +1 |
191802,4 | Merge commit neo/967a7a340 into master | master | kv_engine | Status: ABANDONED | 0 | 0 |
191909,2 | Merge commit neo/d39926349 into master | master | kv_engine | Status: MERGED | +2 | +1 |