ctubbsii commented on a change in pull request #1818:
URL: https://github.com/apache/accumulo/pull/1818#discussion_r532927323
##########
File path: assemble/conf/accumulo-env.sh
##########
@@ -95,7 +95,7 @@ JAVA_OPTS=("${JAVA_OPTS[@]}"
case "$cmd" in
monitor|gc|master|tserver|tracer)
- JAVA_OPTS=("${JAVA_OPTS[@]}"
"-Dlog4j.configurationFile=log4j2-service.properties")
+ JAVA_OPTS=("${JAVA_OPTS[@]}"
"-Dlog4j.configurationFile=log4j2-service.properties"
"-DHaltVMOnThreadError=true")
Review comment:
I think LoggingRunnable avoided the question of which would win by
trying to wrap the Runnable and catching the Throwables in the run method
instead of relying on the uncaught handler. However, the fatal flaw with
LoggingRunnable is that it wouldn't re-throw things. Your solution to put an
uncaught handler on everything makes it so we can (should) delete
LoggingRunnable, as it's not needed any more, but it raises questions about
what wins. I know that it wouldn't necessarily make sense to re-throw from the
handler... because the docs say stuff thrown from the handler are ignored...
but not sure if that applies to Error types as well as Exceptions.
I'm finding myself with more questions than answers about how Java actually
behaves, so it's hard to have an opinion about how things should go. I think I
might want to simulate a few scenarios to test the various JVM behaviors, and
use that to inform what to do.
----------------------------------------------------------------
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.
For queries about this service, please contact Infrastructure at:
[email protected]