kasakrisz commented on code in PR #4863:
URL: https://github.com/apache/hive/pull/4863#discussion_r1433030551
##########
standalone-metastore/metastore-server/src/main/java/org/apache/hadoop/hive/metastore/tools/metatool/HiveMetaTool.java:
##########
@@ -63,8 +66,10 @@ public static void main(String[] args) {
task.execute();
} catch (Exception e) {
LOGGER.error("Exception occured", e);
+ System.exit(1);
} finally {
objectStore.shutdown();
+ System.exit(0);
Review Comment:
`HiveMetaTool.main` is called from several test example:
https://github.com/apache/hive/blob/36ce858163a19e29eafe4a8d3307191bc28fc175/itests/hive-unit/src/test/java/org/apache/hadoop/hive/metastore/tools/metatool/TestHiveMetaTool.java#L185-L187
and adding `System.exit` call causes
```
19:38:24 Command was /bin/sh -c cd
/home/jenkins/agent/workspace/hive-precommit_PR-4863/itests/hive-unit &&
/usr/lib/jvm/zulu-8-amd64/jre/bin/java -Xmx2048m -DJETTY_AVAILABLE_PROCESSORS=4
-jar
/home/jenkins/agent/workspace/hive-precommit_PR-4863/itests/hive-unit/target/surefire/surefirebooter7556721313418086862.jar
/home/jenkins/agent/workspace/hive-precommit_PR-4863/itests/hive-unit/target/surefire
2023-11-30T17-05-43_001-jvmRun1 surefire408147966509449349tmp
surefire_573372170409187255344tmp
19:38:24 Process Exit Code: 0
19:38:24 Crashed tests:
19:38:24 org.apache.hadoop.hive.metastore.tools.metatool.TestHiveMetaTool
19:38:24 at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.awaitResultsDone(ForkStarter.java:513)
19:38:24 at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.runSuitesForkPerTestSet(ForkStarter.java:460)
19:38:24 at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:301)
19:38:24 at
org.apache.maven.plugin.surefire.booterclient.ForkStarter.run(ForkStarter.java:249)
19:38:24 at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeProvider(AbstractSurefireMojo.java:1217)
19:38:24 at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.executeAfterPreconditionsChecked(AbstractSurefireMojo.java:1063)
19:38:24 at
org.apache.maven.plugin.surefire.AbstractSurefireMojo.execute(AbstractSurefireMojo.java:889)
19:38:24 at
org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:137)
19:38:24 at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:210)
19:38:24 at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:156)
19:38:24 at
org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:148)
19:38:24 at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:117)
19:38:24 at
org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:81)
19:38:24 at
org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:56)
19:38:24 at
org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
19:38:24 at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:305)
19:38:24 at
org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:192)
19:38:24 at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:105)
19:38:24 at org.apache.maven.cli.MavenCli.execute(MavenCli.java:972)
19:38:24 at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:293)
19:38:24 at org.apache.maven.cli.MavenCli.main(MavenCli.java:196)
19:38:24 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
19:38:24 at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
19:38:24 at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
19:38:24 at java.lang.reflect.Method.invoke(Method.java:498)
19:38:24 at
org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:282)
19:38:24 at
org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:225)
19:38:24 at
org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:406)
19:38:24 at
org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:347)
19:38:24 Caused by:
org.apache.maven.surefire.booter.SurefireBooterForkException: The forked VM
terminated without properly saying goodbye. VM crash or System.exit called?
```
How about refactor the main by extracting the try block to a method and this
new method would be called from tests:
```
static void createAndExecuteTask(HiveMetaToolCommandLine cl) {
if (cl.isListFSRoot()) {
task = new MetaToolTaskListFSRoot();
...
task.execute();
}
main(String[] args) {
HiveMetaToolCommandLine cl = HiveMetaToolCommandLine.parseArguments(args);
...
try {
createAndexecuteTask(cl);
}
catch (Exception ex) {
System.exit(-1);
}
finally {
...
}
System.exit(-1);
}
@Test
public void testListFSRoot() throws Exception {
HiveMetaToolCommandLine cl = HiveMetaToolCommandLine.parseArguments(new
String[] {"-listFSRoot"});
HiveMetaTool.createAndExecuteTask(cl);
...
}
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]