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: 1232912
Change-Id: I02015f508d901e4a74dd48e1c52423e78eaf1dcd
Signed-off-by: Aravinda VK <avishwan@redhat.com>
Reviewed-on: http://review.gluster.org/11296
Reviewed-by: Kotresh HR <khiremat@redhat.com>
Tested-by: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Venky Shankar <vshankar@redhat.com>
Tested-by: Gluster Build System <jenkins@build.gluster.com>
This commit is contained in:
Aravinda VK 2015-06-17 15:46:01 -04:00 committed by Venky Shankar
parent 257668d97e
commit b335fbe14e
2 changed files with 6 additions and 6 deletions

View File

@ -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()

View File

@ -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,