New memcached status code leads to an unrelated CAS error being printed by pillowfight
Description
When running a Couchbase Server that has 'scope data limits' enabled, libcouchbase shows a confusing/unexpected message when the data-limit his reached, in this case memcached fails mutation commands with status 0x34 and the following is displayed by pillowfightOperation(s) failed: LCB_ERR_CAS_MISMATCH (209): CAS mismatch.
Some brief discussion suggest this is just because the libcouchbase I used didn't support the V2 error map, so please close this issue if another ticket tracks that work and this ticket is expected behaviour for the down-level libcouchbase (although an improvement/suggestion would be to not print CAS_MISMATCH, this is confusing, a raw status may of been more useful for people to debug issues).
To reproduce I think the following works without a source build.
Build couchbase-server-7.1.0-1814 contains libcouchbase commit 256ec27 with commit message: : do not translate unknown error with "item-only" attribute
Jim Walker October 25, 2021 at 8:00 PM
Note I ran with wireshark and checked the KV response packets - they had status 0x34.
Fixed
Pinned fields
Click on the next to a field label to start pinning.
When running a Couchbase Server that has 'scope data limits' enabled, libcouchbase shows a confusing/unexpected message when the data-limit his reached, in this case memcached fails mutation commands with status 0x34 and the following is displayed by
pillowfight
Operation(s) failed: LCB_ERR_CAS_MISMATCH (209): CAS mismatch
.Some brief discussion suggest this is just because the libcouchbase I used didn't support the V2 error map, so please close this issue if another ticket tracks that work
and this ticket is expected behaviour for the down-level libcouchbase (although an improvement/suggestion would be to not print CAS_MISMATCH, this is confusing, a raw status may of been more useful for people to debug issues).
To reproduce I think the following works without a source build.
Install this toy-build
http://latestbuilds.service.couchbase.com/builds/latestbuilds/couchbase-server/toybuilds/13784/couchbase-server-enterprise-7.1.0-13784-centos7.x86_64.rpm
Create a single node cluster and add one bucket (default in this example)
Create a scope with a small data limit (0 might work, but this is what I used at the time of testing)
Add a collection to the new scope
Now run pillowfight so it hits the data limit
Note in my testing I was using libcouchbase from my server build with the following SHA
494582fa 2021-10-13 | : fix key length calculation for exists/get/touch/unlock (HEAD, m/master) [Sergey Avseyev]
cbc-pillowfight will eventually return:
If the toy-build is not required/wanted a server build can be used from this SHA that represent the feature in development
https://github.com/jimwwalker/kv_engine/commit/08063c8b534bfaf94f428c4ec9073626a97d73fa
Also fyi the new status code was added here http://review.couchbase.org/c/kv_engine/+/164048