From ac36159f378c9860dad02d23c1885962f1882e20 Mon Sep 17 00:00:00 2001 From: Duncan Tourolle Date: Sat, 25 Jul 2026 23:12:51 +0200 Subject: [PATCH] fix: apply lossless push in PoolObjectNode too MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PoolNode and PoolObjectNode each have their own push_one_out(). The previous commit only reached PoolNode's copy, so ObjectNode-based pipelines — the common case — still dropped on overflow with lossless enabled. Verified end to end: a 2300-frame source now reports exactly 2300 frames at every stage, where it previously delivered 774 to the second node. Co-Authored-By: Claude Opus 5 --- include/kpn/pool_node.hpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/include/kpn/pool_node.hpp b/include/kpn/pool_node.hpp index 96eac9d..ee32d19 100644 --- a/include/kpn/pool_node.hpp +++ b/include/kpn/pool_node.hpp @@ -732,6 +732,11 @@ private: ch->push_sentinel(std::move(val)); return; } + // Lossless mode: block until the consumer drains instead of dropping. + if (lossless_) { + ch->push_blocking(std::move(val)); + return; + } try { ch->push(std::move(val)); } catch (const ChannelOverflowError&) {