Project

General

Profile

Actions

Bug #19817

closed

multisite: RGWPeriodPuller does not call RGWPeriod::reflect() on new period

Added by Casey Bodley about 7 years ago. Updated almost 7 years ago.

Status:
Resolved
Priority:
High
Assignee:
Target version:
-
% Done:

0%

Source:
Tags:
Backport:
jewel kraken
Regression:
No
Severity:
3 - minor
Reviewed:
Affected Versions:
ceph-qa-suite:
Pull request ID:
Crash signature (v1):
Crash signature (v2):

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]


Related issues 3 (0 open3 closed)

Related to rgw - Bug #19816: multisite: set_latest_epoch not atomicResolvedCasey Bodley05/01/2017

Actions
Copied to rgw - Backport #20720: jewel: multisite: RGWPeriodPuller does not call RGWPeriod::reflect() on new periodResolvedNathan CutlerActions
Copied to rgw - Backport #20721: kraken: multisite: RGWPeriodPuller does not call RGWPeriod::reflect() on new periodRejectedActions
Actions

Also available in: Atom PDF