Skip to content
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

Issuing "TestRequest" while processing results of "ResendRequest" causes timeout/disconnect #281

Open
BrianCameronBooth opened this issue Oct 3, 2014 · 0 comments

Comments

@BrianCameronBooth
Copy link

SCENARIO:

  1. Client connects and processes messages normally for a period of time.
  2. Client is disconnected for whatever reason (network outage, process termination etc)
  3. Client initiates connection sometime later.
  4. Client recognizes MsgSeqNum is "too high" on incoming messages and issues a ResendRequest.
  5. Older messages start arriving to satisfy the "ResendRequest" while at the same time new messages are arriving.
  6. All new messages are queued while NextTargetMsgSeqNum is incremented by incoming PossDupFlag=Y messages.
  7. At some point client decides it is time for a "TestRequest"
  8. The resulting "Heartbeat" response arrives immediately but is reported to have a MsgSeqNum that is "too high".
  9. Becaues of the sequence number being too high, the "Heartbeat" response is also queued plus SessionState.LastReceivedTimeDT is not updated.
  10. The alloted time for processing the Heartbeat response elapses
  11. The client then calls Session.Disconnect("Timed out waiting for heartbeat");
  12. Repeat steps 3-11 potentially multiple times before the session becomes stable.

POTENTIAL FIX:
Don't queue heartbeat responses?

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

No branches or pull requests

1 participant