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

ForceResendWhenCorruptedStore causes session-level messages to be resent #597

Open
chrjohn opened this issue Jan 6, 2023 · 0 comments
Open
Assignees
Labels
Milestone

Comments

@chrjohn
Copy link
Member

chrjohn commented Jan 6, 2023

Describe the bug
When option ForceResendWhenCorruptedStore is enabled and there is a ResendRequest received it will cause session-level messages to be resent (because they are basically treated like application messages and toApp() is even called when resending them). This is not per the FIX spec which states that Reject messages are the only session-level messages which must be resent.

if (MessageUtils.isAdminMessage(msgType) && !forceResendWhenCorruptedStore) {
if (begin == 0) {
begin = msgSeqNum;
}
} else {
initializeResendFields(msg);
if (resendApproved(msg)) {
if (begin != 0) {
generateSequenceReset(receivedMessage, begin, msgSeqNum);
}
getLog().onEvent("Resending message: " + msgSeqNum);
send(msg.toString());
begin = 0;
appMessageJustSent = true;
} else {
if (begin == 0) {
begin = msgSeqNum;
}
}
}

To Reproduce
Unit test to be created.

  • Enable option ForceResendWhenCorruptedStore.
  • Put some session-level messages to the store (e.g. Logon or Logout or Heartbeats).
  • Connect to the session with a higher seqnum than expected. QFJ will then resend these session-level messages when it actually must not.

Expected behavior
There should be either a SequenceReset which skips the sequence numbers or SequenceReset GapFill messages instead of the problematic messages.

@chrjohn chrjohn added the bug label Jan 6, 2023
@chrjohn chrjohn added this to the QFJ 3.0.0 milestone Jul 4, 2024
@chrjohn chrjohn self-assigned this Jul 4, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

1 participant