]> git.apps.os.sepia.ceph.com Git - ceph.git/commit
mon/OSDMonitor: kill pending upmap changes too if pool is gone 20704/head
authorxie xingguo <xie.xingguo@zte.com.cn>
Mon, 5 Mar 2018 01:30:45 +0000 (09:30 +0800)
committerxie xingguo <xie.xingguo@zte.com.cn>
Wed, 7 Mar 2018 00:42:37 +0000 (08:42 +0800)
commitbd828fc033222e60e9b6671ccb826cec29ec5f36
tree47042674d82fbb9a0d55812d38aa0cae72ba4f5c
parentcf65a91acf32b4499a62d4766eeafce530e7d19e
mon/OSDMonitor: kill pending upmap changes too if pool is gone

There are quite a lot mgr/balancer related tests that I can observe
the following logged errors:
```
2018-03-03 08:14:00.359946 7fdda18cc700 -1 maybe_remove_pg_upmaps unable to load crush-rule of pg 5.b
```
which turns out to be a *pool-deletion* vs *balancer-auto-injected-upmap-changes*
race issue.
The root cause is that we don't clean up those *pending*
pg_upmap/pg_upmap_items injected by the mgr/balancer properly simultaneously
when the corresponding pool is gone, and hence the above problem can be fixed by:
1. clean up any pending upmap changes too if the corresponding pool is gone
2. re-check pending pool removal queue before we can safely apply any new upmap changes

Signed-off-by: xie xingguo <xie.xingguo@zte.com.cn>
src/mon/OSDMonitor.cc