return seastar::make_ready_future<crimson::osd::acked_peers_t>(std::move(acked_peers));
});
+ auto sends = std::make_unique<std::vector<seastar::future<>>>();
for (auto pg_shard : pg_shards) {
if (pg_shard != whoami) {
auto m = crimson::make_message<MOSDRepOp>(
m->min_last_complete_ondisk = osd_op_p.min_last_complete_ondisk;
m->set_rollback_to(osd_op_p.at_version);
// TODO: set more stuff. e.g., pg_states
- (void) shard_services.send_to_osd(pg_shard.osd, std::move(m), map_epoch);
+ sends->emplace_back(shard_services.send_to_osd(pg_shard.osd, std::move(m), map_epoch));
}
}
- return {seastar::now(), std::move(all_completed)};
+ auto sends_complete = seastar::when_all_succeed(
+ sends->begin(), sends->end()
+ ).finally([sends=std::move(sends)] {});
+ return {std::move(sends_complete), std::move(all_completed)};
}
void ReplicatedBackend::on_actingset_changed(peering_info_t pi)