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.


---

Reply via email to