Skip to content

reconnect issue #308

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open

Conversation

Metis-Adrastea
Copy link

I have encountered a problem with reconnecting from the client side. The reconnectable block is triggered only before the first successful connection.

Here is a minimal example that reproduces the problem.
If the server is initially offline, the reconnectable block is called until a successful connection. But if the server is restarted after a successful connection, the connection is no longer restored, the reconnectable block is not called.

It looks like the problem is on the client side in io.rsocket.kotlin.connection.KeepAliveHandler
The coroutine is suspended on outbound.sendKeepAlive(true, EmptyBuffer, 0) and can no longer complete when keepAlive.maxLifetimeMillis is exceeded. If you look deeper, it looks like the frame is sent to the io.rsocket.kotlin.transport.internal.PrioritizationFrameQueue#priorityFrames channel, it looks like it just overflows, which leads to the suspension of the coroutine. I tried to move the logic for sending to a child coroutine - this solves the problem

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant