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:
parent
257668d97e
commit
b335fbe14e
@ -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()
|
||||
|
@ -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,
|
||||
|
Loading…
x
Reference in New Issue
Block a user