-
Notifications
You must be signed in to change notification settings - Fork 625
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
Proposal: add DoNotFulfillResendRequest exception to allow applications to prevent resend #667
Conversation
Applications can throw this exception to abort the fulfillment of an incoming ResendRequest. Example use case: the counterparty sends an excessive number of ResendRequests in error, and we want to prevent quickfix from fulfilling them, spiking cpu and disk I/O, overwhelming the server. Further action, such as sending Rejects to alert the counterparty to the problem, are left up to Applications.
Hi @mgatny , thanks for the PR. Sounds like a sensible enhancement. Set quickfixj/quickfixj-core/src/main/java/quickfix/Session.java Lines 1201 to 1227 in e612ee6
One question: are redundant resend requests not ignored? They actually should. P.S.: Also see #639 |
RejectMessageOnUnhandledException=Y is interesting, I didn't know there was such a thing. Maybe instead of a new exception, we could modify that logic slightly so that a reject reason is given (currently it looks like it will give a reason of OTHER with a blank Text field). One (potential) advantage of the new exception is that it lets the Application decide what the behavior should be (e.g. send a Reject, send one of the newer throttling-related messages, etc) but maybe that isn't useful enough to warrant a whole new exception. Re: redundant resend requests: as far as I know, qf/j does a proper job of not sending them (unless configured to do so), but it fulfills every resend request it receives, even if redundant. |
I've added Redundant resend requests: you are right, I mixed that one up. |
Hi @mgatny |
Hi Chris, still waiting on additional feedback from the client, but for now RejectMessageOnUnhandledException is working for them. |
Superseded by #851 |
Adds exception DoNotFulfillResendRequest to fromAdmin, in the spirit of RejectLogon, to alter the behavior of the engine.
Applications can throw this exception to abort the fulfillment of an incoming ResendRequest.
The example use case for this comes from real life, in production at one of the largest derivatives exchanges:
I know this is a slightly unusual use case, but it's a real one, at a very large institution. This was the best solution we could think of -- if there's a better way to go about it, we'd love to hear your feedback. Thanks!