VijayJoinGitHub opened a new issue, #396:
URL: https://github.com/apache/mina-sshd/issues/396

   ### Version
   
   2.9.2
   
   ### Bug description
   
   
    1.      channel.open(); // takes time , around 579 milli seconds
   
    2.    channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED),       
                             TimeUnit.SECONDS.toMillis(0));   // takes around 
287 milli seconds.
   
   In our case for a task completion we run 7 commands  so each time  579  + 
287 = 866 milli seconds for 7 times almost 6 seconds which is very much delay 
to display information for front end.
   attaching  a sample code.
   
   
*****************************************************************************************************************************
   import java.io.ByteArrayOutputStream;
   import java.io.IOException;
   import java.io.OutputStream;
   import java.security.KeyPair;
   import java.util.Collection;
   import java.util.EnumSet;
   import java.util.Set;
   import java.util.concurrent.BlockingQueue;
   import java.util.concurrent.TimeUnit;
   
   
   import org.apache.sshd.client.SshClient;
   import org.apache.sshd.client.auth.keyboard.UserInteraction;
   import org.apache.sshd.client.channel.ChannelExec;
   import org.apache.sshd.client.channel.ClientChannel;
   import org.apache.sshd.client.channel.ClientChannelEvent;
   import org.apache.sshd.client.future.AuthFuture;
   import org.apache.sshd.client.future.ConnectFuture;
   import org.apache.sshd.client.future.OpenFuture;
   import org.apache.sshd.client.session.ClientSession;
   import org.apache.sshd.common.channel.Channel;
   import org.apache.sshd.common.session.Session;
   import org.apache.sshd.common.util.io.output.NoCloseOutputStream;
   
   public class SshUtilstest4 {
   
       public static void main(String[] args) {
           // TODO Auto-generated method stub
   
           SshClient client = SshClient.setUpDefaultClient();
           String command = "uname -a";
           try {
               // Open the client
               client.start();
               long defaultTimeout = 3600;
               try (ClientSession session = client.connect("root", hostname, 
22).verify(defaultTimeout, TimeUnit.SECONDS).getSession()) {
                   session.addPasswordIdentity("password");
                   session.auth().verify(defaultTimeout, TimeUnit.SECONDS);
                   try (ByteArrayOutputStream responseStream = new 
ByteArrayOutputStream(); ByteArrayOutputStream errorStream = new 
ByteArrayOutputStream();) { // to execute remote commands                   
                       ChannelExec channel = session.createExecChannel(command 
+ "\\n");
                       channel.setOut(responseStream);
                       channel.setErr(errorStream);
   
                       long start = System.currentTimeMillis();
                       channel.open().await(); //.verify(defaultTimeout, 
TimeUnit.SECONDS);
                       long end = System.currentTimeMillis();
                       System.out.println("Time take to to open a channel in 
milli seconds=" + (end - start));
   
                       System.out.println("-------------------------------");
   
                       /*
                     try (OutputStream pipedIn = channel2.getInvertedIn()) {
                         pipedIn.write(command.getBytes("UTF-8"));
                         pipedIn.flush();
                     } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                }*/
                       System.out.println("Before to close channel 
responseStream=" + responseStream);
   
                       long start2 = System.currentTimeMillis();
                       channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED),
                           TimeUnit.SECONDS.toMillis(0));
                       long end2 = System.currentTimeMillis();
                       System.out.println("Time take to close the channel by 
server in milli seconds =" + (end2 - start2));
                       System.out.println("After closing the channel 
responseStream22=" + responseStream);
                       // return responseStream.toString();                   
                   } catch (Exception e) {
                       // TODO Auto-generated catch block
                       e.printStackTrace();
                   }
   
               }
           } catch (IOException e) {
               // TODO Auto-generated catch block
               e.printStackTrace();
           }
   
       }
   
   }
   
*****************************************************************************************************************************
   out put :
   Time take to to open a channel in milli seconds=579
   -------------------------------
   Before to close channel responseStream=
   Time take to close the channel by server in milli seconds =287
   After closing the channel responseStream22=Linux sudheer-rhel7 
3.10.0-1160.90.1.el7.x86_64 #1 SMP Fri Mar 17 08:39:44 UTC 2023 x86_64 x86_64 
x86_64 GNU/Linux
   
   
   
   
   ### Actual behavior
   
   is this expected behaviour ?
   Are we missing any input  like ptyconfiguration if yes could you please 
provide me example .
   
   
   ### Expected behavior
   
   If this is existing behaviour could you please make this better .
   previously we are using ganymede which is very much fast total 7 commands 
can be run in 1 or 1+ seconds only , But with apache mina sshd is takes almost 
6 seconds which is time consuming one for us.
   
![apachemina-sshd](https://github.com/apache/mina-sshd/assets/14990451/881b8105-4072-42c4-9a0c-b381ffca9820)
   
   
   ### Relevant log output
   
   _No response_
   
   ### Other information
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@mina.apache.org
For additional commands, e-mail: dev-h...@mina.apache.org

Reply via email to