[ 
http://issues.apache.org/jira/browse/NUTCH-143?page=comments#action_12360689 ] 

Matt Kangas commented on NUTCH-143:
-----------------------------------

I'd like to see this fixed too. It would make error-checking in wrapper scripts 
much simpler to implement.

A fix would have to touch every .java file that has a main() method, because 
the problem is that the JVM returns status=0 from main(), because main() has a 
_void_ return type, after all.

To solve this, I recommend renaming all existing "main()" methods to "doMain()" 
and adding the following to each affected file:

  /**
   * main() wrapper that returns proper exit status
   */
  public static void main(String[] args) {
    Runtime rt = Runtime.getRuntime();
    try {
      boolean status = doMain(args);
      rt.exit(status ? 0 : 1);
    }
    catch (Exception e) {
      LOG.log(Level.SEVERE, LOGPREFIX + "error, caught Exception in main()", 
e);      
      rt.exit(1);
    }
  }


> Improper error numbers returned on exit
> ---------------------------------------
>
>          Key: NUTCH-143
>          URL: http://issues.apache.org/jira/browse/NUTCH-143
>      Project: Nutch
>         Type: Bug
>     Versions: 0.8-dev
>     Reporter: Rod Taylor

>
> Nutch does not obey standard command line error numbers which can make it 
> difficult to script around commands.
> Both of the below should have exited with an error number larger than 0 
> causing the shell script to enter into the 'Failed' case.
> bash-3.00$ /opt/nutch/bin/nutch updatedb && echo "==>Success" || echo 
> "==>Failed"
> Usage: <crawldb> <segment>
> ==>Success
> bash-3.00$ /opt/nutch/bin/nutch readdb && echo "==>Success" || echo 
> "==>Failed"
> Usage: CrawlDbReader <crawldb> (-stats | -dump <out_dir> | -url <url>)
>         <crawldb>       directory name where crawldb is located
>         -stats  print overall statistics to System.out
>         -dump <out_dir> dump the whole db to a text file in <out_dir>
>         -url <url>      print information on <url> to System.out
> ==>Success
> Note that the nutch shell script functions as expected:
> bash-3.00$ /opt/nutch/bin/nutch  && echo "==>Success" || echo "==>Failed"
> Usage: nutch COMMAND
> where COMMAND is one of:
>   crawl             one-step crawler for intranets
>   readdb            read / dump crawl db
>   readlinkdb        read / dump link db
>   admin             database administration, including creation
>   inject            inject new urls into the database
>   generate          generate new segments to fetch
>   fetch             fetch a segment's pages
>   parse             parse a segment's pages
>   updatedb          update crawl db from segments after fetching
>   invertlinks       create a linkdb from parsed segments
>   index             run the indexer on parsed segments and linkdb
>   merge             merge several segment indexes
>   dedup             remove duplicates from a set of segment indexes
>   server            run a search server
>   namenode          run the NDFS namenode
>   datanode          run an NDFS datanode
>   ndfs              run an NDFS admin client
>   jobtracker        run the MapReduce job Tracker node
>   tasktracker       run a MapReduce task Tracker node
>   job               manipulate MapReduce jobs
>  or
>   CLASSNAME         run the class named CLASSNAME
> Most commands print help when invoked w/o parameters.
> ==>Failed

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira

Reply via email to