[ https://issues.apache.org/jira/browse/MESOS-3264?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14698810#comment-14698810 ]
haosdent commented on MESOS-3264: --------------------------------- How about use Runtime.addShutdownHook to call finalize()? System.exit() is not mean JVM would run gc before exit(). > JVM can exit prematurely following framework teardown > ----------------------------------------------------- > > Key: MESOS-3264 > URL: https://issues.apache.org/jira/browse/MESOS-3264 > Project: Mesos > Issue Type: Bug > Components: java api > Affects Versions: 0.23.0, 0.24.0 > Reporter: Greg Mann > Priority: Minor > Labels: java, tech-debt > > In Java frameworks, it is possible for the JVM to begin exiting the program - > via {{System.exit()}}, for example - while teardown of native objects such as > the SchedulerDriver and associated Executors is still in progress. > {{SchedulerDriver::stop()}} will return after it has sent messages to other > actors to begin their teardown, meanwhile the JVM is free to terminate the > program and thus begin executing native object destructors while those > objects are still in use, potentially leading to a segfault. > This has manifested itself in flaky tests from the ExamplesTest suite (see > MESOS-830 and MESOS-1013), as mutexes from glog are destroyed while the > framework is still shutting down and attempting to log. > Ideally, a mechanism would exist to block the Java code until a confirmation > that framework teardown is complete has been received. -- This message was sent by Atlassian JIRA (v6.3.4#6332)