]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
crimson/osd: skip store flush for empty peering transactions 69905/head
authorRonen Friedman <rfriedma@redhat.com>
Wed, 1 Jul 2026 03:50:24 +0000 (03:50 +0000)
committerRonen Friedman <rfriedma@redhat.com>
Thu, 2 Jul 2026 09:37:39 +0000 (09:37 +0000)
commitc80f90324ed09eabe02a97d7096093cb45de3416
tree7b7b751c9eaa6bcbc45da0f3dcb9bcd16418f813
parent16052666146c8ebb671b2740c226db4d6d1ea03f
crimson/osd: skip store flush for empty peering transactions

dispatch_context_transaction submits a real empty transaction to
AlienStore even when the peering context has no store ops. This
goes through the AlienCollection lock and thread pool slot machinery.
Under load from broadcast_map_to_pgs (many PGAdvanceMap operations
running concurrently with recovery), some of these empty transactions
get stuck inside AlienStore's pipeline and never reach BlueStore,
causing PGAdvanceMap to hang at complete_rctx indefinitely.

Fix by skipping the store round-trip for empty transactions. The
on_commit callbacks are still collected and fired, preserving the
fix from b0f5e1086a6 ("crimson/osd/pg: also trigger callbacks for
empty peering transactions"). The store flush that commit added was
incidental to the callback fix and is unnecessary here: the peering
pipeline's exclusive process stage already guarantees that prior
peering transactions on the same PG have completed.

Assisted-by: Claude <claude.ai>
Signed-off-by: Ronen Friedman <rfriedma@redhat.com>
src/crimson/osd/shard_services.cc