Details
-
Improvement
-
Resolution: Fixed
-
Major
-
5.5.0, 5.5.1, 5.5.2, 5.5.3, 5.5.4, 6.0.0, 6.0.1, 6.0.2
-
KV-Engine MH 2nd Beta
Description
Summary
If a DCP client uses a long (exact length TBD) name when connecting, it can result in
STATS calls (for example performed by ns_server to monitor rebalance) to fail:
462445 2019-05-11T08:18:28.525392+00:00 WARNING 143: exception occurred in runloop during packet execution. Cookie info: {"packet":{"magic":"ClientRequest","opcode":"STAT","keylen":3,"extlen":0,"datatype":"raw","vbucket":0,"bodylen":3,"opaque":"0x0","cas":0},"connection":"[ 127.0.0.1:48735 - 127.0.0.1:11209 (<ud>@ns_server</ud>) ]"} - closing connection: Response::setKeylen: key cannot exceed 1 byte
|
Details
Looks like problem is here - we cap the response keyLen to 1 byte for all response types, not just "Response with flex-framing extras" (0x18):
void setKeylen(uint16_t value) { |
if (value > 0xff) { |
throw std::invalid_argument( |
"Response::setKeylen: key cannot exceed 1 byte"); |
}
|
keylen = uint8_t(value);
|
}
|
This change was introduced via: http://review.couchbase.org/#/c/86393/
See https://github.com/couchbase/kv_engine/blob/master/docs/BinaryProtocol.md#response-header - it should be permitted to return keys up to 65,535 bytes long for "regular" response packets (0x81).
Attachments
Issue Links
- depends on
-
KAFKAC-148 Couchbase Server fails to rebalance if Kafka connector is running
- Resolved
-
MB-35881 ns_server should generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37246 Ensure Views does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37283 Ensure XDCR does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-49271 Backport MB-35881 to 6.6.4
- Closed
-
MB-37244 Ensure 2i does not generate DCP connection names that are no longer than allowed by memcached
- Open
-
CBES-145 Ensure ElastricSearch Connector does not generate DCP connection names that are no longer than allowed by memcached
- Resolved
-
JDCP-136 Ensure java-DCP-client does not generate DCP connection names that are no longer than allowed by memcached
- Resolved
-
CBG-626 Ensure Sync-Gateway does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37241 Ensure FTS does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37242 Ensure Backup does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37243 Ensure Query does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-37245 Ensure Eventing does not generate DCP connection names that are no longer than allowed by memcached
- Closed
-
MB-35882 The Memcached STATS "dcp" command should have a mode that only retrieves stats on connections owned by the user
- Closed
- relates to
-
MB-42968 Eventing Enabled Cluster Fails to Recover
- Closed
-
MB-51513 Upgrades can fail due to the 200 character limit for DCP connections
- Closed
-
MB-58027 Only retrieve DCP stats for replication connections
- Closed
-
DOC-9381 names used for DCP connections must not be longer than 200 characters
- Resolved
-
JDCP-137 Increase connection name limit from 148 bytes to 200 bytes
- Resolved
-
CMOS-154 Add check for DCP names > 200 chars (MB-34280)
- Done