Bug #19817
closedmultisite: RGWPeriodPuller does not call RGWPeriod::reflect() on new period
0%
Description
If radosgw first learns about a new period from RGWPeriodPuller, it doesn't call RGWPeriod::reflect() to update its zonegroup objects in rados. This means that later radosgw-admin zone/zonegroup commands will operate on old configuration, and a 'period commit' can revert earlier changes that happened on another cluster.
For example, in a 3-zone configuration:
cluster1: create realm/zonegroup/zone1, period commit
cluster2: realm pull, create zone2, period commit
cluster3: realm pull, create zone3, period commit
[cluster2 uses RGWPeriodPuller to pull new period from master on cluster1, but local zonegroup still only contains zone1,zone2]
cluster2: 'zone modify --rgw-zone=zone2 --master' -> period commit
[resulting period no longer contains a zone3]