[Bugs] [Bug 1601314] New: [geo-rep]: Geo-replication not syncing renamed symlink
bugzilla at redhat.com
bugzilla at redhat.com
Mon Jul 16 04:46:51 UTC 2018
https://bugzilla.redhat.com/show_bug.cgi?id=1601314
Bug ID: 1601314
Summary: [geo-rep]: Geo-replication not syncing renamed symlink
Product: Red Hat Gluster Storage
Version: 3.4
Component: geo-replication
Assignee: khiremat at redhat.com
Reporter: khiremat at redhat.com
QA Contact: rhinduja at redhat.com
CC: avishwan at redhat.com, bugs at gluster.org,
csaba at redhat.com, rhs-bugs at redhat.com,
sankarshan at redhat.com, storage-qa-internal at redhat.com
Depends On: 1600405
+++ This bug was initially created as a clone of Bug #1600405 +++
Description of problem:
Geo-rep sometimes fails to sync the rename of symlink
if the I/O is as follows
1. touch file1
2. ln -s "./file1" sym_400
3. mv sym_400 renamed_sym_400
4. mkdir sym_400
The file 'renamed_sym_400' failed to sync to slave
Version-Release number of selected component (if applicable):
mainline
How reproducible:
Few times, looks like race
Steps to Reproduce:
1. setup geo-rep, start it.
2. Stop geo-rep
3. On master do following I/O
1. touch file1
2. ln -s "./file1" sym_400
3. mv sym_400 renamed_sym_400
4. mkdir sym_400
4. Find the brick on which rename_sym_400 is present on master
and kill that brick
5. Start geo-rep so that other bricks processes there changelog first
6. Once other bricks are in changelog crawl, bring back brick which was down.
7. It also moves to changelog but 'renamed_sym_400' doesn't sync
Actual results:
'renamed_sym_400' doesn't sync
Expected results:
'renamed_sym_400' should sync
Additional info:
--- Additional comment from Worker Ant on 2018-07-12 04:34:29 EDT ---
REVIEW: https://review.gluster.org/20496 (geo-rep: Fix symlink rename syncing
issue) posted (#1) for review on master by Kotresh HR
--- Additional comment from Worker Ant on 2018-07-12 10:46:17 EDT ---
COMMIT: https://review.gluster.org/20496 committed in master by "Kotresh HR"
<khiremat at redhat.com> with a commit message- geo-rep: Fix symlink rename
syncing issue
Problem:
Geo-rep sometimes fails to sync the rename of symlink
if the I/O is as follows
1. touch file1
2. ln -s "./file1" sym_400
3. mv sym_400 renamed_sym_400
4. mkdir sym_400
The file 'renamed_sym_400' failed to sync to slave
Cause:
Assume there are three distribute subvolume (brick1, brick2, brick3).
The changelogs are recorded as follows for above I/O pattern.
Note that the MKDIR is recorded on all bricks.
1. brick1:
-------
CREATE file1
SYMLINK sym_400
RENAME sym_400 renamed_sym_400
MKDIR sym_400
2. brick2:
-------
MKDIR sym_400
3. brick3:
-------
MKDIR sym_400
The operations on 'brick1' should be processed sequentially. But
since MKDIR is recorded on all the bricks, The brick 'brick2/brick3'
processed MKDIR first before 'brick1' causing out of order syncing
and created directory sym_400 first.
Now 'brick1' processed it's changelog.
CREATE file1 -> succeeds
SYMLINK sym_400 -> No longer present in master. Ignored
RENAME sym_400 renamed_sym_400
While processing RENAME, if source('sym_400') doesn't
present, destination('renamed_sym_400') is created. But
geo-rep stats the name 'sym_400' to confirm source file's
presence. In this race, since source name 'sym_400' is
present as directory, it doesn't create destination.
Hence RENAME is ignored.
Fix:
The fix is not rely only on stat of source name during RENAME.
It should stat the name and if the name is present, gfid should
be same. Only then it can conclude the presence of source.
fixes: bz#1600405
Change-Id: I9fbec4f13ca6a182798a7f81b356fe2003aff969
Signed-off-by: Kotresh HR <khiremat at redhat.com>
Referenced Bugs:
https://bugzilla.redhat.com/show_bug.cgi?id=1600405
[Bug 1600405] [geo-rep]: Geo-replication not syncing renamed symlink
--
You are receiving this mail because:
You are on the CC list for the bug.
Unsubscribe from this bug https://bugzilla.redhat.com/token.cgi?t=Z3a1SLwDrF&a=cc_unsubscribe
More information about the Bugs
mailing list