diff options
| author | Kotresh HR <khiremat@redhat.com> | 2017-03-20 05:21:59 -0400 | 
|---|---|---|
| committer | Aravinda VK <avishwan@redhat.com> | 2017-04-19 06:15:35 -0400 | 
| commit | 4ec3b624eb265058e3d953e96c1cb2df31c90ebd (patch) | |
| tree | 5f22143d838e1faac7414e1f8d9e1e41e6198bf7 /geo-replication/syncdaemon/resource.py | |
| parent | 9c7a0aaf73993380c70570f99023b83064a85ddf (diff) | |
geo-rep: Retry on EBUSY
Do not crash on EBUSY error. Add EBUSY
retry errno list. Crash only if the error
persists even after max retries.
> BUG: 1434018
> Signed-off-by: Kotresh HR <khiremat@redhat.com>
> Reviewed-on: https://review.gluster.org/16924
> Smoke: Gluster Build System <jenkins@build.gluster.org>
> NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
> Reviewed-by: Aravinda VK <avishwan@redhat.com>
> CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
Change-Id: Ia067ccc6547731f28f2a315d400705e616cbf662
BUG: 1441930
Signed-off-by: Kotresh HR <khiremat@redhat.com>
Reviewed-on: https://review.gluster.org/17052
Smoke: Gluster Build System <jenkins@build.gluster.org>
CentOS-regression: Gluster Build System <jenkins@build.gluster.org>
NetBSD-regression: NetBSD Build System <jenkins@build.gluster.org>
Reviewed-by: Aravinda VK <avishwan@redhat.com>
Diffstat (limited to 'geo-replication/syncdaemon/resource.py')
| -rw-r--r-- | geo-replication/syncdaemon/resource.py | 17 | 
1 files changed, 9 insertions, 8 deletions
diff --git a/geo-replication/syncdaemon/resource.py b/geo-replication/syncdaemon/resource.py index 2e607799c57..69644bc1e90 100644 --- a/geo-replication/syncdaemon/resource.py +++ b/geo-replication/syncdaemon/resource.py @@ -618,11 +618,12 @@ class Server(object):              if not matching_disk_gfid(gfid, entry):                  return -            er = errno_wrap(os.unlink, [entry], [ENOENT, ESTALE, EISDIR]) +            er = errno_wrap(os.unlink, [entry], [ENOENT, ESTALE, EISDIR], +                            [EBUSY])              if isinstance(er, int):                  if er == EISDIR:                      er = errno_wrap(os.rmdir, [entry], [ENOENT, ESTALE, -                                                        ENOTEMPTY]) +                                                        ENOTEMPTY], [EBUSY])                      if er == ENOTEMPTY:                          return er @@ -677,7 +678,7 @@ class Server(object):                  if not matching_disk_gfid(gfid, entry):                      return                  er = errno_wrap(os.remove, [fullname], [ENOENT, ESTALE, -                                                        EISDIR]) +                                                        EISDIR], [EBUSY])                  if er == EISDIR:                      recursive_rmdir(gfid, entry, fullname) @@ -685,7 +686,7 @@ class Server(object):              if not matching_disk_gfid(gfid, entry):                  return -            errno_wrap(os.rmdir, [path], [ENOENT, ESTALE]) +            errno_wrap(os.rmdir, [path], [ENOENT, ESTALE], [EBUSY])          def rename_with_disk_gfid_confirmation(gfid, entry, en):              if not matching_disk_gfid(gfid, entry): @@ -698,7 +699,7 @@ class Server(object):              cmd_ret = errno_wrap(os.rename,                                   [entry, en], -                                 [ENOENT, EEXIST], [ESTALE]) +                                 [ENOENT, EEXIST], [ESTALE, EBUSY])              collect_failure(e, cmd_ret) @@ -788,12 +789,12 @@ class Server(object):                              # we have a hard link, we can now unlink source                              try:                                  errno_wrap(os.unlink, [entry], -                                           [ENOENT, ESTALE]) +                                           [ENOENT, ESTALE], [EBUSY])                              except OSError as e:                                  if e.errno == EISDIR:                                      try:                                          errno_wrap(os.rmdir, [entry], -                                                   [ENOENT, ESTALE]) +                                                   [ENOENT, ESTALE], [EBUSY])                                      except OSError as e:                                          if e.errno == ENOTEMPTY:                                              logging.error( @@ -811,7 +812,7 @@ class Server(object):                  cmd_ret = errno_wrap(Xattr.lsetxattr,                                       [pg, 'glusterfs.gfid.newfile', blob],                                       [EEXIST, ENOENT], -                                     [ESTALE, EINVAL]) +                                     [ESTALE, EINVAL, EBUSY])                  failed = collect_failure(e, cmd_ret)                  # If directory creation is failed, return immediately before  | 
