summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorZheng Chao <[email protected]>2023-08-28 17:54:00 +0800
committerZheng Chao <[email protected]>2023-08-28 17:54:00 +0800
commitd2599b6ca99a0f66e557900f05400e906577df2a (patch)
treed906375a6953e1f7c2135b5bf623d357ceb29f6c /src
parent2768d7affe693557ed75de54777862c4aee7c37c (diff)
Bugfix: fair token bucket peturbs after configurations.
Diffstat (limited to 'src')
-rw-r--r--src/swarmkv_api.c3
-rw-r--r--src/swarmkv_monitor.c3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/swarmkv_api.c b/src/swarmkv_api.c
index 81577b6..5855afb 100644
--- a/src/swarmkv_api.c
+++ b/src/swarmkv_api.c
@@ -375,8 +375,11 @@ struct swarmkv_reply *swarmkv_command_on_argv(struct swarmkv *db, const char *ta
node_init_from_sds(&target_node, target);
exec_for_local(db, cmd, &target_node, blocking_query_cb, &ctx);
}
+ long long pending_cmds=0;
+ pending_cmds=swarmkv_caller_get_pending_commands(db);
if(ctx.reply==NULL)
{
+ assert(pending_cmds==1);
swarmkv_caller_loop(db, SWARMKV_LOOP_NO_EXIT_ON_EMPTY, NULL);
}
assert(ctx.reply!=NULL);
diff --git a/src/swarmkv_monitor.c b/src/swarmkv_monitor.c
index 6b10e7f..95c88d7 100644
--- a/src/swarmkv_monitor.c
+++ b/src/swarmkv_monitor.c
@@ -371,10 +371,11 @@ enum cmd_exec_result latency_command(struct swarmkv_module *mod_monitor, const s
else if(!strcasecmp(cmd->argv[1], "peer"))
{
struct recorder *merged_table=NULL;
+ //Dirty code: Reading all worker threads' peer recorder tables is not thread-safe.
+ //It's OK only if the worker threads are not adding new peers.
recorder_table_merge(monitor->peers, monitor->nr_worker_threads, &merged_table);
*reply=latency_generic(&merged_table, cmd->argc>2?cmd->argv[2]:NULL);
recorder_table_free(&merged_table);
-
}
else if(!strcasecmp(cmd->argv[1], "reset"))
{