From d0165052c13d6877203b97ba948e309feb999818 Mon Sep 17 00:00:00 2001 From: dsorvq Date: Fri, 24 Apr 2026 12:29:29 +0300 Subject: [PATCH] Ensure at least one attempt to acquire token even with zero timeout --- src/client/persqueue_public/impl/write_session.cpp | 4 ++-- src/client/topic/common/simple_blocking_helpers.h | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/client/persqueue_public/impl/write_session.cpp b/src/client/persqueue_public/impl/write_session.cpp index 3ad3306449..ce1acde444 100644 --- a/src/client/persqueue_public/impl/write_session.cpp +++ b/src/client/persqueue_public/impl/write_session.cpp @@ -110,7 +110,7 @@ std::optional TSimpleBlockingWriteSession::WaitForToken(cons std::optional token = std::nullopt; - while (IsAlive() && remainingTime > TDuration::Zero()) { + do { Writer->WaitEvent().Wait(remainingTime); for (auto event : Writer->GetEvents()) { @@ -130,7 +130,7 @@ std::optional TSimpleBlockingWriteSession::WaitForToken(cons } remainingTime = timeout - (TInstant::Now() - startTime); - } + } while (IsAlive() && remainingTime > TDuration::Zero()); return std::nullopt; } diff --git a/src/client/topic/common/simple_blocking_helpers.h b/src/client/topic/common/simple_blocking_helpers.h index ddddb94056..7290497861 100644 --- a/src/client/topic/common/simple_blocking_helpers.h +++ b/src/client/topic/common/simple_blocking_helpers.h @@ -20,7 +20,7 @@ std::optional WaitForToken( std::optional token; - while (!closed.load() && remainingTime > TDuration::Zero()) { + do { writer.WaitEvent().Wait(remainingTime); for (auto event : writer.GetEvents(false, std::nullopt)) { @@ -40,7 +40,7 @@ std::optional WaitForToken( } remainingTime = timeout - (TInstant::Now() - startTime); - } + } while (!closed.load() && remainingTime > TDuration::Zero()); return std::nullopt; }