Skip to content

reconnect issue#308

Open
Metis-Adrastea wants to merge 1 commit intorsocket:masterfrom
Metis-Adrastea:master
Open

reconnect issue#308
Metis-Adrastea wants to merge 1 commit intorsocket:masterfrom
Metis-Adrastea:master

Conversation

@Metis-Adrastea
Copy link
Copy Markdown

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