From 266f4f05267047597debb1615b71dfb86400a630 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Wed, 8 Apr 2026 13:29:47 -0400 Subject: [PATCH 1/3] Chore: Update BlazingMQ SDK version Signed-off-by: Patrick M. Niedzielski --- bin/clone-dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/clone-dependencies.sh b/bin/clone-dependencies.sh index b961855..806a7d5 100755 --- a/bin/clone-dependencies.sh +++ b/bin/clone-dependencies.sh @@ -15,7 +15,7 @@ set -u BDE_TOOLS_TAG=4.32.0.0 BDE_TAG=4.32.0.0 NTF_CORE_TAG=2.6.6 -BLAZINGMQ_TAG=BMQBRKR_0.94.8 +BLAZINGMQ_TAG=v0.95.3 if [ ! -d "${DIR_THIRDPARTY}/bde-tools" ]; then From 5f1c5f36695f2ca52682ec38663380145fc24e4b Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Tue, 14 Apr 2026 15:45:04 -0400 Subject: [PATCH 2/3] wip! try with `main` to verify fix --- bin/clone-dependencies.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/clone-dependencies.sh b/bin/clone-dependencies.sh index 806a7d5..3bb977b 100755 --- a/bin/clone-dependencies.sh +++ b/bin/clone-dependencies.sh @@ -15,7 +15,7 @@ set -u BDE_TOOLS_TAG=4.32.0.0 BDE_TAG=4.32.0.0 NTF_CORE_TAG=2.6.6 -BLAZINGMQ_TAG=v0.95.3 +BLAZINGMQ_TAG=fix/bmqp-mocksession-dependency if [ ! -d "${DIR_THIRDPARTY}/bde-tools" ]; then From 596574125efda05cee74c618b6541999865ec969 Mon Sep 17 00:00:00 2001 From: "Patrick M. Niedzielski" Date: Thu, 16 Apr 2026 13:03:35 -0400 Subject: [PATCH 3/3] Fix: Change `bmqa_mocksession` usage to use new signatures Signed-off-by: Patrick M. Niedzielski --- src/cpp/pybmq_mocksession.cpp | 52 +++++++++++++++++++++++++++++++---- 1 file changed, 47 insertions(+), 5 deletions(-) diff --git a/src/cpp/pybmq_mocksession.cpp b/src/cpp/pybmq_mocksession.cpp index 6e1050a..84fa94c 100644 --- a/src/cpp/pybmq_mocksession.cpp +++ b/src/cpp/pybmq_mocksession.cpp @@ -26,6 +26,9 @@ #include #include #include +#include +#include +#include #include #include #include @@ -38,6 +41,38 @@ namespace pybmq { namespace { +typedef bdlcc::SharedObjectPool< + bdlbb::Blob, + bdlcc::ObjectPoolFunctors::DefaultCreator, + bdlcc::ObjectPoolFunctors::RemoveAll > + BlobSpPool; + +typedef bsl::shared_ptr BlobSpPoolSp; + +const int k_BLOB_POOL_GROWTH_STRATEGY = 1024; + +void +createBlob( + bdlbb::BlobBufferFactory* bufferFactory, + void* arena, + bslma::Allocator* allocator) +{ + new (arena) bdlbb::Blob(bufferFactory, allocator); +} + +BlobSpPoolSp +makeBlobSpPool(bdlbb::BlobBufferFactory* factory, bslma::Allocator* allocator) +{ + return bsl::allocate_shared( + allocator, + bdlf::BindUtil::bind( + &createBlob, + factory, + bdlf::PlaceHolders::_1, + bdlf::PlaceHolders::_2), + k_BLOB_POOL_GROWTH_STRATEGY); +} + #ifdef BSLS_PLATFORM_CMP_GNU void assertNotCalled() __attribute__((noreturn)); @@ -185,10 +220,13 @@ maybe_emit_messages(PyObject* mock, bmqa::MockSession* mock_session) throw bsl::runtime_error("propagating Python error"); bslma::Allocator* allocator_p = bslma::Default::defaultAllocator(); - mock_session->enqueueEvent(bmqa::MockSessionUtil::createPushEvent( - push_msg_params, - &factory, - allocator_p)); + BlobSpPoolSp blobSpPool = makeBlobSpPool(&factory, allocator_p); + mock_session->enqueueEvent( + bmqa::MockSessionUtil::createPushEvent( + push_msg_params, + blobSpPool.get(), + &factory, + allocator_p)); if (!mock_session->emitEvent()) { PyErr_SetString(PyExc_RuntimeError, "Failed to emit event"); throw bsl::runtime_error("propagating Python error"); @@ -253,8 +291,12 @@ maybe_emit_acks(PyObject* mock, bmqa::MockSession* mock_session) bdlbb::SimpleBlobBufferFactory factory(1024); bslma::Allocator* allocator_p = bslma::Default::defaultAllocator(); + BlobSpPoolSp blobSpPool = makeBlobSpPool(&factory, allocator_p); mock_session->enqueueEvent( - bmqa::MockSessionUtil::createAckEvent(ack_params, &factory, allocator_p)); + bmqa::MockSessionUtil::createAckEvent( + ack_params, + blobSpPool.get(), + allocator_p)); if (!mock_session->emitEvent()) { PyErr_SetString(PyExc_RuntimeError, "Failed to emit event"); throw bsl::runtime_error("propagating Python error");