[ 
https://issues.apache.org/jira/browse/PARQUET-1937?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

john lilley updated PARQUET-1937:
---------------------------------
    Description: 
If you download a parquet-tools jar from e.g. maven central and simply run it 
without the "hadoop" command prefix:

{{[jlilley@rpb-dev-cent7-1 ~]$ wget 
[https://repo1.maven.org/maven2/org/apache/parquet/parquet-tools/1.11.1/parquet-tools-1.11.1.jar]}}
 {{...}}

{{[jlilley@rpb-dev-cent7-1 ~]$ java -jar parquet-tools-1.11.1.jar --help}}
 {{[jlilley@rpb-dev-cent7-1 ~]$}}

it will fail because the hadoop dependencies are missing, and will fail 
silently because System.out and System.err have been replaced with VoidStream:

{{System.setOut(VoidStream);}}
 {{System.setErr(VoidStream);}}

Because of this, the missing-class exceptions are not reported and user is left 
scratching head and wondering what happened.  It is unclear why the message 
goes unreported, because the exception _should_ be printed to Main.err by die()

catch (Throwable th) {
 {{   if (debug) th.printStackTrace(Main.err);}}
 {{   die(th, false, name, command);}}
 }

However, commenting out the System.setOut() and System.setErr() lines does 
indeed cause the stack trace to be shown.

 

  was:
If you download a parquet-tools jar from e.g. maven central and simply run it 
without the "hadoop" command prefix:

{{[jlilley@rpb-dev-cent7-1 ~]$ wget 
[https://repo1.maven.org/maven2/org/apache/parquet/parquet-tools/1.11.1/parquet-tools-1.11.1.jar]}}
 {{...}}

{{[jlilley@rpb-dev-cent7-1 ~]$ java -jar parquet-tools-1.11.1.jar --help}}
 {{[jlilley@rpb-dev-cent7-1 ~]$}}

it will fail because the hadoop dependencies are missing, and will fail 
silently because System.out and System.err have been replaced with VoidStream:

{{System.setOut(VoidStream);}}
 {{System.setErr(VoidStream);}}

Because of this, the missing-class exceptions are not reported and user is left 
scratching head and wondering what happened.  It is unclear why the message 
goes unreported, because the exception _should_ be printed to Main.err by die()

catch (Throwable th) {
 {{   if (debug) th.printStackTrace(Main.err);}}
 {{   die(th, false, name, command);}}
 }

 


> parquet-tools class-not-found failures are silent and therefore not helpful
> ---------------------------------------------------------------------------
>
>                 Key: PARQUET-1937
>                 URL: https://issues.apache.org/jira/browse/PARQUET-1937
>             Project: Parquet
>          Issue Type: Bug
>          Components: parquet-mr
>    Affects Versions: 1.11.1
>         Environment: I've tried this on both CentOS7 and Windows 10, using 
> JDK 1.8.0_211
>  
>            Reporter: john lilley
>            Priority: Minor
>
> If you download a parquet-tools jar from e.g. maven central and simply run it 
> without the "hadoop" command prefix:
> {{[jlilley@rpb-dev-cent7-1 ~]$ wget 
> [https://repo1.maven.org/maven2/org/apache/parquet/parquet-tools/1.11.1/parquet-tools-1.11.1.jar]}}
>  {{...}}
> {{[jlilley@rpb-dev-cent7-1 ~]$ java -jar parquet-tools-1.11.1.jar --help}}
>  {{[jlilley@rpb-dev-cent7-1 ~]$}}
> it will fail because the hadoop dependencies are missing, and will fail 
> silently because System.out and System.err have been replaced with VoidStream:
> {{System.setOut(VoidStream);}}
>  {{System.setErr(VoidStream);}}
> Because of this, the missing-class exceptions are not reported and user is 
> left scratching head and wondering what happened.  It is unclear why the 
> message goes unreported, because the exception _should_ be printed to 
> Main.err by die()
> catch (Throwable th) {
>  {{   if (debug) th.printStackTrace(Main.err);}}
>  {{   die(th, false, name, command);}}
>  }
> However, commenting out the System.setOut() and System.setErr() lines does 
> indeed cause the stack trace to be shown.
>  



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to