diff options
| -rw-r--r-- | tools/glusterfind/src/changelog.py | 60 | ||||
| -rw-r--r-- | tools/glusterfind/src/main.py | 7 | 
2 files changed, 43 insertions, 24 deletions
diff --git a/tools/glusterfind/src/changelog.py b/tools/glusterfind/src/changelog.py index fd2384beccf..5939d487a4d 100644 --- a/tools/glusterfind/src/changelog.py +++ b/tools/glusterfind/src/changelog.py @@ -61,10 +61,13 @@ def pgfid_to_path(brick, changelog_data):          if row[0] == "":              continue -        path = symlink_gfid_to_path(brick, row[0]) -        path = output_path_prepare(path, args.output_prefix) - -        changelog_data.gfidpath_set_path1(path, row[0]) +        try: +            path = symlink_gfid_to_path(brick, row[0]) +            path = output_path_prepare(path, args.output_prefix) +            changelog_data.gfidpath_set_path1(path, row[0]) +        except (IOError, OSError) as e: +            logger.warn("Error converting to path: %s" % e) +            continue      # pgfid2 to path2 in case of RENAME      for row in changelog_data.gfidpath_get_distinct("pgfid2", @@ -74,13 +77,14 @@ def pgfid_to_path(brick, changelog_data):          if row[0] == "":              continue -        path = symlink_gfid_to_path(brick, row[0]) -        if path == "": +        try: +            path = symlink_gfid_to_path(brick, row[0]) +            path = output_path_prepare(path, args.output_prefix) +            changelog_data.gfidpath_set_path2(path, row[0]) +        except (IOError, OSError) as e: +            logger.warn("Error converting to path: %s" % e)              continue -        path = output_path_prepare(path, args.output_prefix) -        changelog_data.gfidpath_set_path2(path, row[0]) -  def populate_pgfid_and_inodegfid(brick, changelog_data):      """ @@ -94,14 +98,14 @@ def populate_pgfid_and_inodegfid(brick, changelog_data):          p = os.path.join(brick, ".glusterfs", gfid[0:2], gfid[2:4], gfid)          if os.path.islink(p):              # It is a Directory if GFID backend path is symlink -            path = symlink_gfid_to_path(brick, gfid) -            if path == "": +            try: +                path = symlink_gfid_to_path(brick, gfid) +                path = output_path_prepare(path, args.output_prefix) +                changelog_data.gfidpath_update({"path1": path}, +                                                {"gfid": gfid}) +            except (IOError, OSError) as e: +                logger.warn("Error converting to path: %s" % e)                  continue - -            path = output_path_prepare(path, args.output_prefix) - -            changelog_data.gfidpath_update({"path1": path}, -                                           {"gfid": gfid})          else:              try:                  # INODE and GFID to inodegfid table @@ -161,12 +165,16 @@ def gfid_to_path_using_pgfid(brick, changelog_data, args):                     conf.get_opt("brick_ignore_dirs").split(",")]      for row in changelog_data.pgfid_get(): -        path = symlink_gfid_to_path(brick, row[0]) -        find(os.path.join(brick, path), -             callback_func=output_callback, -             filter_func=inode_filter, -             ignore_dirs=ignore_dirs, -             subdirs_crawl=False) +        try: +            path = symlink_gfid_to_path(brick, row[0]) +            find(os.path.join(brick, path), +                callback_func=output_callback, +                filter_func=inode_filter, +                ignore_dirs=ignore_dirs, +                subdirs_crawl=False) +        except (IOError, OSError) as e: +            logger.warn("Error converting to path: %s" % e) +            continue  def gfid_to_path_using_batchfind(brick, changelog_data): @@ -291,8 +299,12 @@ def get_changes(brick, hash_dir, log_file, start, end, args):                  # again in list                  if change.endswith(".%s" % start):                      continue -                parse_changelog_to_db(changelog_data, change) -                libgfchangelog.cl_history_done(change) +                try: +                    parse_changelog_to_db(changelog_data, change) +                    libgfchangelog.cl_history_done(change) +                except IOError as e: +                    logger.warn("Error parsing changelog file %s: %s" % +                        (change, e))              changelog_data.commit()      except libgfchangelog.ChangelogException as e: diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py index 850024be2fe..5d5058f761b 100644 --- a/tools/glusterfind/src/main.py +++ b/tools/glusterfind/src/main.py @@ -352,6 +352,13 @@ def mode_create(session_dir, args):          logger.info("Volume option set %s, changelog.changelog on"                      % args.volume) +        execute(["gluster", "volume", "set", +                 args.volume, "changelog.capture-del-path", "on"], +                exit_msg="Failed to set volume option " +                "changelog.capture-del-path on", logger=logger) +        logger.info("Volume option set %s, changelog.capture-del-path on" +                    % args.volume) +      # Add Rollover time to current time to make sure changelogs      # will be available if we use this time as start time      time_to_update = int(time.time()) + get_changelog_rollover_time(  | 
