From 6d9f1bca9c89c4ea71388667a20b7ba16ab5c2d8 Mon Sep 17 00:00:00 2001 From: rasapala Date: Wed, 26 Nov 2025 11:49:25 +0100 Subject: [PATCH 1/2] executor fix --- src/drogon_http_async_writer_impl.cpp | 2 +- src/http_rest_api_handler.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/drogon_http_async_writer_impl.cpp b/src/drogon_http_async_writer_impl.cpp index 28837048f3..0ec0572438 100644 --- a/src/drogon_http_async_writer_impl.cpp +++ b/src/drogon_http_async_writer_impl.cpp @@ -46,7 +46,7 @@ void DrogonHttpAsyncWriterImpl::PartialReplyBegin(std::function actualWo this->responsePtr = drogon::HttpResponse::newAsyncStreamResponse( [this, actualWorkloadCallback = std::move(actualWorkloadCallback)](drogon::ResponseStreamPtr stream) { this->stream = std::move(stream); - this->pool.Schedule([actualWorkloadCallback = std::move(actualWorkloadCallback)] { + this->pool.Schedule([&actualWorkloadCallback] { SPDLOG_DEBUG("DrogonHttpAsyncWriterImpl::PartialReplyBegin::Schedule begin"); try { actualWorkloadCallback(); // run actual workload (mediapipe executor inferStream) which uses PartialReply diff --git a/src/http_rest_api_handler.cpp b/src/http_rest_api_handler.cpp index 314aef10e8..57f25d698e 100644 --- a/src/http_rest_api_handler.cpp +++ b/src/http_rest_api_handler.cpp @@ -716,7 +716,7 @@ Status HttpRestApiHandler::processV3(const std::string_view uri, const HttpReque serverReaderWriter->OverwriteResponseHeader("Content-Type", "text/event-stream"); serverReaderWriter->OverwriteResponseHeader("Cache-Control", "no-cache"); serverReaderWriter->OverwriteResponseHeader("Connection", "keep-alive"); - serverReaderWriter->PartialReplyBegin([executor = std::move(executor), serverReaderWriter, request = std::move(request)] { + serverReaderWriter->PartialReplyBegin([executor = std::move(executor), serverReaderWriter, request = std::move(request)]() mutable { ExecutionContext executionContext{ExecutionContext::Interface::REST, ExecutionContext::Method::V3Stream}; auto status = executor->inferStream(request, *serverReaderWriter, executionContext); if (!status.ok()) { @@ -729,6 +729,8 @@ Status HttpRestApiHandler::processV3(const std::string_view uri, const HttpReque serverReaderWriter->PartialReplyWithStatus(buffer.GetString(), HTTPStatusCode::BAD_REQUEST); } serverReaderWriter->PartialReplyEnd(); + // Release executor resources after the work is done - for example CB pipeline object + executor.reset() }); return StatusCode::PARTIAL_END; } From 3a96a8813ec9020d15e90a08ed729812d3733f7a Mon Sep 17 00:00:00 2001 From: rasapala Date: Wed, 26 Nov 2025 13:10:13 +0100 Subject: [PATCH 2/2] Fix code --- src/http_rest_api_handler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/http_rest_api_handler.cpp b/src/http_rest_api_handler.cpp index 57f25d698e..a6578dfb09 100644 --- a/src/http_rest_api_handler.cpp +++ b/src/http_rest_api_handler.cpp @@ -730,7 +730,7 @@ Status HttpRestApiHandler::processV3(const std::string_view uri, const HttpReque } serverReaderWriter->PartialReplyEnd(); // Release executor resources after the work is done - for example CB pipeline object - executor.reset() + executor.reset(); }); return StatusCode::PARTIAL_END; }