Merge pull request #52529 from xxhdx1985126/wip-61943

crimson/osd/osd_operations: add pipeline to LogMissingRequest to sync it

Reviewed-by: Samuel Just <sjust@redhat.com>
Reviewed-by: Matan Breizman <mbreizma@redhat.com>
This commit is contained in:
Matan Breizman 2023-07-24 16:54:17 +03:00 committed by GitHub
commit 3f87e4da85
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 1 deletions

View File

@ -61,7 +61,18 @@ seastar::future<> LogMissingRequest::with_pg(
IRef ref = this;
return interruptor::with_interruption([this, pg] {
return pg->do_update_log_missing(req, conn);
logger().debug("{}: pg present", *this);
return this->template enter_stage<interruptor>(client_pp(*pg).await_map
).then_interruptible([this, pg] {
return this->template with_blocking_event<
PG_OSDMapGate::OSDMapBlocker::BlockingEvent
>([this, pg](auto &&trigger) {
return pg->osdmap_gate.wait_for_map(
std::move(trigger), req->min_epoch);
});
}).then_interruptible([this, pg](auto) {
return pg->do_update_log_missing(req, conn);
});
}, [ref](std::exception_ptr) { return seastar::now(); }, pg);
}

View File

@ -59,6 +59,8 @@ public:
ConnectionPipeline::AwaitActive::BlockingEvent,
ConnectionPipeline::AwaitMap::BlockingEvent,
ConnectionPipeline::GetPG::BlockingEvent,
ClientRequest::PGPipeline::AwaitMap::BlockingEvent,
PG_OSDMapGate::OSDMapBlocker::BlockingEvent,
PGMap::PGCreationBlockingEvent,
OSD_OSDMapGate::OSDMapBlocker::BlockingEvent
> tracking_events;