You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
4.9 KiB
113 lines
4.9 KiB
From 1ca8a545833e0a6e674984245338b8675ddc58bc Mon Sep 17 00:00:00 2001 |
|
From: Kotresh HR <khiremat@redhat.com> |
|
Date: Fri, 10 Jan 2020 16:48:14 +0530 |
|
Subject: [PATCH 348/349] glusterfind: Fix py2/py3 issues |
|
|
|
1. In dictionary values(), returns list in py2 and not in py3. |
|
So explicitly convert it into list. |
|
2. xattr module returns values in bytes. So explicitly convert |
|
them to str to work both with py2 and py3 |
|
|
|
Backport of: |
|
> Patch: https://review.gluster.org/23993 |
|
> fixes: bz#1789439 |
|
> Change-Id: I27a639cda4f7a4ece9744a97c3d16e247906bd94 |
|
> Signed-off-by: Kotresh HR <khiremat@redhat.com> |
|
|
|
BUG: 1789447 |
|
Change-Id: I27a639cda4f7a4ece9744a97c3d16e247906bd94 |
|
Signed-off-by: Kotresh HR <khiremat@redhat.com> |
|
Reviewed-on: https://code.engineering.redhat.com/gerrit/189215 |
|
Reviewed-by: Shwetha Acharya <sacharya@redhat.com> |
|
Tested-by: RHGS Build Bot <nigelb@redhat.com> |
|
Reviewed-by: Hari Gowtham Gopal <hgowtham@redhat.com> |
|
Reviewed-by: Sunny Kumar <sunkumar@redhat.com> |
|
--- |
|
tools/glusterfind/src/changelog.py | 14 +++++++++----- |
|
tools/glusterfind/src/main.py | 8 ++++---- |
|
2 files changed, 13 insertions(+), 9 deletions(-) |
|
|
|
diff --git a/tools/glusterfind/src/changelog.py b/tools/glusterfind/src/changelog.py |
|
index d8f97e0..d972fb5 100644 |
|
--- a/tools/glusterfind/src/changelog.py |
|
+++ b/tools/glusterfind/src/changelog.py |
|
@@ -14,6 +14,7 @@ import sys |
|
import time |
|
import xattr |
|
import logging |
|
+from gfind_py2py3 import bytearray_to_str |
|
from argparse import ArgumentParser, RawDescriptionHelpFormatter |
|
import hashlib |
|
try: |
|
@@ -105,9 +106,10 @@ def populate_pgfid_and_inodegfid(brick, changelog_data): |
|
changelog_data.inodegfid_add(os.stat(p).st_ino, gfid) |
|
file_xattrs = xattr.list(p) |
|
for x in file_xattrs: |
|
- if x.startswith("trusted.pgfid."): |
|
+ x_str = bytearray_to_str(x) |
|
+ if x_str.startswith("trusted.pgfid."): |
|
# PGFID in pgfid table |
|
- changelog_data.pgfid_add(x.split(".")[-1]) |
|
+ changelog_data.pgfid_add(x_str.split(".")[-1]) |
|
except (IOError, OSError): |
|
# All OS Errors ignored, since failures will be logged |
|
# in End. All GFIDs present in gfidpath table |
|
@@ -122,10 +124,12 @@ def enum_hard_links_using_gfid2path(brick, gfid, args): |
|
try: |
|
file_xattrs = xattr.list(p) |
|
for x in file_xattrs: |
|
- if x.startswith("trusted.gfid2path."): |
|
+ x_str = bytearray_to_str(x) |
|
+ if x_str.startswith("trusted.gfid2path."): |
|
# get the value for the xattr i.e. <PGFID>/<BN> |
|
- v = xattr.getxattr(p, x) |
|
- pgfid, bn = v.split(os.sep) |
|
+ v = xattr.getxattr(p, x_str) |
|
+ v_str = bytearray_to_str(v) |
|
+ pgfid, bn = v_str.split(os.sep) |
|
try: |
|
path = symlink_gfid_to_path(brick, pgfid) |
|
fullpath = os.path.join(path, bn) |
|
diff --git a/tools/glusterfind/src/main.py b/tools/glusterfind/src/main.py |
|
index fefe4a3..dfc9d07 100644 |
|
--- a/tools/glusterfind/src/main.py |
|
+++ b/tools/glusterfind/src/main.py |
|
@@ -633,7 +633,7 @@ def mode_query(session_dir, args): |
|
# Merger |
|
if args.full: |
|
if len(g_pid_nodefile_map) > 0: |
|
- cmd = ["sort", "-u"] + g_pid_nodefile_map.values() + \ |
|
+ cmd = ["sort", "-u"] + list(g_pid_nodefile_map.values()) + \ |
|
["-o", args.outfile] |
|
execute(cmd, |
|
exit_msg="Failed to merge output files " |
|
@@ -645,7 +645,7 @@ def mode_query(session_dir, args): |
|
# Read each Changelogs db and generate finaldb |
|
create_file(args.outfile, exit_on_err=True, logger=logger) |
|
outfilemerger = OutputMerger(args.outfile + ".db", |
|
- g_pid_nodefile_map.values()) |
|
+ list(g_pid_nodefile_map.values())) |
|
write_output(args.outfile, outfilemerger, args.field_separator) |
|
|
|
try: |
|
@@ -702,7 +702,7 @@ def mode_pre(session_dir, args): |
|
# Merger |
|
if args.full: |
|
if len(g_pid_nodefile_map) > 0: |
|
- cmd = ["sort", "-u"] + g_pid_nodefile_map.values() + \ |
|
+ cmd = ["sort", "-u"] + list(g_pid_nodefile_map.values()) + \ |
|
["-o", args.outfile] |
|
execute(cmd, |
|
exit_msg="Failed to merge output files " |
|
@@ -714,7 +714,7 @@ def mode_pre(session_dir, args): |
|
# Read each Changelogs db and generate finaldb |
|
create_file(args.outfile, exit_on_err=True, logger=logger) |
|
outfilemerger = OutputMerger(args.outfile + ".db", |
|
- g_pid_nodefile_map.values()) |
|
+ list(g_pid_nodefile_map.values())) |
|
write_output(args.outfile, outfilemerger, args.field_separator) |
|
|
|
try: |
|
-- |
|
1.8.3.1 |
|
|
|
|