diff options
Diffstat (limited to 'tools/glusterfind')
-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( |