@@ -151,6 +151,9 @@ class Manager : public DoutPrefixProvider {
151151
152152 struct token {
153153 tokens_waiter& waiter;
154+ token (const token& other) : waiter(other.waiter) {
155+ ++waiter.pending_tokens ;
156+ }
154157 token (tokens_waiter& _waiter) : waiter(_waiter) {
155158 ++waiter.pending_tokens ;
156159 }
@@ -469,11 +472,10 @@ class Manager : public DoutPrefixProvider {
469472 entries_persistency_tracker& notifs_persistency_tracker = topics_persistency_tracker[queue_name];
470473 boost::asio::spawn (yield, std::allocator_arg, make_stack_allocator (),
471474 [this , ¬ifs_persistency_tracker, &queue_name, entry_idx,
472- total_entries, &end_marker, &remove_entries, &has_error, &waiter,
473- &entry, &needs_migration_vector,
475+ total_entries, &end_marker, &remove_entries, &has_error,
476+ token = waiter. make_token (), &entry, &needs_migration_vector,
474477 push_endpoint = push_endpoint.get (),
475478 &topic_info](boost::asio::yield_context yield) {
476- const auto token = waiter.make_token ();
477479 auto & persistency_tracker = notifs_persistency_tracker[entry.marker ];
478480 auto result =
479481 process_entry (this ->get_cct ()->_conf , persistency_tracker,
0 commit comments