From 03827ac1f7c386f2ea11b17b57f79fdae3cfd847 Mon Sep 17 00:00:00 2001 From: Jason Rhinelander Date: Thu, 20 Feb 2020 20:42:44 -0400 Subject: [PATCH] Properly remove pending requests after they are invoked --- lokimq/lokimq.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lokimq/lokimq.cpp b/lokimq/lokimq.cpp index 549217f..41e66d6 100644 --- a/lokimq/lokimq.cpp +++ b/lokimq/lokimq.cpp @@ -1246,7 +1246,7 @@ bool LokiMQ::proxy_handle_builtin(int conn_index, std::vector& p std::string reply_tag = view(parts[tag_pos]); auto it = pending_requests.find(reply_tag); if (it != pending_requests.end()) { - LMQ_LOG(debug, "Received REPLY for pending command; scheduling callback"); + LMQ_LOG(debug, "Received REPLY for pending command", to_hex(reply_tag), "; scheduling callback"); std::vector data; data.reserve(parts.size() - (tag_pos + 1)); for (auto it = parts.begin() + (tag_pos + 1); it != parts.end(); ++it) @@ -1254,6 +1254,7 @@ bool LokiMQ::proxy_handle_builtin(int conn_index, std::vector& p proxy_schedule_job([callback=std::move(it->second.second), data=std::move(data)] { callback(true, std::move(data)); }); + pending_requests.erase(it); } else { LMQ_LOG(warn, "Received REPLY with unknown or already handled reply tag (", to_hex(reply_tag), "); ignoring"); }