[ 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