Skip to content

Commit 48b3086

Browse files
authored
Merge pull request ceph#59244 from cbodley/wip-rgw-notification-token-waiter
rgw/notify: process_queue() constructs wait tokens when spawning Reviewed-by: Yuval Lifshitz <[email protected]>
2 parents 3588c3c + baab1dc commit 48b3086

File tree

1 file changed

+5
-3
lines changed

1 file changed

+5
-3
lines changed

src/rgw/driver/rados/rgw_notify.cc

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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, &notifs_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

Comments
 (0)