You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@brooklyn.apache.org by aledsage <gi...@git.apache.org> on 2018/02/02 09:01:32 UTC

[GitHub] brooklyn-client pull request #67: Invoke effector: support timeout

GitHub user aledsage opened a pull request:

    https://github.com/apache/brooklyn-client/pull/67

    Invoke effector: support timeout

    Passes the timeout arg (if supplied) when making the REST api call to Brooklyn. The response from this is written to stdout.
    
    If it times out, the REST api still gives back a 202 response code with a json payload describing the executing task. The `br` tool simply writes that to stdout. For example:
    
    ```
    cli/target/bin/darwin.amd64/br app rbfvau9i75 effector stop invoke --timeout 1ms
    
    {"id":"kpML04c1","displayName":"stop","description":"Invoking effector stop on server @ localhost with parameters {}","entityId":"rbfvau9i75","entityDisplayName":"server @ localhost","tags":["EFFECTOR",{"entityId":"rbfvau9i75","effectorName":"stop"},{"entitlementContext":{"user":"<snip>","sourceIp":"0:0:0:0:0:0:0:1","requestUri":"/v1/applications/rbfvau9i75/entities/rbfvau9i75/effectors/stop","requestUniqueIdentifier":"rjuSuB"}},{"type":"org.apache.brooklyn.api.mgmt.ManagementContext"},{"wrappingType":"targetEntity","entity":{"type":"org.apache.brooklyn.api.entity.Entity","id":"rbfvau9i75"}},{"entitlementContext":{"user":"<snip>","sourceIp":"0:0:0:0:0:0:0:1","requestUri":"/v1/applications/rbfvau9i75/entities/rbfvau9i75/effectors/stop","requestUniqueIdentifier":"rjuSuB"}},{"wrappingType":"contextEntity","entity":{"type":"org.apache.brooklyn.api.entity.Entity","id":"rbfvau9i75"}}],"submitTimeUtc":1517490162402,"startTimeUtc":1517490162402,"endTimeUtc":null,"currentStatus":"In progr
 ess","result":null,"isError":false,"isCancelled":false,"children":[{"link":"/v1/activities/X9j8xcJ1","metadata":{"id":"X9j8xcJ1","taskName":"invoking stop[] on 1 node","entityId":"rbfvau9i75","entityDisplayName":"server @ localhost"}}],"submittedByTask":null,"blockingTask":{"link":"/v1/activities/X9j8xcJ1","metadata":{"id":"X9j8xcJ1","taskName":"invoking stop[] on 1 node","entityId":"rbfvau9i75","entityDisplayName":"server @ localhost"}},"detailedStatus":"Waiting on Task[invoking stop[] on 1 node]@X9j8xcJ1\n\nTask[stop]@kpML04c1\nChildren:\n  Task[invoking stop[] on 1 node]@X9j8xcJ1: Executing 1 child task\n\nIn progress, thread waiting (notify) on java.util.concurrent.FutureTask@61fe3136\nAt: com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)\n    org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:384)\n    org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:393)\n    org.apache.brooklyn.util.core.task.DynamicTasks$Tas
 kQueueingResult.andWaitForSuccess(DynamicTasks.java:195)\n    org.apache.brooklyn.util.core.task.DynamicTasks.get(DynamicTasks.java:363)\n    org.apache.brooklyn.core.entity.trait.StartableMethods.stop(StartableMethods.java:58)\n    org.apache.brooklyn.core.entity.AbstractApplication.doStop(AbstractApplication.java:271)\n    org.apache.brooklyn.core.entity.AbstractApplication.stop(AbstractApplication.java:246)\n    org.apache.brooklyn.util.javalang.Reflections.invokeMethodFromArgs(Reflections.java:984)\n    org.apache.brooklyn.util.javalang.Reflections.invokeMethodFromArgs(Reflections.java:871)\n    org.apache.brooklyn.util.javalang.Reflections.invokeMethodFromArgs(Reflections.java:857)\n    org.apache.brooklyn.util.javalang.Reflections.invokeMethodFromArgs(Reflections.java:852)\n    org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invokeEffectorMethodLocal(AbstractManagementContext.java:327)\n    org.apache.brooklyn.core.mgmt.internal.AbstractManagementContext.invok
 eEffectorMethodSync(AbstractManagementContext.java:366)\n    org.apache.brooklyn.core.mgmt.internal.EffectorUtils.invokeMethodEffector(EffectorUtils.java:274)\n    org.apache.brooklyn.core.effector.MethodEffector.call(MethodEffector.java:153)\n    org.apache.brooklyn.core.entity.trait.Startable$StopEffectorBody.call(Startable.java:68)\n    org.apache.brooklyn.core.entity.trait.Startable$StopEffectorBody.call(Startable.java:60)\n    org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$1.call(EffectorTasks.java:82)\n    org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:364)\n    org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:565)","streams":{},"links":{"self":"/v1/activities/kpML04c1","children":"/v1/activities/kpML04c1/children","entity":"/v1/applications/rbfvau9i75/entities/rbfvau9i75"}}
    ```


You can merge this pull request into a Git repository by running:

    $ git pull https://github.com/aledsage/brooklyn-client invoke-effector-support-timeout

Alternatively you can review and apply these changes as the patch at:

    https://github.com/apache/brooklyn-client/pull/67.patch

To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:

    This closes #67
    
----
commit 782af9dd00a67b74f9ef5bdbb39db39e2bb318e6
Author: Aled Sage <al...@...>
Date:   2018-02-02T08:56:49Z

    Invoke effector: support timeout

----


---

[GitHub] brooklyn-client issue #67: Invoke effector: support timeout

Posted by aledsage <gi...@git.apache.org>.
Github user aledsage commented on the issue:

    https://github.com/apache/brooklyn-client/pull/67
  
    @geomacy agreed - it does look too intimidating for the user.
    
    If the REST api does not timeout, the body will be the effector response value. It's annoying that there's not an explicit way to tell whether it completed or timed out (e.g. consider the extreme case where the effector response was a chunk of json that looked like that).
    
    I think we should merge this PR (as you suggested), and then look at improving the response written out by `br`.


---

[GitHub] brooklyn-client pull request #67: Invoke effector: support timeout

Posted by asfgit <gi...@git.apache.org>.
Github user asfgit closed the pull request at:

    https://github.com/apache/brooklyn-client/pull/67


---

[GitHub] brooklyn-client issue #67: Invoke effector: support timeout

Posted by geomacy <gi...@git.apache.org>.
Github user geomacy commented on the issue:

    https://github.com/apache/brooklyn-client/pull/67
  
    Sounds good to me, will merge.


---