Skip to content

Cleanup stack trace for input validation in ingest framework #331

@chrisbennight

Description

@chrisbennight

Comes from using the default input validator. Technically it's fine, but it looks pretty bad. Basically we should have a nicer message, not the Log4J FATALS + stack trace.

for example:

[bennight@cacti ~]$ geowave-ingest -localingest
11 Apr 16:49:03 FATAL [ingest.AccumuloCommandLineOptions] - Zookeeper URL not set
11 Apr 16:49:03 FATAL [ingest.AccumuloCommandLineOptions] - Accumulo instance ID not set
11 Apr 16:49:03 FATAL [ingest.AccumuloCommandLineOptions] - Accumulo user ID not set
11 Apr 16:49:03 FATAL [ingest.AccumuloCommandLineOptions] - Accumulo password not set
11 Apr 16:49:03 FATAL [ingest.AbstractCommandLineDriver] -
org.apache.commons.cli.ParseException: Required option is missing
        at mil.nga.giat.geowave.ingest.AccumuloCommandLineOptions.parseOptions(AccumuloCommandLineOptions.java:186)
        at mil.nga.giat.geowave.ingest.local.LocalFileIngestDriver.parseOptionsInternal(LocalFileIngestDriver.java:49)
        at mil.nga.giat.geowave.ingest.AbstractCommandLineDriver.applyArguments(AbstractCommandLineDriver.java:168)
        at mil.nga.giat.geowave.ingest.AbstractCommandLineDriver.run(AbstractCommandLineDriver.java:71)
        at mil.nga.giat.geowave.ingest.IngestMain.main(IngestMain.java:51)
usage: -localingest <options>

Options:
 -b,--base <arg>               Base input file or directory to crawl with
                               one of the supported ingest types
 -c,--clear                    Clear ALL data stored with the same prefix
                               as this namespace (optional; default is to
                               append data to the namespace if it exists)
 -dim,--dimensionality <arg>   The dimensionality type for the index,
                               either 'spatial' or 'spatial-temporal'
                               (optional; default is 'spatial')
 -h,--help                     Display help
 -i,--instance-id <arg>        The Accumulo instance ID
 -l,--list                     List the available ingest types
 -n,--namespace <arg>          The table namespace (optional; default is
                               no namespace)
 -p,--password <arg>           The password for the user
 -t,--types <arg>              Explicitly set the ingest type by name (or
                               multiple comma-delimited types), if not set
                               all available ingest types will be used
 -u,--user <arg>               A valid Accumulo user ID
 -v,--visibility <arg>         The visiblity of the data ingested
                               (optional; default is 'public')
 -x,--extension <arg>          individual or comma-delimited set of file
                               extensions to accept (optional)
 -z,--zookeepers <arg>         A comma-separated list of zookeeper servers
                               that an Accumulo instance is using

should instead look something more like the following (doesn't have to be exact - just trying to convey they spirit of the change)

[bennight@cacti ~]$ geowave-ingest -localingest
Error: missing required arguments (Zookeeper URL, Accumulo instance ID, Accumulo user ID, Accumulo password).
usage: -localingest <options>

Options:
 -b,--base <arg>               Base input file or directory to crawl with
                               one of the supported ingest types
 -c,--clear                    Clear ALL data stored with the same prefix
                               as this namespace (optional; default is to
                               append data to the namespace if it exists)
 -dim,--dimensionality <arg>   The dimensionality type for the index,
                               either 'spatial' or 'spatial-temporal'
                               (optional; default is 'spatial')
 -h,--help                     Display help
 -i,--instance-id <arg>        The Accumulo instance ID
 -l,--list                     List the available ingest types
 -n,--namespace <arg>          The table namespace (optional; default is
                               no namespace)
 -p,--password <arg>           The password for the user
 -t,--types <arg>              Explicitly set the ingest type by name (or
                               multiple comma-delimited types), if not set
                               all available ingest types will be used
 -u,--user <arg>               A valid Accumulo user ID
 -v,--visibility <arg>         The visiblity of the data ingested
                               (optional; default is 'public')
 -x,--extension <arg>          individual or comma-delimited set of file
                               extensions to accept (optional)
 -z,--zookeepers <arg>         A comma-separated list of zookeeper servers
                               that an Accumulo instance is using

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions