]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
crimson/osd/pg: remove incorrect map epoch check in PG::submit_transasction 49935/head
authorSamuel Just <sjust@redhat.com>
Mon, 30 Jan 2023 06:20:27 +0000 (22:20 -0800)
committerSamuel Just <sjust@redhat.com>
Tue, 31 Jan 2023 04:34:43 +0000 (20:34 -0800)
It's entirely fine for the map_epoch to change while the op is processed
as long as none of the intervening epochs caused an interval change.  In
general, the correct way to check for an interval change is with
has_reset_since.

We don't need to do this check here at all because IOInterruptCondition
will already have performed it against the captured epoch when the
continuation resumed.

Introduced: 31418020fd58
Fixes: https://tracker.ceph.com/issues/58486
Signed-off-by: Samuel Just <sjust@redhat.com>
src/crimson/osd/pg.cc

index 27f3b28589d638000a08c47af6fae0e4aa47e1c2..d4d76d1787ecaa4ad7989a34581b6e3ee7f8ee19 100644 (file)
@@ -594,10 +594,7 @@ PG::submit_transaction(
   }
 
   epoch_t map_epoch = get_osdmap_epoch();
-
-  if (__builtin_expect(osd_op_p.at_version.epoch != map_epoch, false)) {
-    throw crimson::common::actingset_changed(is_primary());
-  }
+  ceph_assert(!has_reset_since(osd_op_p.at_version.epoch));
 
   peering_state.pre_submit_op(obc->obs.oi.soid, log_entries, osd_op_p.at_version);
   peering_state.append_log_with_trim_to_updated(std::move(log_entries), osd_op_p.at_version,