@@ -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
560552void 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 ()) {
0 commit comments