Github user denalex commented on a diff in the pull request: https://github.com/apache/incubator-hawq/pull/1334#discussion_r166099466 --- Diff: pxf/pxf-service/src/main/java/org/apache/hawq/pxf/service/rest/WritableResource.java --- @@ -143,36 +142,38 @@ private static synchronized Response synchronizedWriteResponse(Bridge bridge, private static Response writeResponse(Bridge bridge, String path, - InputStream inputStream) throws Exception { - - String returnMsg; - + InputStream inputStream) + throws Exception { // Open the output file bridge.beginIteration(); - long totalWritten = 0; + Exception ex = null; // dataStream will close automatically in the end of the try. // inputStream is closed by dataStream.close(). try (DataInputStream dataStream = new DataInputStream(inputStream)) { while (bridge.setNext(dataStream)) { ++totalWritten; } - } catch (ClientAbortException e) { - LOG.debug("Remote connection closed by HAWQ", e); - } catch (Exception ex) { - LOG.debug("totalWritten so far " + totalWritten + " to " + path); - throw ex; + } catch (ClientAbortException cae) { + LOG.error("Remote connection closed by HAWQ", cae); + } catch (Exception e) { + LOG.error("Exception: totalWritten so far " + totalWritten + " to " + path, e); + ex = e; } finally { try { bridge.endIteration(); } catch (Exception e) { - // ignore ... any significant errors should already have been handled + if (ex == null) + ex = e; --- End diff -- Another way would be to preserve throwing the exception inside original catch block (line 162), then here you would say ``` if (ex == null) throw e; else throw ex; ``` and you would not need the block below (lines 170-172) as the original will still be thrown if endIterations() completes without an error.
---