Skip to content

Commit be0fa4a

Browse files
committed
CCBC-1666: do not schedule config request during shutdown
Change-Id: I828fd50b9d349968460bc2c47d81a0b941efa784 Reviewed-on: https://review.couchbase.org/c/libcouchbase/+/228818 Reviewed-by: Jared Casey <jared.casey@couchbase.com> Tested-by: Sergey Avseyev <sergey.avseyev@gmail.com> Tested-by: Build Bot <build@couchbase.com>
1 parent 5c05e44 commit be0fa4a

2 files changed

Lines changed: 10 additions & 4 deletions

File tree

src/bucketconfig/bc_cccp.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -288,14 +288,14 @@ lcb_STATUS CccpProvider::mcio_error(lcb_STATUS err)
288288
}
289289

290290
stop_current_request(err == LCB_ERR_UNSUPPORTED_OPERATION);
291-
if (err == LCB_ERR_PROTOCOL_ERROR && LCBT_SETTING(instance, conntype) == LCB_TYPE_CLUSTER) {
292-
lcb_log(LOGARGS(this, WARN), LOGFMT "Failed to bootstrap using CCCP", LOGID(this));
291+
if ((err == LCB_ERR_REQUEST_CANCELED && instance->destroying) ||
292+
(err == LCB_ERR_PROTOCOL_ERROR && LCBT_SETTING(instance, conntype) == LCB_TYPE_CLUSTER)) {
293+
lcb_log(LOGARGS(this, WARN), LOGFMT "Failed to bootstrap using CCCP: %s", LOGID(this), lcb_strerror_short(err));
293294
timer.cancel();
294295
parent->provider_failed(this, err);
295296
return err;
296-
} else {
297-
return schedule_next_request(err, /* can_rollover */ false, /* skip_if_push_supported */ false);
298297
}
298+
return schedule_next_request(err, /* can_rollover */ false, /* skip_if_push_supported */ false);
299299
}
300300

301301
/** Update the configuration from a server. */

src/bucketconfig/confmon.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,12 @@ int Confmon::do_set_next(ConfigInfo *new_config, bool notify_miss)
214214

215215
void Confmon::provider_failed(Provider *provider, lcb_STATUS reason)
216216
{
217+
if (instance->destroying) {
218+
lcb_log(LOGARGS(this, INFO), "Provider '%s' failed: %s, but the instance is destroying ignoring the error",
219+
provider_string(provider->type), lcb_strerror_short(reason));
220+
stop();
221+
return;
222+
}
217223
lcb_log(LOGARGS(this, INFO), "Provider '%s' failed: %s", provider_string(provider->type),
218224
lcb_strerror_short(reason));
219225

0 commit comments

Comments
 (0)