Aled Sage created BROOKLYN-347:
----------------------------------
Summary: ssh gives " Execution failed, invalid result -1" (though
command on VM succeeded)
Key: BROOKLYN-347
URL: https://issues.apache.org/jira/browse/BROOKLYN-347
Project: Brooklyn
Issue Type: Bug
Reporter: Aled Sage
When deploying an app to an OpenStack environment (behind a slow VPN), one of
the VanillaSoftwareProcess entities failed to execute the "customize" command
with the error shown below.
TL;DR the logging of stdout shows the actual command gave exit code {{0}}. The
{{-1}} implies it is an exception in the {{SshjTool}} (or sshj library), but
nothing logged to give us a clue about it.
{noformat}
Failed after 10.29s
STDOUT
Executed
/tmp/brooklyn-20160914-102321520-StEE-customizing_VanillaSoftwarePro.sh, result
0: Execution failed, invalid result -1 for customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
java.lang.IllegalStateException: Execution failed, invalid result -1 for
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper.logWithDetailsAndThrow(ScriptHelper.java:388)
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper.executeInternal(ScriptHelper.java:377)
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper$8.call(ScriptHelper.java:287)
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper$8.call(ScriptHelper.java:285)
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)
at
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
{noformat}
The full exception subsequently logged is:
{noformat}
2016-09-14 10:23:31,812 WARN o.a.b.c.m.i.EffectorUtils
[brooklyn-execmanager-lUyvzrEP-282]: Error invoking start at
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}: Execution failed, invalid result -1
for customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
2016-09-14 10:23:31,818 DEBUG o.a.b.c.m.i.EffectorUtils
[brooklyn-execmanager-lUyvzrEP-282]: Error invoking start at
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
~[brooklyn-utils-common-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask.drain(DynamicSequentialTask.java:492)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicTasks.drain(DynamicTasks.java:314)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicTasks.waitForLast(DynamicTasks.java:303)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks.start(MachineLifecycleEffectorTasks.java:357)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks$StartEffectorBody.call(MachineLifecycleEffectorTasks.java:257)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.MachineLifecycleEffectorTasks$StartEffectorBody.call(MachineLifecycleEffectorTasks.java:244)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.core.effector.EffectorTasks$EffectorBodyTaskFactory$1.call(EffectorTasks.java:82)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicExecutionManager$SubmissionCallable.call(BasicExecutionManager.java:519)
[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
[na:1.7.0_71]
at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
[na:1.7.0_71]
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
[na:1.7.0_71]
at java.lang.Thread.run(Thread.java:745) [na:1.7.0_71]
Caused by: java.util.concurrent.ExecutionException:
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Execution
failed, invalid result -1 for customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.7.0_71]
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
[na:1.7.0_71]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 13 common frames omitted
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
~[brooklyn-utils-common-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask.drain(DynamicSequentialTask.java:492)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicTasks.drain(DynamicTasks.java:314)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicTasks.waitForLast(DynamicTasks.java:303)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:400)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 5 common frames omitted
Caused by: java.util.concurrent.ExecutionException:
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Execution
failed, invalid result -1 for customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.7.0_71]
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
[na:1.7.0_71]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 9 common frames omitted
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
~[brooklyn-utils-common-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 9 common frames omitted
Caused by: java.util.concurrent.ExecutionException:
org.apache.brooklyn.util.exceptions.PropagatedRuntimeException: Execution
failed, invalid result -1 for customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.7.0_71]
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
[na:1.7.0_71]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 9 common frames omitted
Caused by: org.apache.brooklyn.util.exceptions.PropagatedRuntimeException:
at
org.apache.brooklyn.util.exceptions.Exceptions.propagate(Exceptions.java:129)
~[brooklyn-utils-common-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:372)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper.execute(ScriptHelper.java:337)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.VanillaSoftwareProcessSshDriver.customize(VanillaSoftwareProcessSshDriver.java:128)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.AbstractSoftwareProcessDriver$3$2.run(AbstractSoftwareProcessDriver.java:175)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
~[na:1.7.0_71]
at
org.apache.brooklyn.util.core.task.DynamicSequentialTask$DstJob.call(DynamicSequentialTask.java:359)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 5 common frames omitted
Caused by: java.util.concurrent.ExecutionException:
java.lang.IllegalStateException: Execution failed, invalid result -1 for
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
[na:1.7.0_71]
at java.util.concurrent.FutureTask.get(FutureTask.java:188)
[na:1.7.0_71]
at
com.google.common.util.concurrent.ForwardingFuture.get(ForwardingFuture.java:63)
~[guava-16.0.1.jar:na]
at org.apache.brooklyn.util.core.task.BasicTask.get(BasicTask.java:361)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.util.core.task.BasicTask.getUnchecked(BasicTask.java:370)
~[brooklyn-core-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 10 common frames omitted
Caused by: java.lang.IllegalStateException: Execution failed, invalid result -1
for customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper.logWithDetailsAndThrow(ScriptHelper.java:388)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper.executeInternal(ScriptHelper.java:377)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper$8.call(ScriptHelper.java:287)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
at
org.apache.brooklyn.entity.software.base.lifecycle.ScriptHelper$8.call(ScriptHelper.java:285)
~[brooklyn-software-base-0.10.0-20160908.1322.jar:0.10.0-20160908.1322]
... 6 common frames omitted
{noformat}
The debug logs contained the following:
{noformat}
2016-09-14 10:23:21,520 DEBUG brooklyn.SSH [brooklyn-execmanager-lUyvzrEP-234]:
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}, initiating ssh on
machine
SshMachineLocation[10.104.0.115:[email protected]/10.104.0.115:22(id=o3fvyriymw)]:
#!/bin/bash -e
; export
INSTALL_DIR="/home/users/amp/brooklyn-managed-processes/installs/VanillaSoftwareProcess_0.0.0_PUZrn"
; export
RUN_DIR="/home/users/amp/brooklyn-managed-processes/apps/c5f14ojgpk/entities/VanillaSoftwareProcess_tk2yqo7f7y"
; mkdir -p $RUN_DIR ; cd $RUN_DIR ; cd . ; cp
/home/users/amp/brooklyn-managed-processes/installs/VanillaSoftwareProcess_0.0.0_PUZrn/metering-microservice-1.1.jar
.
2016-09-14 10:23:31,809 DEBUG brooklyn.SSH [brooklyn-execmanager-lUyvzrEP-234]:
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}, on machine
SshMachineLocation[10.104.0.115:[email protected]/10.104.0.115:22(id=o3fvyriymw)],
completed: return status -1
2016-09-14 10:23:31,810 WARN o.a.b.e.s.b.l.ScriptHelper
[brooklyn-execmanager-lUyvzrEP-234]: Execution failed, invalid result -1 for
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y} (throwing)
2016-09-14 10:23:31,810 INFO o.a.b.e.s.b.l.ScriptHelper
[brooklyn-execmanager-lUyvzrEP-234]: STDOUT of problem in Task[ssh: customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}]@n5FcZqp2:
Executed
/tmp/brooklyn-20160914-102321520-StEE-customizing_VanillaSoftwarePro.sh, result 0
2016-09-14 10:23:31,810 INFO o.a.b.e.s.b.l.ScriptHelper
[brooklyn-execmanager-lUyvzrEP-234]: STDIN of problem in Task[ssh: customizing
VanillaSoftwareProcessImpl{id=tk2yqo7f7y}]@n5FcZqp2:
export
INSTALL_DIR="/home/users/amp/brooklyn-managed-processes/installs/VanillaSoftwareProcess_0.0.0_PUZrn"
export
RUN_DIR="/home/users/amp/brooklyn-managed-processes/apps/c5f14ojgpk/entities/VanillaSoftwareProcess_tk2yqo7f7y"
mkdir -p $RUN_DIR
cd $RUN_DIR
cd .
cp
/home/users/amp/brooklyn-managed-processes/installs/VanillaSoftwareProcess_0.0.0_PUZrn/metering-microservice-1.1.jar
.
2016-09-14 10:23:31,810 DEBUG o.a.b.u.c.t.BasicExecutionManager
[brooklyn-execmanager-lUyvzrEP-234]: Exception running task Task[ssh:
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}]@n5FcZqp2 (rethrowing):
java.lang.IllegalStateException: Execution failed, invalid result -1 for
customizing VanillaSoftwareProcessImpl{id=tk2yqo7f7y}
{noformat}
The previous commands (e.g. install etc) had executed successfully.
Grep'ing for sshj logs from around that time ({{grep -E "n\.s\.s|sshj"}}, I see
the exception below a few times (from a different thread), but I believe that
is unrelated because we successfully finished executing the install command at
{{2016-09-14 10:23:21,516}}:
{noformat}
2016-09-14 10:14:31,867 ERROR n.s.s.transport.TransportImpl [reader]: Dying
because - net.schmizz.sshj.transport.TransportException: Broken transport;
encountered EOF
2016-09-14 10:23:02,856 ERROR n.s.s.transport.TransportImpl [reader]: Dying
because - java.net.SocketTimeoutException: Read timed out
2016-09-14 10:24:33,859 ERROR n.s.s.transport.TransportImpl [reader]: Dying
because - java.net.SocketTimeoutException: Read timed out
2016-09-14 10:25:56,151 ERROR n.s.s.transport.TransportImpl [reader]: Dying
because - java.net.SocketTimeoutException: Read timed out
{noformat}
The {{result -1}} suggests that SshjTool.execScript returned {{-1}}. I presume
{{SshjTool.ShellAction.create()}} returned null, which implies
{{net.schmizz.sshj.connection.channel.direct.ShellChannel.exitStatus}} was null.
Prior to returning, we checked {{shell.isOpen() &&
((SessionChannel)session).getExitStatus()==null}} (and would have log.debug if
that was true), so presumably the shell was closed and exit status was null.
I'm surprised we can get into that state without further logging of exceptions
in {{net.schmizz.sshj}} (or propagated and logged in {{SshjTool}}.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)