Skip to content

Commit 1316950

Browse files
authored
Merge pull request ceph#59776 from xxhdx1985126/wip-68061
crimson/osd/backfill_state: always go to Enqueuing when object is pushed during Waiting Reviewed-by: Samuel Just <[email protected]>
2 parents e4365c1 + 14c905d commit 1316950

File tree

3 files changed

+12
-15
lines changed

3 files changed

+12
-15
lines changed

src/crimson/osd/backfill_state.cc

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -403,7 +403,7 @@ BackfillState::PrimaryScanning::react(ObjectPushed evt)
403403
{
404404
logger().debug("PrimaryScanning::react() on ObjectPushed; evt.object={}",
405405
evt.object);
406-
backfill_state().progress_tracker->complete_to(evt.object, evt.stat);
406+
backfill_state().progress_tracker->complete_to(evt.object, evt.stat, true);
407407
return discard_event();
408408
}
409409

@@ -480,7 +480,7 @@ BackfillState::ReplicasScanning::react(ObjectPushed evt)
480480
{
481481
logger().debug("ReplicasScanning::react() on ObjectPushed; evt.object={}",
482482
evt.object);
483-
backfill_state().progress_tracker->complete_to(evt.object, evt.stat);
483+
backfill_state().progress_tracker->complete_to(evt.object, evt.stat, true);
484484
return discard_event();
485485
}
486486

@@ -496,16 +496,8 @@ BackfillState::Waiting::react(ObjectPushed evt)
496496
{
497497
logger().debug("Waiting::react() on ObjectPushed; evt.object={}",
498498
evt.object);
499-
backfill_state().progress_tracker->complete_to(evt.object, evt.stat);
500-
if (!Enqueuing::all_enqueued(peering_state(),
501-
backfill_state().backfill_info,
502-
backfill_state().peer_backfill_info)) {
503-
return transit<Enqueuing>();
504-
} else {
505-
// we still have something to wait on
506-
logger().debug("Waiting::react() on ObjectPushed; still waiting");
507-
return discard_event();
508-
}
499+
backfill_state().progress_tracker->complete_to(evt.object, evt.stat, false);
500+
return transit<Enqueuing>();;
509501
}
510502

511503
// -- Done
@@ -559,7 +551,8 @@ void BackfillState::ProgressTracker::enqueue_drop(const hobject_t& obj)
559551

560552
void BackfillState::ProgressTracker::complete_to(
561553
const hobject_t& obj,
562-
const pg_stat_t& stats)
554+
const pg_stat_t& stats,
555+
bool may_push_to_max)
563556
{
564557
logger().debug("{}: obj={}",
565558
__func__, obj);
@@ -580,7 +573,8 @@ void BackfillState::ProgressTracker::complete_to(
580573
soid,
581574
*item.stats);
582575
}
583-
if (Enqueuing::all_enqueued(peering_state(),
576+
if (may_push_to_max &&
577+
Enqueuing::all_enqueued(peering_state(),
584578
backfill_state().backfill_info,
585579
backfill_state().peer_backfill_info) &&
586580
tracked_objects_completed()) {

src/crimson/osd/backfill_state.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -421,7 +421,7 @@ class BackfillState::ProgressTracker {
421421

422422
bool enqueue_push(const hobject_t&);
423423
void enqueue_drop(const hobject_t&);
424-
void complete_to(const hobject_t&, const pg_stat_t&);
424+
void complete_to(const hobject_t&, const pg_stat_t&, bool may_push_to_max);
425425
};
426426

427427
} // namespace crimson::osd

src/test/crimson/test_backfill.cc

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,9 @@ BackfillFixture::BackfillFixture(
270270
this->backfill_targets),
271271
std::make_unique<PGFacade>(this->backfill_source))
272272
{
273+
seastar::global_logger_registry().set_all_loggers_level(
274+
seastar::log_level::debug
275+
);
273276
backfill_state.process_event(crimson::osd::BackfillState::Triggered{}.intrusive_from_this());
274277
}
275278

0 commit comments

Comments
 (0)