CAS only works when passing zero
We've been using ultramemcache quite happily with Couchbase 1.8.1. Upgraded to 2.0 DP4 and everything seems to work fine except for CAS operations. They only work when passing zero for the CAS value.
I telnetted in to the Couchbase server and verified that CAS does in fact work, which means something's wrong on ultramemcache's side. What could have changed from 1.8.1 to 2.0? I noticed this thread which says the .NET client library is experiencing a similar issue. Is it something to do with a 32/64-bit issue? Is it solvable without modifying ultramemcache?
Thanks for the feedback. Turns out it was an issue with ultramemcache and not Couchbase. The difference is that Couchbase 1.8.1 only generated 32-bit CAS values while 2.0 DP4 apparently generates 64-bit values. ultramemcache had a typo that treated them as 32-bit. The kind folks over at ESN fixed the problem and pushed out a new release (1.4). For anyone interested, the GitHub issue is here.
The .NET client library issue was a bit different-- and it uses binary protocol directly, not the textual protocol.
Do you have a simple test case you can post? If so, it may be great to post it to couchbase.com/issues and we can get it to the right person.
Also, much has changed since DP4, and you may want to check a recent build if you can. See couchbase.com/downloads-all