The client might not breakout on slow connections
Description
Environment
Gerrit Reviews
Release Notes Description
Activity
CB robot March 28, 2024 at 5:46 AM
Build couchbase-server-7.2.5-7575 contains libcouchbase commit 884038e with commit message:
https://couchbasecloud.atlassian.net/browse/CCBC-1616#icft=CCBC-1616: apply wait_for_config check for all pipelines
CB robot December 23, 2023 at 1:36 AM
Build capella-analytics-1.0.0-1179 contains libcouchbase commit 884038e with commit message:
https://couchbasecloud.atlassian.net/browse/CCBC-1616#icft=CCBC-1616: apply wait_for_config check for all pipelines
CB robot December 22, 2023 at 8:07 PM
Build couchbase-server-8.0.0-1508 contains libcouchbase commit 884038e with commit message:
https://couchbasecloud.atlassian.net/browse/CCBC-1616#icft=CCBC-1616: apply wait_for_config check for all pipelines
CB robot December 22, 2023 at 4:03 PM
Build couchbase-server-7.6.0-1967 contains libcouchbase commit 884038e with commit message:
https://couchbasecloud.atlassian.net/browse/CCBC-1616#icft=CCBC-1616: apply wait_for_config check for all pipelines
CB robot December 19, 2023 at 1:39 AM
Build couchbase-server-7.1.6-3969 contains libcouchbase commit 884038e with commit message:
https://couchbasecloud.atlassian.net/browse/CCBC-1616#icft=CCBC-1616: apply wait_for_config check for all pipelines
When the connection is slow, or operation timeout is configured to pretty low value, the SDK might not leave the event loop in case, when lcb_wait() function is being used to execute IO operations. In this case, regardless that actual data operation has been completed, and user callback invoked, the library might have configuration update operation running, and will wait for its completion, even though it is not required to return control from lcb_wait() operation by default.
The issue is related to https://couchbasecloud.atlassian.net/browse/CCBC-948#icft=CCBC-948. Previously the check was only performed for retry queue, but in fact it also makes sense to do the same check for every KV connection, during pending requests detection cycle.
It is still possible to control behaviour of whether the library should wait for pending configuration updates before returning from lcb_wait(), "wait_for_config" connection string option or lcb_cntl(..., LCB_CNTL_WAIT_FOR_CONFIG, ...) can be used to check default behaviour (which is "false").