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:
Upstream patch is sent http://review.gluster.org/#/c/11698/
Patch posted upstream http://review.gluster.org/#/c/11698/
Downstream patch https://code.engineering.redhat.com/gerrit/61973
[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
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