I’m using JAVA SDK 2.1 in order to connect to a Couchbase Cluster.
During development we tested against a local cluster consisting from Docker containers of the official Couchbase Docker repository which run a fairly new Couchbase Server version.
In production we have a quite old version (1.8.1) in place. I checked compatibility. It states CRUD methods are supported even in such an old version.
Running tests with my Java SDK client against Couchbase Server 1.8.1 I experience TimeoutExceptions but only in case of remove operations. Inserts, Upserts, Reads and Touches work fine.
The default timeout is configured with 2.5 seconds. I doubt that removing data should last so long if writing within this timeout is absolutely no problem.
Any suggestions how to even debug this problem?
What exact version of the 2.1 SDK are you using?
I think the best path is to come up with a tiny test that just removes a key and displays the timeout problem, then activate TRACE level logs to try and see what exactly happens.
If you could upload the trace log (in which you should see dumps of network packets) to a site like gist.github.com or pastebin, so that we can have a look at it? (just make sure you run it on a local couchbase server, without a password or any sensitive data)
Thanks for you answer.
We played around a bit more since I asked the question. It turned out that setting the second parameter of remove method to Persist.MASTER did cause the problem.
We do not have a master in our configuration. A quick guess is therefore that the old Couchbase server version did not check if there is one before trying to delete the value.
However since we are not running in master-slave mode we set it to Persist.NONE. In our case this solves the issue.