Description of problem:
The trimming process for data logs and bucket index logs relies on querying the sync status of peer zones to determine how much of your log is safe to trim. Log entries are only safe to trim if all peer zones report a sync status marker that is larger than the given log entry.
The default zone configuration sets 'sync_from_all=true', meaning that it syncs data from each peer zone in its zonegroup. A zone can also be configured to only 'sync_from' a subset of the zonegroup. When such a zone does not sync from one of its peers, it will return emtpy markers when that peer requests its sync status. This will prevent the peer zone from making progress in trimming its data logs and bucket index logs.
Version-Release number of selected component (if applicable):
Whenever a zone is configured to -not- sync from one of its peer zones.
Steps to Reproduce:
1. Create a multisite configuration with two zones 'a' and 'b'.
2. On the primary cluster, modify zone 'a' to not sync from zone 'b':
$ radosgw-admin zone modify --rgw-zone a --sync-from-all=0
$ radosgw-admin period update --commit
3. On the primary cluster, create a bucket 'bucket' and upload some objects.
4. Verify that the objects sync to the secondary zone and that sync status catches up.
5. Wait for at least rgw_sync_log_trim_interval (default 20min)
6. List the data log and bucket index log on each zone:
$ radosgw-admin datalog list
$ radosgw-admin bilog list --bucket bucket
The logs on zone 'a' are empty, but the logs on zone 'b' are not.
The logs on both zones are empty.
*** Bug 1700042 has been marked as a duplicate of this bug. ***
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.
For information on the advisory, and where to find the updated
files, follow the link below.
If the solution does not work for you, open a new bug report.