Uploaded image for project: 'Parquet'
  1. Parquet
  2. PARQUET-1937

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

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Minor
    • Resolution: Unresolved
    • Affects Version/s: 1.11.1
    • Fix Version/s: None
    • Component/s: parquet-mr
    • Labels:
      None
    • Environment:

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

       

      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.

       

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              john.lilley@redpoint.net john lilley
            • Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

              • Created:
                Updated: