summaryrefslogtreecommitdiffstats
path: root/geo-replication
diff options
context:
space:
mode:
authorAravinda VK <avishwan@redhat.com>2015-06-17 15:46:01 -0400
committerVijay Bellur <vbellur@redhat.com>2015-06-28 07:47:40 -0700
commit088711acdaaf8935718171bd79ae053ae8fc3d75 (patch)
tree893da112e4d3354d4a9d77542d5b8b08491d3ebc /geo-replication
parent8305c0e52b0933d55bb08e3d0b42da8b39e9cab9 (diff)
geo-rep: ignore ESTALE as ENOENT
When DHT can't resolve a File it raises ESTALE, ignore ESTALE errors same as ENOENT after retry. Affected places: Xattr.lgetxattr os.listdir os.link Xattr.lsetxattr os.chmod os.chown os.utime os.readlink BUG: 1236093 Change-Id: I53f8dfa47911da93e0dcc20213afcbb47a14ccd8 Reviewed-On: http://review.gluster.org/11296 Original-Author: Aravinda VK <avishwan@redhat.com> Signed-off-by: Kotresh HR <khiremat@redhat.com> Reviewed-on: http://review.gluster.org/11430 Tested-by: NetBSD Build System <jenkins@build.gluster.org> Reviewed-by: Milind Changire <mchangir@redhat.com> Reviewed-by: Vijay Bellur <vbellur@redhat.com>
Diffstat (limited to 'geo-replication')
-rw-r--r--geo-replication/syncdaemon/master.py4
-rw-r--r--geo-replication/syncdaemon/resource.py8
2 files changed, 6 insertions, 6 deletions
diff --git a/geo-replication/syncdaemon/master.py b/geo-replication/syncdaemon/master.py
index 6c96a02a74b..37be4fc3adc 100644
--- a/geo-replication/syncdaemon/master.py
+++ b/geo-replication/syncdaemon/master.py
@@ -18,7 +18,7 @@ import fcntl
import string
import errno
import tarfile
-from errno import ENOENT, ENODATA, EEXIST, EACCES, EAGAIN
+from errno import ENOENT, ENODATA, EEXIST, EACCES, EAGAIN, ESTALE
from threading import Condition, Lock
from datetime import datetime
from gconf import gconf
@@ -853,7 +853,7 @@ class GMasterChangelogMixin(GMasterCommon):
entry_update()
entries.append(edct(ty, stat=st, entry=en, gfid=gfid))
elif ty == 'SYMLINK':
- rl = errno_wrap(os.readlink, [en], [ENOENT])
+ rl = errno_wrap(os.readlink, [en], [ENOENT], [ESTALE])
if isinstance(rl, int):
continue
entry_update()
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py
index ba92a4a53fd..c73347aaf17 100644
--- a/geo-replication/syncdaemon/resource.py
+++ b/geo-replication/syncdaemon/resource.py
@@ -377,7 +377,7 @@ class Server(object):
def gfid_mnt(cls, gfidpath):
return errno_wrap(Xattr.lgetxattr,
[gfidpath, 'glusterfs.gfid.string',
- cls.GX_GFID_CANONICAL_LEN], [ENOENT])
+ cls.GX_GFID_CANONICAL_LEN], [ENOENT], [ESTALE])
@classmethod
@_pathguard
@@ -647,7 +647,7 @@ class Server(object):
return
names = []
- names = errno_wrap(os.listdir, [path], [ENOENT])
+ names = errno_wrap(os.listdir, [path], [ENOENT], [ESTALE])
if isinstance(names, int):
return
@@ -708,7 +708,7 @@ class Server(object):
else:
cmd_ret = errno_wrap(os.link,
[slink, entry],
- [ENOENT, EEXIST])
+ [ENOENT, EEXIST], [ESTALE])
collect_failure(e, cmd_ret)
elif op == 'SYMLINK':
blob = entry_pack_symlink(gfid, bname, e['link'], e['stat'])
@@ -722,7 +722,7 @@ class Server(object):
else:
cmd_ret = errno_wrap(os.rename,
[entry, en],
- [ENOENT, EEXIST])
+ [ENOENT, EEXIST], [ESTALE])
collect_failure(e, cmd_ret)
if blob:
cmd_ret = errno_wrap(Xattr.lsetxattr,