apache / apache/parquet-java

parquet-tools class-not-found failures are silent and therefore not helpful

Offen
#2,542 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Component: Java Component: Parquet Priority: Minor Type: bug
Vorherrschende Sprache
Java
Sterne
3.1k
Forks
1.6k
Ø Merge
3 T. 12 Std.
Gemergte PRs (30 T.)
33

Beschreibung

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.

 

**Environment**: I've tried this on both CentOS7 and Windows 10, using JDK 1.8.0_211

 
**Reporter**: [john lilley](https://issues.apache.org/jira/secure/ViewProfile.jspa?name=john.lilley@redpoint.net)

**Note**: *This issue was originally created as [PARQUET-1937](https://issues.apache.org/jira/browse/PARQUET-1937). Please see the [migration documentation](https://issues.apache.org/jira/browse/PARQUET-2502) for further details.*

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne damit, den Startvorgang von parquet-tools rund um die Ersetzungen von System.setOut(System.setErr), VoidStream und den die()-Pfad nachzuverfolgen, der an Main.err meldet. Reproduziere den direkten Aufruf von java -jar ohne das Präfix hadoop und vergleiche ihn mit dem Verhalten, nachdem diese Streams Fehler nicht mehr unterdrücken. Erledigt ist die Aufgabe, wenn Fehler aufgrund fehlender Klassen gemeldet werden, statt keine Ausgabe zu erzeugen.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
java
Bereich
cli
Issue-Typ
Bug
Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
35/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.