]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
crimson/osd: introduce RollbackOrchestrator to OpsExecuter.
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 23 Mar 2021 13:26:53 +0000 (13:26 +0000)
committerRadoslaw Zarzynski <rzarzyns@redhat.com>
Mon, 10 May 2021 16:01:32 +0000 (18:01 +0200)
commit55a6d3f95ca4a895d660d36cc60851115d2f9b03
tree0a7b6b75dab5b940a74d9d57160f7e3724fe0055
parentf96a7f0acf1cac1dacbb476ea7e61c75c512f718
crimson/osd: introduce RollbackOrchestrator to OpsExecuter.

If the execution of an `OSDOp` fails, we're left with potentially
altered `ObjectContext`. We deal with that by reloading `obc` if
there was any modification to it. To figure this out, `has_seen_write()`
on `OpsExecuter` is being called. Unfortunately, the current impl.
has following drawbacks:

 * `has_seen_write()` can be called after `std::move(ox).flush_...()`
    which is very inelegant;
 * it requires catching both `ObjectContext` and `OpsExecuter` while
   the latter already references the former;
 * there is no explicitly given reason in the header for justifying
   the presence of `has_seen_writes()`.

Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
src/crimson/osd/ops_executer.h
src/crimson/osd/pg.cc