You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mina.apache.org by "min yun law (Jira)" <ji...@apache.org> on 2020/09/22 20:00:13 UTC

[jira] [Updated] (SSHD-1085) channel.waitFor() get stuck when run reboot command

     [ https://issues.apache.org/jira/browse/SSHD-1085?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

min yun law updated SSHD-1085:
------------------------------
    Description: 
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?

 

 

 

  was:
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:



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();

}

 

So why the ChannelExec cannot get the correct channel status when remote node is rebooting?

 

 

 


> 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: dev-unsubscribe@mina.apache.org
For additional commands, e-mail: dev-help@mina.apache.org