Bug 1331759

Summary: runner: extract and return actual exit status of child
Product: [Community] GlusterFS Reporter: Prasanna Kumar Kalever <prasanna.kalever>
Component: coreAssignee: Prasanna Kumar Kalever <prasanna.kalever>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: 3.7.11CC: bugs
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: glusterfs-3.7.12 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: 1329129 Environment:
Last Closed: 2016-06-28 12:16:09 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: 1329129, 1332554    
Bug Blocks:    

Description Prasanna Kumar Kalever 2016-04-29 12:55:09 UTC
+++ This bug was initially created as a clone of Bug #1329129 +++

Description of problem:
                                                                                                         
In the current runner framework we always return the pid i.e ret value of the waitpid, as said above it is not the exit value of the child process

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

Actual results:
returning the ret value of waitpid()

Expected results:
extract the exit code and return the actual exit status of the child process

--- Additional comment from Vijay Bellur on 2016-04-21 07:44:46 EDT ---

REVIEW: http://review.gluster.org/14042 (runner: extract and return actual exit status of child) posted (#1) for review on master by Prasanna Kumar Kalever (pkalever)

--- Additional comment from Vijay Bellur on 2016-04-25 10:18:13 EDT ---

COMMIT: http://review.gluster.org/14042 committed in master by Jeff Darcy (jdarcy) 
------
commit 19fd9a371fff4ece2c617f1e7194ffcee039f21e
Author: Prasanna Kumar Kalever <prasanna.kalever>
Date:   Thu Apr 21 14:38:16 2016 +0530

    runner: extract and return actual exit status of child
    
    Intro:
    pid_t waitpid(pid_t pid, int *status, int options);
    
    The waitpid() system call suspends execution of the calling process
    until a child specified by pid  argument has  changed  state.
    
    Here the ret (pid) value is not equal to the exit status of the child process.
    Check manpages for more info on this.
    
    Problem:
    In the current runner framework we always return the pid i.e ret value
    of the waitpid, as said above it is not the exit value of the child process
    
    Solution:
    Extract the actual exit code/status in case if the child terminated normally,
    that is, by calling exit(3) or _exit(2), or by returning from main()
    
    Change-Id: Iffae99a43e540af66917b3745f21ea3c2a5a3c2d
    BUG: 1329129
    Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever>
    Reviewed-on: http://review.gluster.org/14042
    Tested-by: Prasanna Kumar Kalever <pkalever>
    Reviewed-by: Kaleb KEITHLEY <kkeithle>
    CentOS-regression: Gluster Build System <jenkins.com>
    NetBSD-regression: NetBSD Build System <jenkins.org>
    Smoke: Gluster Build System <jenkins.com>
    Reviewed-by: Jeff Darcy <jdarcy>

Comment 1 Vijay Bellur 2016-04-29 13:07:37 UTC
REVIEW: http://review.gluster.org/14116 (runner: extract and return actual exit status of child) posted (#1) for review on release-3.7 by Prasanna Kumar Kalever (pkalever)

Comment 2 Vijay Bellur 2016-05-02 03:54:41 UTC
COMMIT: http://review.gluster.org/14116 committed in release-3.7 by Atin Mukherjee (amukherj) 
------
commit d6b406b84dd840d15472b203052f7679d96dc321
Author: Prasanna Kumar Kalever <prasanna.kalever>
Date:   Fri Apr 29 18:28:20 2016 +0530

    runner: extract and return actual exit status of child
    
    Intro:
    pid_t waitpid(pid_t pid, int *status, int options);
    
    The waitpid() system call suspends execution of the calling process
    until a child specified by pid  argument has  changed  state.
    
    Here the ret (pid) value is not equal to the exit status of the child process.
    Check manpages for more info on this.
    
    Problem:
    In the current runner framework we always return the pid i.e ret value
    of the waitpid, as said above it is not the exit value of the child process
    
    Solution:
    Extract the actual exit code/status in case if the child terminated normally,
    that is, by calling exit(3) or _exit(2), or by returning from main()
    
    Backport of:
    > Change-Id: Iffae99a43e540af66917b3745f21ea3c2a5a3c2d
    > BUG: 1329129
    > Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever>
    > Reviewed-on: http://review.gluster.org/14042
    > Tested-by: Prasanna Kumar Kalever <pkalever>
    > Reviewed-by: Kaleb KEITHLEY <kkeithle>
    > CentOS-regression: Gluster Build System <jenkins.com>
    > NetBSD-regression: NetBSD Build System <jenkins.org>
    > Smoke: Gluster Build System <jenkins.com>
    > Reviewed-by: Jeff Darcy <jdarcy>
    
    Change-Id: I137b2fc120ec2b1137bf8a4e6b180f1787bf5908
    BUG: 1331759
    Signed-off-by: Prasanna Kumar Kalever <prasanna.kalever>
    Reviewed-on: http://review.gluster.org/14116
    Tested-by: Prasanna Kumar Kalever <pkalever>
    NetBSD-regression: NetBSD Build System <jenkins.org>
    CentOS-regression: Gluster Build System <jenkins.com>
    Smoke: Gluster Build System <jenkins.com>
    Reviewed-by: Kaleb KEITHLEY <kkeithle>

Comment 3 Kaushal 2016-06-28 12:16:09 UTC
This bug is getting closed because a release has been made available that should address the reported issue. In case the problem is still not fixed with glusterfs-3.7.12, please open a new bug report.

glusterfs-3.7.12 has been announced on the Gluster mailinglists [1], packages for several distributions should become available in the near future. Keep an eye on the Gluster Users mailinglist [2] and the update infrastructure for your distribution.

[1] https://www.gluster.org/pipermail/gluster-devel/2016-June/049918.html
[2] http://thread.gmane.org/gmane.comp.file-systems.gluster.user