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

Goldstein Lyor edited comment on SSHD-942 at 9/20/19 6:28 AM:
--------------------------------------------------------------

I have looked into the code, and while I cannot see and immediate problem I 
would like to suggest a possible workaround - register a 
{{UnknownChannelReferenceHandler}} implementation with the server. This will 
enable you to catch all the messages intended for channels that no longer exist 
and ignore them, log them, decide which messages to ignore and which not, etc...

As you can see below, the exception is thrown only if there is no such 
registered handler.

{code:java}
protected Channel getChannel(byte cmd, int recipient, Buffer buffer) throws 
IOException {
        Channel channel = channels.get(recipient);
        if (channel != null) {
            return channel;
        }

        UnknownChannelReferenceHandler handler = 
resolveUnknownChannelReferenceHandler();
        if (handler == null) {
            // Throw a special exception - SSHD-777
            throw new SshChannelNotFoundException(recipient,
                "Received " + SshConstants.getCommandMessageName(cmd) + " on 
unknown channel " + recipient);
        }

        channel = handler.handleUnknownChannelCommand(this, cmd, recipient, 
buffer);
        return channel;
    }
{code}


was (Author: lgoldstein):
I have looked into the code, and while I cannot see and immediate problem I 
would like to suggest a possible workaround - register a 
{{UnknownChannelReferenceHandler}} implementation with the server. This will 
enable you to catch all the messages intended for channels that no longer exist 
and ignore them, log them, decide which messages to ignore and which not, etc...

> SSH session crashes on high latency network
> -------------------------------------------
>
>                 Key: SSHD-942
>                 URL: https://issues.apache.org/jira/browse/SSHD-942
>             Project: MINA SSHD
>          Issue Type: Bug
>    Affects Versions: 1.7.0, 2.0.0, 2.3.0
>            Reporter: David Ostrovsky
>            Priority: Major
>
> Gerrit users report problem: [1] with {{git clone/fetch/pull}} operations on 
> high latency network, after upgrading Gerrit to 2.16.x from 2.15.x that 
> effectively means upgrade of SSHD from 1.6.0 to 1.7.0 and to 2.0.0.
> The error on SSHD 2.0.0 (Gerrit 2.16) is:
> {noformat}
> [2019-09-16 10:27:14,256] [sshd-SshServer[24facb47]-nio2-thread-8] WARN 
> org.apache.sshd.server.session.ServerSessionImpl : 
> exceptionCaught(ServerSessionImpl[usexxx@/172.x.x.1:63306])[state=Opened] 
> SshChannelNotFoundException: Received SSH_MSG_CHANNEL_WINDOW_ADJUST on 
> unknown channel 0
> {noformat}
> Note that the attempt to upgrade SSHD in Gerrit to 2.3.0 in this CL: [2], 
> didn't fix the problem:
> {noformat}
> [2019-09-17 14:05:27,923] [sshd-SshDaemon[189c6683](port=22)-nio2-thread-4] 
> WARN org.apache.sshd.server.session.ServerSessionImpl : 
> exceptionCaught(ServerSessionImpl[<username>@/<ip>:55212])[state=Opened] 
> SshChannelNotFoundException: Received SSH_MSG_CHANNEL_WINDOW_ADJUST on 
> unknown channel 3
> [2019-09-17 14:05:27,924] [SSH git-upload-pack <repo> (<username>)] ERROR 
> com.google.gerrit.sshd.BaseCommand : Internal server error (user <username> 
> account 1000190) during git-upload-pack '<repo path>'
> org.apache.sshd.common.channel.WindowClosedException: Already closed: 
> Window[server/remote](ChannelSession[id=2, 
> recipient=6]-ServerSessionImpl[<username>@/<ip>:55212])
>  at org.apache.sshd.common.channel.Window.waitForCondition(Window.java:302)
>  at org.apache.sshd.common.channel.Window.waitForSpace(Window.java:252)
> {noformat}
> Also note, that downgrade to 1.7.0: [3] didn't fix the problem either. Only 
> after downgrade to SSH 1.6.0: [4] the problem disappeared, and only warnings 
> left in the log:
> {noformat}
> [2019-09-18 09:24:52,755] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 12
> [2019-09-18 09:24:52,756] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 13
> [2019-09-18 09:25:02,576] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 15
> [2019-09-18 09:25:36,508] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 18
> [2019-09-18 09:25:57,527] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 19
> [2019-09-18 09:30:16,488] [NioProcessor-2] WARN 
> org.apache.sshd.server.session.ServerConnectionService : Received 
> SSH_MSG_CHANNEL_CLOSE on unknown channel 21
> {noformat}
> [1] 
> [https://bugs.chromium.org/p/gerrit/issues/detail?id=11491|https://bugs.chromium.org/p/gerrit/issues/detail?id=11491&;]
> [2] [https://gerrit-review.googlesource.com/c/gerrit/+/207752]
> [3] [https://gerrit-review.googlesource.com/c/gerrit/+/237730]
> [4] [https://gerrit-review.googlesource.com/c/gerrit/+/237731]



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to