From be22c363ca499798e7a0331e4a541fc01879254a Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Thu, 20 Mar 2025 00:12:38 +0300 Subject: [PATCH] Do not skip client_retry_interval on reconnecting OSDs to prevent OSD spam --- src/client/cluster_client.cpp | 3 +-- src/client/cluster_client.h | 10 ++++++++-- src/test/test_cluster_client.cpp | 5 +++-- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/src/client/cluster_client.cpp b/src/client/cluster_client.cpp index 6f6eb51a..e89dbd9f 100644 --- a/src/client/cluster_client.cpp +++ b/src/client/cluster_client.cpp @@ -29,8 +29,7 @@ cluster_client_t::cluster_client_t(ring_loop_t *ringloop, timerfd_manager_t *tfd if (msgr.osd_peer_fds.find(peer_osd) != msgr.osd_peer_fds.end()) { // peer_osd just connected - // retry operations waiting for connection immediately - continue_ops(client_retry_interval); + continue_ops(); continue_lists(); continue_raw_ops(peer_osd); } diff --git a/src/client/cluster_client.h b/src/client/cluster_client.h index 658e53a6..d4f2357d 100644 --- a/src/client/cluster_client.h +++ b/src/client/cluster_client.h @@ -83,6 +83,9 @@ class writeback_cache_t; // FIXME: Split into public and private interfaces class cluster_client_t { +#ifdef __MOCK__ +public: +#endif timerfd_manager_t *tfd; ring_loop_t *ringloop; @@ -144,8 +147,6 @@ public: bool get_immediate_commit(uint64_t inode); - void continue_ops(int time_passed = 0); - void list_inode(inode_t inode, uint64_t min_offset, uint64_t max_offset, int max_parallel_pgs, std::function&& objects)> pg_callback); @@ -153,6 +154,11 @@ public: //inline uint64_t get_bs_block_size() { return st_cli.global_block_size; } uint64_t next_op_id(); +#ifndef __MOCK__ +protected: +#endif + void continue_ops(int time_passed = 0); + protected: bool affects_osd(uint64_t inode, uint64_t offset, uint64_t len, osd_num_t osd); bool affects_pg(uint64_t inode, uint64_t offset, uint64_t len, pool_id_t pool_id, pg_num_t pg_num); diff --git a/src/test/test_cluster_client.cpp b/src/test/test_cluster_client.cpp index 6f754b18..846098c7 100644 --- a/src/test/test_cluster_client.cpp +++ b/src/test/test_cluster_client.cpp @@ -256,7 +256,7 @@ void test1() pretend_disconnected(cli, 1); pretend_connected(cli, 1); - cli->continue_ops(true); + cli->continue_ops(cli->client_retry_interval); // Check replay { @@ -319,6 +319,7 @@ void test1() pretend_op_completed(cli, find_op(cli, 1, OSD_OP_WRITE, 0, 0x1000), -EPIPE); check_disconnected(cli, 1); pretend_connected(cli, 1); + cli->continue_ops(cli->client_retry_interval); check_op_count(cli, 1, 1); can_complete(r1); pretend_op_completed(cli, find_op(cli, 1, OSD_OP_WRITE, 0, 0x1000), 0); @@ -337,7 +338,7 @@ void test1() check_completed(r1); check_disconnected(cli, 1); pretend_connected(cli, 1); - cli->continue_ops(true); + cli->continue_ops(cli->client_retry_interval); check_op_count(cli, 1, 1); pretend_op_completed(cli, find_op(cli, 1, OSD_OP_WRITE, 0, 0x1000), 0); check_op_count(cli, 1, 1);