| CPC G06F 11/2023 (2013.01) [G06F 11/2097 (2013.01); G06F 11/1446 (2013.01); G06F 11/1471 (2013.01)] | 20 Claims |

|
1. A system for pause-less end-of-interval messaging with failover protection, comprising:
one or more processors programmed to execute a first instance of a matching engine and a second instance of the matching engine, the first instance and the second instance executing on the same or different processors of the system, wherein the second instance is a backup instance for fault tolerance if the first instance becomes unavailable;
wherein each of the first instance and the second instance is programmed to:
receive a plurality of messages over time from a sequencer, each message of the plurality of messages identifying a respective order from a participant to be matched with another order via the matching engine and having been sequenced with respect to other messages of the plurality of messages, wherein each order has an expiration after which the order should no longer be matched;
receive, from the sequencer, an end-of-interval (EOI) rollover message associated with an EOI expiration that indicates orders that have expired based on a respective expiration of the order and the EOI expiration are to be expired and no longer matched to other orders;
responsive to the EOI rollover message:
identify a to-be-expired order based on its expiration,
generate a loopback message that identifies the to-be-expired order without expiring the to-be-expired order while continuing to receive new messages for new orders from the sequencer, and
transmit the loopback message to the sequencer, which will sequence the loopback message along with new messages for new orders that are received after the EOI rollover message;
receive one or more new messages from the sequencer;
determine that at least one new message of the one or more new messages is the loopback message or a counterpart loopback message sent to the sequencer by the other instance of the matching engine; and
expire the order corresponding to the loopback message or the counterpart loopback message, wherein expiration of the order occurs on both the first instance and the second instance without blocking new messages from the sequencer.
|