[
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)