TerraNibble commented on issue #427:
URL: https://github.com/apache/mina-sshd/issues/427#issuecomment-1934985712

   This is also easily reproducible using the including unit test 
`ScpTest.testStreamsUploadAndDownload`. Running it you can observe the 5 second 
exit timeout being hit.
   
   Moving the `handleCommandExitStatus` to after the I/O stream 
try-with-resources resolves the timeout but introduces a new race-condition 
with the channels not shutting down gracefully.
   
   I am still not sure why only `upload` is susceptible to this and not 
`runUpload` based on their slightly different use of the `ScpHelper`.
   
   You can simulate the issue by introducing a 200ms delay between the IO 
streams and the channel closing. Hopefully this information is helpful.
   
   ```
   ClientSession session = getClientSession();
           ChannelExec channel = openCommandChannel(session, cmd);
           try {
               try (InputStream invOut = channel.getInvertedOut();
                    OutputStream invIn = channel.getInvertedIn()) {
                   // NOTE: we use a mock file system since we expect no 
invocations for it
                   ScpHelper helper = new ScpHelper(session, invOut, invIn, new 
MockFileSystem(remote), opener, listener);
                   Path mockPath = new MockPath(remote);
                   helper.sendStream(new DefaultScpStreamResolver(name, 
mockPath, perms, time, size, local, cmd),
                           options.contains(Option.PreserveAttributes), 
ScpHelper.DEFAULT_SEND_BUFFER_SIZE);
   //            handleCommandExitStatus(cmd, channel);
               }
               Thread.sleep(200);
   //            handleCommandExitStatus(cmd, channel);
           } catch (InterruptedException e) {
               throw new RuntimeException(e);
           } finally {
               channel.close(false);
           }
   ```


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

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