US 7,480,827 B2
Fault tolerance and failover using active copy-cat
Paul J. Callaway, Chicago, Ill. (US); Robert Hagemann, III, Chicago, Ill. (US); Zuber Shethwala, Hoffman Estates, Ill. (US); Troy Reese, South Elgin, Ill. (US); Paul Andrew Bauerschmidt, Chicago, Ill. (US); and Enrico Ferrari, Farmington Hills, Mich. (US)
Assigned to Chicago Mercantile Exchange, Chicago, Ill. (US)
Filed on Aug. 11, 2006, as Appl. No. 11/502,998.
Prior Publication US 2008/0126853 A1, May 29, 2008
Int. Cl. G06F 11/00 (2006.01); G06F 11/14 (2006.01)
U.S. Cl. 714—38  [714/11; 714/6] 13 Claims
OG exemplary drawing
 
1. A method of providing fault tolerance to a primary instance, the method comprising:
receiving a copy of a first input transmitted to the primary instance;
receiving a copy of a second input transmitted to the primary instance, the copy of the second input being received subsequent to the copy of the first input;
waiting, in response to the receiving of the copy of the first input, for the primary instance to transmit a first primary result based on the first input;
waiting, in response to the receiving of the copy of the second input, for the primary instance to transmit a second primary result based on the second input;
forwarding the copy of the first input to a backup instance operative to generate a first backup result based on the forwarded copy of the first input upon the transmission of the first and second primary results by the primary instance, the first primary result having been transmitted prior to the second primary result;
forwarding the copy of the second input to the backup instance operative to generate a second backup result based on the forwarded copy of the second input upon the transmission of the first and second primary results by the primary instance, the second primary result having transmitted prior to the first primary result;
determining that the first primary result is not likely to be transmitted;
preventing, based on the determination that the first primary result is not likely to be transmitted, the primary instance from completing a transaction that the primary instance is supposed to complete to continue operating; and
transmitting the first backup result when the first primary result is not likely to be transmitted.