Details
Description
We're encountering an issue where both the Ruby and Perl clients get() method will consistently, repeatedly just return an error. On the Perl client it is "Temporary error. try again later", and on Ruby it is "Bucket not found".
This occurs when we have several couchbase servers, and have connected using the node list option to supply all of them to the library.
We remove the first server in the node list via the Couchbase GUI, trigger a rebalance, and wait for it to complete.
Once the rebalance has completed, we start a script that simply attempts to connect and retrieve some keys we previously inserted. Instead of success, we find that it repeatedly gives the errors mentioned above.
note that if we remain connected to the cluster, then everything seems fine. The errors only start occurring when a client connects.
note also that the issue only occurs if the first server (or servers) in the list are down; if the first server listed is currently actively in the cluster, then we're OK.
It seems like the problem is that the now-removed server is still accepting connections on port 8091, and thus the client library thinks that this means it is a valid server. However because it's removed from the pool, it causes confusion and errors to the client.
Obviously, the correct/desired behaviour would be for the client library to behave as if the removed-server was not accepting connections, and to move onto the next server in the node list.
Attachments
Issue Links
- blocks
-
PCBC-246 Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..)
- Resolved
-
PLCBC-14 Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..)
- Resolved
-
PYCBC-175 Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..)
- Resolved
-
RCBC-138 Expose lcb_cntl(..., LCB_CNTL_SKIP_CONFIGURATION_ERRORS_ON_CONNECT, ..) to ruby
- Resolved