From 5b587d152cb1402406d2f40f0c3cc9aad817772d Mon Sep 17 00:00:00 2001 From: erobot Date: Thu, 1 Feb 2024 17:26:08 +0800 Subject: [PATCH] Fix an unbalanced release of the producer's pending semaphore --- lib/ProducerImpl.cc | 1 - tests/ProducerTest.cc | 2 ++ 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/ProducerImpl.cc b/lib/ProducerImpl.cc index 2e5cd444..14a74c63 100644 --- a/lib/ProducerImpl.cc +++ b/lib/ProducerImpl.cc @@ -630,7 +630,6 @@ void ProducerImpl::sendAsyncWithStatsUpdate(const Message& msg, SendCallback&& c const uint32_t msgHeadersAndPayloadSize = msgMetadataSize + payloadSize; if (msgHeadersAndPayloadSize > maxMessageSize) { lock.unlock(); - releaseSemaphoreForSendOp(*op); LOG_WARN(getName() << " - compressed Message size " << msgHeadersAndPayloadSize << " cannot exceed " << maxMessageSize << " bytes unless chunking is enabled"); diff --git a/tests/ProducerTest.cc b/tests/ProducerTest.cc index bb58a4ef..21e491de 100644 --- a/tests/ProducerTest.cc +++ b/tests/ProducerTest.cc @@ -243,6 +243,8 @@ TEST_P(ProducerTest, testMaxMessageSize) { ASSERT_EQ(ResultMessageTooBig, producer.send(MessageBuilder().setContent(std::string(maxMessageSize, 'b')).build())); + ASSERT_EQ(ResultOk, producer.send(MessageBuilder().setContent(msg).build())); + client.close(); }