diff options
| -rw-r--r-- | xlators/features/marker/utils/syncdaemon/master.py | 16 | ||||
| -rw-r--r-- | xlators/features/marker/utils/syncdaemon/resource.py | 9 | 
2 files changed, 16 insertions, 9 deletions
diff --git a/xlators/features/marker/utils/syncdaemon/master.py b/xlators/features/marker/utils/syncdaemon/master.py index 1abd0325268..0f12f96cf4f 100644 --- a/xlators/features/marker/utils/syncdaemon/master.py +++ b/xlators/features/marker/utils/syncdaemon/master.py @@ -117,7 +117,21 @@ class GMaster(object):                  return          if path == '.':              self.change_seen = True -        dem, des = ( x.server.entries(path) for x in (self.master, self.slave) ) +        try: +            dem = self.master.server.entries(path) +        except OSError: +            self.add_failjob(path, 'local-entries-fail') +            return +        try: +            des = self.slave.server.entries(path) +        except OSError: +            self.slave.server.purge(path) +            try: +                self.slave.server.mkdir(path) +                des = self.slave.server.entries(path) +            except OSError: +                self.add_failjob(path, 'remote-entries-fail') +                return          dd = set(des) - set(dem)          if dd:              self.slave.server.purge(path, dd) diff --git a/xlators/features/marker/utils/syncdaemon/resource.py b/xlators/features/marker/utils/syncdaemon/resource.py index 55c6e4dd78b..dc3279d5290 100644 --- a/xlators/features/marker/utils/syncdaemon/resource.py +++ b/xlators/features/marker/utils/syncdaemon/resource.py @@ -93,14 +93,7 @@ class Server(object):      @staticmethod      def entries(path): -        try: -            return os.listdir(path) -        except OSError: -            ex = sys.exc_info()[1] -            if ex.errno == ENOTDIR: -                return [] -            else: -                raise +        return os.listdir(path)      @classmethod      def purge(cls, path, entries=None):  | 
