mirror of
https://github.com/ceph/ceph
synced 2025-03-30 07:19:14 +00:00
osd: only update degraded object stats after peering
This avoids incorrectly populating peer_missing[acting[i]], which in turn screws up peering and recovery.
This commit is contained in:
parent
af9559e784
commit
199d03243f
@ -1537,11 +1537,13 @@ void PG::update_stats()
|
||||
pg_stats_stable.acting = acting;
|
||||
|
||||
pg_stats_stable.num_object_copies = pg_stats_stable.num_objects * info.pgid.size();
|
||||
if (!is_clean()) {
|
||||
if (!is_clean() && !is_peering()) {
|
||||
pg_stats_stable.num_objects_missing_on_primary = missing.num_missing();
|
||||
int degraded = missing.num_missing();
|
||||
for (unsigned i=1; i<acting.size(); i++)
|
||||
for (unsigned i=1; i<acting.size(); i++) {
|
||||
assert(peer_missing.count(acting[i]));
|
||||
degraded += peer_missing[acting[i]].num_missing();
|
||||
}
|
||||
pg_stats_stable.num_objects_degraded = degraded;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user