[ 
https://issues.apache.org/jira/browse/TWILL-116?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14625422#comment-14625422
 ] 

ASF GitHub Bot commented on TWILL-116:
--------------------------------------

Github user chtyim commented on a diff in the pull request:

    https://github.com/apache/incubator-twill/pull/52#discussion_r34516278
  
    --- Diff: 
twill-yarn/src/test/java/org/apache/twill/yarn/EchoServerTestRun.java ---
    @@ -132,4 +156,51 @@ public void run() {
         // Sleep a bit before exiting.
         TimeUnit.SECONDS.sleep(2);
       }
    +
    +  /**
    +   *  Need helper method here to wait for getting resource report because 
{@link TwillController#getResourceReport()}
    +   *  could return null if the application has not fully started.
    +   *
    +   *  This method helps validate restart scenario.
    +   *
    +   *  To avoid long sleep if instanceIdToContainerId is passed, then 
compare the container ids to ones before.
    +   *  Otherwise just return the valid resource report.
    +   */
    +  @Nullable
    +  private ResourceReport waitForAfterRestartResourceReport(TwillController 
controller, String runnable, long timeout,
    +                                                           TimeUnit 
timeoutUnit, int numOfResources,
    +                                                           @Nullable 
Map<Integer, String> instanceIdToContainerId) {
    +    Stopwatch stopwatch = new Stopwatch();
    +    stopwatch.start();
    +    do {
    +      ResourceReport report = controller.getResourceReport();
    +      if (report == null || report.getRunnableResources(runnable) == null) 
{
    +        Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
    +      } else if (report.getRunnableResources(runnable) == null ||
    +          report.getRunnableResources(runnable).size() != numOfResources) {
    +        Uninterruptibles.sleepUninterruptibly(100, TimeUnit.MILLISECONDS);
    +      } else {
    +        if (instanceIdToContainerId == null) {
    +          return report;
    +        } else {
    --- End diff --
    
    Sorry missed in last review. No need to have else after return statement. 
This makes code less indented, hence easier to read.


> Support for restart instances of runnable in an application
> -----------------------------------------------------------
>
>                 Key: TWILL-116
>                 URL: https://issues.apache.org/jira/browse/TWILL-116
>             Project: Apache Twill
>          Issue Type: New Feature
>          Components: core
>            Reporter: Albert Shau
>            Assignee: Henry Saputra
>             Fix For: 0.6.0-incubating
>
>         Attachments: TWILL-116-design-4.pdf, TWILL-116-design-5.pdf, 
> TWILL-116-design-6.pdf, TWILL-116-design-7.pdf, TWILL-116-design-final-2.pdf
>
>
> Once an application is running, it would be good to be able to stop, start, 
> and restart a specific runnable of the application without affecting other 
> runnables.  
> For example, I may be running multiple services in a single application, with 
> each service as a different runnable. One of my services gets into an invalid 
> state. I now want to restart just that runnable and not the other ones that 
> are running properly.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to