osd: pg stuck in waitactingchange when new acting set doesn't change
In pg GetLog state,when process choose_acting, if want not equal acting, it will request pg_temp from mon,and then post an event NeedActingChange.
before transit to WaitActingchange, pg state will exit from getlog->peering->primary,and then enter Started/Primary/Peering/WaitActingChange.
but in exit Primary state,pg->want_acting will be cleared,So when in WaitActingChange wait AdvMap evt,the empty want_acting will lead pg cycle in this state.
thus, pg state will be out of this state until new acting is not equal now and restart peering.
epoch 90: want_acting is[9, 8, 3], pg acting is[9 8],it would request a pg_temp [9,8,3] from mon. and it would post an NeedActingChange event.
epoch 91: osd.3 is down in osdmap;now the new acting will be [9,8].but when in state WaitActingChange resolve ActMap, in the log,pg->want_acting is empty,
it will stuck in this state until pg's acting set different from now.
#5 Updated by Patrick Donnelly about 1 year ago
- Tracker changed from Fix to Bug
- Project changed from Ceph to RADOS
- Subject changed from pg stuck in waitactingchange when new acting set doesn't change to osd: pg stuck in waitactingchange when new acting set doesn't change
- Category deleted (
- Status changed from New to Fix Under Review
- Target version changed from v12.2.13 to v15.0.0
- Start date deleted (
- Backport set to nautilus,mimic,luminous
- Regression set to No
- Severity set to 3 - minor
- Pull request ID set to 29669
- Affected Versions deleted (
- ceph-qa-suite deleted (
- Component(RADOS) OSD added