[ https://issues.apache.org/jira/browse/TWILL-240?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16120743#comment-16120743 ]
ASF GitHub Bot commented on TWILL-240: -------------------------------------- Github user chtyim commented on a diff in the pull request: https://github.com/apache/twill/pull/58#discussion_r132322087 --- Diff: twill-yarn/src/main/java/org/apache/twill/internal/appmaster/ApplicationMasterService.java --- @@ -181,19 +190,130 @@ public Reader getInput() throws IOException { } @SuppressWarnings("unchecked") - @Nullable private EventHandler createEventHandler(TwillSpecification twillSpec) throws ClassNotFoundException { // Should be able to load by this class ClassLoader, as they packaged in the same jar. EventHandlerSpecification handlerSpec = twillSpec.getEventHandler(); if (handlerSpec == null) { - return null; + // if no handler is specified, return an EventHandler with no-op + return new EventHandler() {}; } Class<?> handlerClass = getClass().getClassLoader().loadClass(handlerSpec.getClassName()); Preconditions.checkArgument(EventHandler.class.isAssignableFrom(handlerClass), "Class {} does not implements {}", handlerClass, EventHandler.class.getName()); - return Instances.newInstance((Class<? extends EventHandler>) handlerClass); + final EventHandler delegate = Instances.newInstance((Class<? extends EventHandler>) handlerClass); + // wrap all calls to the delegate EventHandler methods except initialize so that all errors will be caught + return new EventHandler() { + private boolean initialized; + + @Override + public void initialize(EventHandlerContext context) { + delegate.initialize(context); + initialized = true; --- End diff -- Since any exception thrown from `initialize` will terminate the app, I think we don't need this, right? > Improve EventHandler to handle more application lifecycle events > ---------------------------------------------------------------- > > Key: TWILL-240 > URL: https://issues.apache.org/jira/browse/TWILL-240 > Project: Apache Twill > Issue Type: New Feature > Reporter: Chengfeng Mao > Assignee: Chengfeng Mao > Fix For: 0.12.0 > > > Application Master should be able to run application specific code when > certain lifecycle events happen by calling methods from EventHandler. For > instance, when the app first starts, completes, aborts and etc. -- This message was sent by Atlassian JIRA (v6.4.14#64029)