Bug 1228079

Summary: [Backup]: Crash observed when keyboard interrupt is encountered in the middle of any glusterfind command
Product: [Red Hat Storage] Red Hat Gluster Storage Reporter: Sweta Anandpara <sanandpa>
Component: glusterfindAssignee: Aravinda VK <avishwan>
Status: CLOSED ERRATA QA Contact: Anil Shah <ashah>
Severity: medium Docs Contact:
Priority: unspecified    
Version: rhgs-3.1CC: annair, asrivast, avishwan, byarlaga, khiremat, rhinduja, rhs-bugs, sankarshan, storage-qa-internal
Target Milestone: ---Keywords: ZStream
Target Release: RHGS 3.1.2   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.7.5-7 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
: 1243812 (view as bug list) Environment:
Last Closed: 2016-03-01 05:25:18 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: 1223636, 1243812, 1260783, 1282465    

Description Sweta Anandpara 2015-06-04 07:37:18 UTC
Description of problem:
While executing any of the glusterfind CLI commands, if Ctrl+C is pressed before the command is completed, it results in a crash with the below trace:

[root@dhcp43-48 ~]# glusterfind pre sessn1 nash outn1.txt --output-prefix /tmp/ -N
^CProcess Process-3:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
Process Process-2:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
Traceback (most recent call last):
  File "/usr/bin/glusterfind", line 17, in <module>
    main()
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 519, in main
    globals()["mode_" + args.mode](session_dir, args)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 380, in mode_pre
    run_cmd_nodes("pre", args, start=start)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 161, in run_cmd_nodes
    p.join()
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 119, in join
Process Process-1:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
Process Process-4:
Traceback (most recent call last):
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 232, in _bootstrap
    self.run()
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 65, in node_cmd
    execute(cmd, exit_msg="%s - %s failed" % (host, task), logger=logger)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 164, in execute
    (out, err) = p.communicate()
  File "/usr/lib64/python2.6/subprocess.py", line 732, in communicate
    self.run()
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 65, in node_cmd
    execute(cmd, exit_msg="%s - %s failed" % (host, task), logger=logger)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 164, in execute
    (out, err) = p.communicate()
  File "/usr/lib64/python2.6/subprocess.py", line 732, in communicate
    res = self._popen.wait(timeout)
  File "/usr/lib64/python2.6/multiprocessing/forking.py", line 122, in wait
    self.run()
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 65, in node_cmd
    execute(cmd, exit_msg="%s - %s failed" % (host, task), logger=logger)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 164, in execute
    (out, err) = p.communicate()
  File "/usr/lib64/python2.6/subprocess.py", line 732, in communicate
    self.run()
  File "/usr/lib64/python2.6/multiprocessing/process.py", line 88, in run
    self._target(*self._args, **self._kwargs)
  File "/usr/libexec/glusterfs/glusterfind/main.py", line 65, in node_cmd
    execute(cmd, exit_msg="%s - %s failed" % (host, task), logger=logger)
  File "/usr/libexec/glusterfs/glusterfind/utils.py", line 164, in execute
    (out, err) = p.communicate()
  File "/usr/lib64/python2.6/subprocess.py", line 732, in communicate
    stdout, stderr = self._communicate(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1316, in _communicate
    stdout, stderr = self._communicate_with_poll(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1388, in _communicate_with_poll
    ready = poller.poll(self._remaining_time(endtime))
KeyboardInterrupt
    stdout, stderr = self._communicate(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1316, in _communicate
    stdout, stderr = self._communicate_with_poll(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1388, in _communicate_with_poll
    ready = poller.poll(self._remaining_time(endtime))
KeyboardInterrupt
    stdout, stderr = self._communicate(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1316, in _communicate
    stdout, stderr = self._communicate_with_poll(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1388, in _communicate_with_poll
    ready = poller.poll(self._remaining_time(endtime))
KeyboardInterrupt
    stdout, stderr = self._communicate(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1316, in _communicate
    stdout, stderr = self._communicate_with_poll(input, endtime)
  File "/usr/lib64/python2.6/subprocess.py", line 1388, in _communicate_with_poll
    ready = poller.poll(self._remaining_time(endtime))
KeyboardInterrupt
    return self.poll(0)
  File "/usr/lib64/python2.6/multiprocessing/forking.py", line 107, in poll
    pid, sts = os.waitpid(self.pid, flag)
KeyboardInterrupt


Version-Release number of selected component (if applicable):
glusterfs-3.7.0-3.el6rhs.x86_64

How reproducible:    Always

Additional info:

Comment 3 Aravinda VK 2015-07-16 13:11:52 UTC
Upstream patch is sent
http://review.gluster.org/#/c/11698/

Comment 6 Aravinda VK 2015-08-18 09:46:38 UTC
Patch posted upstream http://review.gluster.org/#/c/11698/

Comment 11 Aravinda VK 2015-11-20 10:23:50 UTC
Downstream patch https://code.engineering.redhat.com/gerrit/61973

Comment 12 Anil Shah 2015-12-04 10:17:31 UTC
[root@rhs001 ~]# glusterfind pre new_vol0 vol0  outn1.txt --output-prefix /tmp/
^C

[root@rhs001 ~]# glusterfind create new_vol0 vol0
^C

No trace back observed when keyboard interrupt is encountered in the middle of glusterfind command.

Bug verified on bug glusterfs-3.7.5-8.el7rhgs.x86_64

Comment 14 errata-xmlrpc 2016-03-01 05:25:18 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://rhn.redhat.com/errata/RHBA-2016-0193.html