From 8d7178cf68cb11e02ff5c9211dcda1850a550e0e Mon Sep 17 00:00:00 2001 From: Brad Gonzales Date: Thu, 20 Mar 2014 16:39:16 -0500 Subject: [PATCH] Issue #2688 Return value from subprocess.check_output is not return code, but is process output. Updated check for success. Change-Id: If06cb77406f4c5dd07a356236b7a8cae908cd2fd Former-commit-id: 8fb43f1e2a108af18c1a6908bed54e8ca71369e0 --- .../pypies/pypies/impl/H5pyDataStore.py | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/pythonPackages/pypies/pypies/impl/H5pyDataStore.py b/pythonPackages/pypies/pypies/impl/H5pyDataStore.py index 3237e1ace1..3877b978ac 100644 --- a/pythonPackages/pypies/pypies/impl/H5pyDataStore.py +++ b/pythonPackages/pypies/pypies/impl/H5pyDataStore.py @@ -34,6 +34,9 @@ # 02/12/13 #1608 randerso Added support for explicitly deleting groups and datasets # Nov 14, 2013 2393 bclement removed interpolation # Jan 17, 2014 2688 bclement added file action and subprocess error logging +# Mar 19, 2014 2688 bgonzale added more subprocess logging. Return value from +# subprocess.check_output is not return code, but is +# process output. h5repack has no output without -v arg. # # @@ -773,14 +776,24 @@ class H5pyDataStore(IDataStore.IDataStore): else: repackedFullPath = filepath.replace(basePath, outDir) cmd = ['h5repack', '-f', compression, filepath, repackedFullPath] + if logger.isEnabledFor(logging.DEBUG): + cmd.insert(1, '-v') + success = True + ret = None try: ret = subprocess.check_output(cmd, stderr=subprocess.STDOUT) - success = (ret == 0) + # if CalledProcessError is not raised then success except subprocess.CalledProcessError, e: logger.error("Subprocess call failed: " + str(e)) + logger.error("Subprocess args: " + " ".join(cmd)) logger.error("Subprocess output: " + e.output) success = False - + except: + logger.exception("Unexpected error from h5repack") + success = False + finally: + logger.debug("h5repack output: " + str(ret)) + if success: # repack was successful, replace the old file if we did it in the # same directory, otherwise leave it alone