Bug 1733970

Summary: Glusterfind pre command fails after files are modified from mount point
Product: [Red Hat Storage] Red Hat Gluster Storage Reporter: Vinayak Papnoi <vpapnoi>
Component: glusterfindAssignee: hari gowtham <hgowtham>
Status: CLOSED ERRATA QA Contact: Vinayak Papnoi <vpapnoi>
Severity: high Docs Contact:
Priority: unspecified    
Version: rhgs-3.5CC: amukherj, hgowtham, rhs-bugs, rkothiya, storage-qa-internal, vdas
Target Milestone: ---Keywords: Regression
Target Release: RHGS 3.5.0   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-6.0-14 Doc Type: No Doc Update
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-10-30 12:22:31 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1696809    

Description Vinayak Papnoi 2019-07-29 11:15:18 UTC
Description of problem:
-----------------------

After creating files from mount point and performing glusterfind pre followed by post, if the contents of the files are modified then the next glusterfind pre fails with the following errors:

# glusterfind pre alpha-sess alpha /tmp/alpha-mod.txt
10.70.35.65 - pre failed; stdout (including remote stderr):
Connection to 10.70.35.65 closed.

stderr:
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

10.70.35.80 - pre failed; stdout (including remote stderr):
Connection to 10.70.35.80 closed.

stderr:
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

10.70.35.82 - pre failed; stdout (including remote stderr):
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

stderr:

10.70.35.236 - pre failed; stdout (including remote stderr):
Connection to 10.70.35.236 closed.

stderr:
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

10.70.35.35 - pre failed; stdout (including remote stderr):
Connection to 10.70.35.35 closed.

stderr:
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

10.70.35.220 - pre failed; stdout (including remote stderr):
Connection to 10.70.35.220 closed.

stderr:
Traceback (most recent call last):
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 421, in <module>
    actual_end = changelog_crawl(args.brick, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 355, in changelog_crawl
    return get_changes(brick, working_dir, log_file, start, end, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 318, in get_changes
    gfid_to_path_using_pgfid(brick, changelog_data, args)
  File "/usr/libexec/glusterfs/glusterfind/changelog.py", line 167, in gfid_to_path_using_pgfid
    subdirs_crawl=False)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 77, in find
    callback_func(full_path, filter_result, is_dir)
TypeError: output_callback() takes exactly 2 arguments (3 given)

Generated output file /tmp/alpha-mod.txt

# cat /tmp/alpha-mod.txt
#


The outfile gets generated but it is empty (no files get listed).


Version-Release number of selected component (if applicable):
-------------------------------------------------------------

glusterfs-6.0-9.el7rhgs.x86_64


How reproducible:
-----------------

2/2


Steps to Reproduce:
-------------------

1. Create a volume, FUSE mount it and create a glusterfind session for it
2. Create some files from the mount point using 'touch'
3. Perform glusterfind pre followed by glusterfind post
4. Modify the contents of the file
  # echo "test" > testfile
5. Perform glusterfind pre


Actual results:
---------------

Glusterfind pre fails with the error mentioned in the description. The outfile gets generated but it does not contain any of the files that were modified.


Expected results:
-----------------

Glusterfind pre should pass and the modified files must be listed in the outfile with the tag MODIFY.


Additional info:

Comment 22 errata-xmlrpc 2019-10-30 12:22:31 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2019:3249