[ 
https://issues.apache.org/jira/browse/SSHD-1262?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17529216#comment-17529216
 ] 

Thomas Wolf commented on SSHD-1262:
-----------------------------------

[~lgoldstein], {{ClientChannelPendingMessagesQueue}} was added in SSHD-849. 
Unfortunately that description doesn't really explain what the problem was. 
Could you explain why this queue is needed? How can there be pending messages 
before the open confirmation is sent back? Wouldn't that be a bug in the client 
that requested the forwarding, which sent data without waiting for the 
confirmation first?

> Unhandled SSH_MSG_CHANNEL_WINDOW_ADJUST leeds to SocketTimeoutException
> -----------------------------------------------------------------------
>
>                 Key: SSHD-1262
>                 URL: https://issues.apache.org/jira/browse/SSHD-1262
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 2.7.0, 2.8.0
>            Reporter: Stefan Maute
>            Priority: Major
>              Labels: mina, sshd
>         Attachments: failing-pf-trace-logs.txt
>
>
> Wanted to open a local port forwarding to an SSH server and afterwards 
> connect to MQTT server over the SSh tunnel. During the MQTT connection 
> attempt I encountered a SocketTimeoutException in the logs (StackTrace below).
> What I could see in the logs is that the server is sending an initial window 
> size of 0 and afterwards the _waitForCondition_ method is throwing the 
> SocketTimeoutException .
> After analyzing the logs I maybe have an idea what is going on here. My 
> assumption is that  there is some deadlock in case the initial window size is 
> 0 and the SSH_MSG_CHANNEL_WINDOW_ADJUST  isn't handled properly. 
> I have attached the whole log file. Lines of interest are from 169 to 229.
> Tested with 2.7.0 and 2.8.0.
>  
> {code:java}
> WARN org.apache.sshd.common.forward.DefaultForwarder - 
> exceptionCaught(Nio2Session[local=/127.0.0.1:44259, remote=/127.0.0.1:60188]) 
> SocketTimeoutException: 
> waitForCondition(Window[client/remote](TcpipClientChannel[id=0, 
> recipient=0]-ClientSessionImpl[Admin@/x.xxx.xx.x:xxxx])) timeout exceeded: 
> PT30S java.net.SocketTimeoutException: 
> waitForCondition(Window[client/remote](TcpipClientChannel[id=0, 
> recipient=0]-ClientSessionImpl[Admin@/x.xxx.xx.x:xxxx])) timeout exceeded: 
> PT30S     at 
> org.apache.sshd.common.channel.Window.waitForCondition(Window.java:332)     
> at org.apache.sshd.common.channel.Window.waitForSpace(Window.java:286)     at 
> org.apache.sshd.common.channel.ChannelOutputStream.write(ChannelOutputStream.java:154)
>      at 
> org.apache.sshd.client.channel.ClientChannelPendingMessagesQueue.writeMessage(ClientChannelPendingMessagesQueue.java:174)
>      at 
> org.apache.sshd.client.channel.ClientChannelPendingMessagesQueue.flushPendingQueue(ClientChannelPendingMessagesQueue.java:221)
>      at 
> org.apache.sshd.client.channel.ClientChannelPendingMessagesQueue.operationComplete(ClientChannelPendingMessagesQueue.java:206)
>      at 
> org.apache.sshd.client.channel.ClientChannelPendingMessagesQueue.operationComplete(ClientChannelPendingMessagesQueue.java:51)
>      at 
> org.apache.sshd.common.future.AbstractSshFuture.notifyListener(AbstractSshFuture.java:159)
>      at 
> org.apache.sshd.common.future.DefaultSshFuture.notifyListeners(DefaultSshFuture.java:215)
>      at 
> org.apache.sshd.common.future.DefaultSshFuture.setValue(DefaultSshFuture.java:112)
>      at 
> org.apache.sshd.client.future.DefaultOpenFuture.setOpened(DefaultOpenFuture.java:68)
>      at 
> org.apache.sshd.client.channel.AbstractClientChannel.handleOpenSuccess(AbstractClientChannel.java:360)
>      at 
> org.apache.sshd.common.session.helpers.AbstractConnectionService.channelOpenConfirmation(AbstractConnectionService.java:545)
>      at 
> org.apache.sshd.common.session.helpers.AbstractConnectionService.process(AbstractConnectionService.java:456)
>      at 
> org.apache.sshd.common.session.helpers.AbstractSession.doHandleMessage(AbstractSession.java:503)
>      at 
> org.apache.sshd.common.session.helpers.AbstractSession.handleMessage(AbstractSession.java:429)
>      at 
> org.apache.sshd.common.session.helpers.AbstractSession.decode(AbstractSession.java:1466)
>      at 
> org.apache.sshd.common.session.helpers.AbstractSession.messageReceived(AbstractSession.java:389)
>      at 
> org.apache.sshd.common.session.helpers.AbstractSessionIoHandler.messageReceived(AbstractSessionIoHandler.java:64)
>      at 
> org.apache.sshd.common.io.nio2.Nio2Session.handleReadCycleCompletion(Nio2Session.java:359)
>      at 
> org.apache.sshd.common.io.nio2.Nio2Session$1.onCompleted(Nio2Session.java:336)
>      at 
> org.apache.sshd.common.io.nio2.Nio2Session$1.onCompleted(Nio2Session.java:333)
>      at 
> org.apache.sshd.common.io.nio2.Nio2CompletionHandler.lambda$completed$0(Nio2CompletionHandler.java:38)
>      at 
> java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
>      at 
> org.apache.sshd.common.io.nio2.Nio2CompletionHandler.completed(Nio2CompletionHandler.java:37)
>      at java.base/sun.nio.ch.Invoker.invokeUnchecked(Invoker.java:129)     at 
> java.base/sun.nio.ch.Invoker$2.run(Invoker.java:221)     at 
> java.base/sun.nio.ch.AsynchronousChannelGroupImpl$1.run(AsynchronousChannelGroupImpl.java:113)
>      at 
> java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
>      at 
> java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
>      at java.base/java.lang.Thread.run(Thread.java:833) {code}
>  
>  



--
This message was sent by Atlassian Jira
(v8.20.7#820007)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to