From d0396267d00370c95a82253f3f56b06fdf1f6a61 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Tue, 31 Dec 2024 20:40:34 +0300 Subject: [PATCH] Clear retry_timeout when the client is destroyed --- src/client/cluster_client.cpp | 10 ++++++++-- src/client/cluster_client.h | 2 +- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/client/cluster_client.cpp b/src/client/cluster_client.cpp index d68fb965..e62c3ebe 100644 --- a/src/client/cluster_client.cpp +++ b/src/client/cluster_client.cpp @@ -67,6 +67,12 @@ cluster_client_t::cluster_client_t(ring_loop_t *ringloop, timerfd_manager_t *tfd cluster_client_t::~cluster_client_t() { + if (retry_timeout_id >= 0) + { + tfd->clear_timer(retry_timeout_id); + retry_timeout_duration = 0; + retry_timeout_id = -1; + } msgr.repeer_pgs = [](osd_num_t){}; if (ringloop) { @@ -314,7 +320,7 @@ void cluster_client_t::reset_retry_timer(int new_duration) { return; } - if (retry_timeout_id) + if (retry_timeout_id >= 0) { tfd->clear_timer(retry_timeout_id); } @@ -322,7 +328,7 @@ void cluster_client_t::reset_retry_timer(int new_duration) retry_timeout_id = tfd->set_timer(retry_timeout_duration, false, [this](int) { int time_passed = retry_timeout_duration; - retry_timeout_id = 0; + retry_timeout_id = -1; retry_timeout_duration = 0; continue_ops(time_passed); }); diff --git a/src/client/cluster_client.h b/src/client/cluster_client.h index 59c35ab2..a6c71ada 100644 --- a/src/client/cluster_client.h +++ b/src/client/cluster_client.h @@ -97,7 +97,7 @@ class cluster_client_t int client_eio_retry_interval = 1000; // ms bool client_retry_enospc = true; - int retry_timeout_id = 0; + int retry_timeout_id = -1; int retry_timeout_duration = 0; std::vector offline_ops; cluster_op_t *op_queue_head = NULL, *op_queue_tail = NULL;