[
https://issues.apache.org/jira/browse/SSHD-1085?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17246778#comment-17246778
]
Lyor Goldstein commented on SSHD-1085:
--------------------------------------
{quote}I know when use channel.waitFor() should not give 0L, but since in our
environment, some commands take very long (>2hours), we have to wait forever
unless the command return something to stop.
{quote}
Here is another possible workaround - +don't+ use infinite wait. Rather use a
long wait (hours) for any command other than reboot and a shorter one (seconds
or few minutes) for it. In any case (sorry for repeating) - +don't expect an
EXIT_STATUS+ - check if one is available - especially but not just for the
reboot command. Furthermore, the reboot command is special (like shutdown or
halt) and treating it like any other command is IMO highly dubious practice.
> channel.waitFor() get stuck when run reboot command
> ---------------------------------------------------
>
> Key: SSHD-1085
> URL: https://issues.apache.org/jira/browse/SSHD-1085
> Project: MINA SSHD
> Issue Type: Bug
> Affects Versions: 2.5.1
> Environment: linux
> Reporter: min yun law
> Priority: Major
>
> Trying to run linux command "reboot" by mina sshd to remote node, the node is
> in reboot, but the ClientChannel object still keep open, not in closed
> status, Here is the logic code in my project:
>
> {code:java}
> String command = "reboot";
> ChannelExec channel = clientSession.createExecChannel(command);
> if(!channel.isClosed())
> {
> ByteArrayOutputStream out = new ByteArrayOutputStream();
> ByteArrayOutputStream err = new ByteArrayOutputStream(); channel.setOut(out);
> channel.setErr(err);
> channel.open().await(); //this passed
> //follow call will cause stuck
> Collection<ClientChannelEvent> waitMask =
> channel.waitFor(REMOTE_COMMAND_WAIT_EVENTS, 0L);
> String outputStr = new String(out.toByteArray(), StandardCharsets.UTF_8);
> //some case this will throw runtime exception
> int exitStatus = channel.getExitStatus();
> }
>
> {code}
>
> So why the ChannelExec cannot get the correct channel status when remote node
> is rebooting?
>
>
>
--
This message was sent by Atlassian Jira
(v8.3.4#803005)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]