From 714dda8151716e7233886b373831709944cf2c44 Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Fri, 6 May 2022 02:11:48 +0300 Subject: [PATCH] Fix slow connection ramp-up caused by up_wait_retry_interval pausing operations on first connection attempt --- cpp-btree | 2 +- src/cluster_client.cpp | 18 +++++++++++------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/cpp-btree b/cpp-btree index 6e201464..903ec858 160000 --- a/cpp-btree +++ b/cpp-btree @@ -1 +1 @@ -Subproject commit 6e201464060ace53db809d65da7b0e2800673f8f +Subproject commit 903ec858bc8ab00fc0fbd44c23f0ab7770772353 diff --git a/src/cluster_client.cpp b/src/cluster_client.cpp index 1e2b3151..d3e970b3 100644 --- a/src/cluster_client.cpp +++ b/src/cluster_client.cpp @@ -9,6 +9,7 @@ #define PART_SENT 1 #define PART_DONE 2 #define PART_ERROR 4 +#define PART_RETRY 8 #define CACHE_DIRTY 1 #define CACHE_FLUSHING 2 #define CACHE_REPEATING 3 @@ -670,14 +671,17 @@ resume_2: if (!try_send(op, i)) { // We'll need to retry again - op->up_wait = true; - if (!retry_timeout_id) + if (op->parts[i].flags & PART_RETRY) { - retry_timeout_id = tfd->set_timer(up_wait_retry_interval, false, [this](int) + op->up_wait = true; + if (!retry_timeout_id) { - retry_timeout_id = 0; - continue_ops(true); - }); + retry_timeout_id = tfd->set_timer(up_wait_retry_interval, false, [this](int) + { + retry_timeout_id = 0; + continue_ops(true); + }); + } } op->state = 2; } @@ -746,7 +750,7 @@ resume_3: { for (int i = 0; i < op->parts.size(); i++) { - op->parts[i].flags = 0; + op->parts[i].flags = PART_RETRY; } goto resume_2; }