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

Reply via email to