[Tarantool-patches] [PATCH 1/3] replication: print number of txs in limbo before its clear

sergeyb at tarantool.org sergeyb at tarantool.org
Thu Jul 9 20:16:44 MSK 2020


From: Sergey Bronnikov <sergeyb at tarantool.org>

---
 src/box/box.cc    | 10 ++++++----
 src/box/box.h     |  2 +-
 src/box/lua/ctl.c |  5 +++--
 3 files changed, 10 insertions(+), 7 deletions(-)

diff --git a/src/box/box.cc b/src/box/box.cc
index 749c96ca1..a400ed551 100644
--- a/src/box/box.cc
+++ b/src/box/box.cc
@@ -946,15 +946,15 @@ box_set_replication_anon(void)
 
 }
 
-void
+int
 box_clear_synchro_queue(void)
 {
 	if (!is_box_configured || txn_limbo_is_empty(&txn_limbo))
-		return;
+		return -1;
 	uint32_t former_leader_id = txn_limbo.instance_id;
 	assert(former_leader_id != REPLICA_ID_NIL);
 	if (former_leader_id == instance_id)
-		return;
+		return -2;
 
 	/* Wait until pending confirmations/rollbacks reach us. */
 	double timeout = 2 * txn_limbo_confirm_timeout(&txn_limbo);
@@ -965,9 +965,9 @@ box_clear_synchro_queue(void)
 		fiber_sleep(0.001);
 	}
 
+	int len = 0;
 	if (!txn_limbo_is_empty(&txn_limbo)) {
 		int64_t lsns[VCLOCK_MAX];
-		int len = 0;
 		const struct vclock  *vclock;
 		replicaset_foreach(replica) {
 			if (replica->relay != NULL &&
@@ -993,6 +993,8 @@ box_clear_synchro_queue(void)
 		txn_limbo_force_empty(&txn_limbo, confirm_lsn);
 		assert(txn_limbo_is_empty(&txn_limbo));
 	}
+
+	return len;
 }
 
 void
diff --git a/src/box/box.h b/src/box/box.h
index 5c4a5ed78..608e26b83 100644
--- a/src/box/box.h
+++ b/src/box/box.h
@@ -258,7 +258,7 @@ extern "C" {
 
 typedef struct tuple box_tuple_t;
 
-void box_clear_synchro_queue(void);
+int box_clear_synchro_queue(void);
 
 /* box_select is private and used only by FFI */
 API_EXPORT int
diff --git a/src/box/lua/ctl.c b/src/box/lua/ctl.c
index 2017ddc18..c3cf44f0c 100644
--- a/src/box/lua/ctl.c
+++ b/src/box/lua/ctl.c
@@ -82,8 +82,9 @@ static int
 lbox_ctl_clear_synchro_queue(struct lua_State *L)
 {
 	(void) L;
-	box_clear_synchro_queue();
-	return 0;
+	int len = box_clear_synchro_queue();
+	lua_pushinteger(L, len);
+	return 1;
 }
 
 static const struct luaL_Reg lbox_ctl_lib[] = {
-- 
2.26.2



More information about the Tarantool-patches mailing list