IP Library Granted Patent US 9,436,752
Granted Patent B2
US 9,436,752 · App. 12/873,489 · Granted Sep 6, 2016

High availability via data services

Inventors: Vivek P. Singhal (Los Altos, CA); Ian David Emmons (Pittsford, NY)
Assignee: PROGRESS SOFTWARE CORPORATION
G06F17/30578G06F11/1469G06F11/2097G06F17/30067G06F17/30286G06F11/1658Y10S707/99952Y10S707/99953
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 9,436,752
App. No.
12/873,489
Filed
Sep 1, 2010
Granted
Sep 6, 2016
Kind
B2
Art Unit
2161
USPC
714/15
Abstract

Application-level replication, the synchronization of data updates within a cluster of application servers, may be provided by having application servers themselves synchronize all updates to multiple redundant databases, precluding the need for database-level replication. This may be accomplished by first sending a set of database modifications requested by the transaction to a first database. Then a message may be placed in one or more message queues, the message indicating the objects inserted, updated, or deleted in the transaction. Then a commit command may be sent to the first database. The set of database modifications and a commit command may then be sent to a second database. This allows for transparent synchronization of the databases and quick recovery from a database failure, while imposing little performance or network overhead.

Claims (30)

1. A method for failover from a failure of an application server during a transaction, the method comprising:

determining, using one or more processors, whether a message has been in a message queue for a predefined period of time;

discarding the message when a transaction ID for the message is not included in a transaction ID table in a first database and the message has been in the message queue for a predefined period of time;

replaying a set of database modifications to a second database when a transaction ID for the message is included in the transaction ID table in the first database but not in a transaction ID table in the second database;

determining whether the failure of the application server was detected during transmission of a cache synchronization message to a second application server or to a recovery server; and

subsequent to detecting the failure of the application server during transmission of a cache synchronization message to the second application server or to the recovery server, transmitting the cache synchronization message to the second application server to update a cache of the second application server.

2. The method of claim 1 , further comprising:

determining whether the failure of the application server was detected during a communication with a first database or with the message queue; and

aborting the transaction when the failure was detected during a communication with the first database or with the message queue.

3. The method of claim 1 , further comprising:

transmitting a cache synchronization message to a second application server, the cache synchronization message identifying a cache update to be performed by the second application server.

4. The method of claim 1 , wherein determining whether the message has been in the message queue for the predefined period of time further comprises:

responsive to the message not being in the message queue for the predefined period of time, transmitting a cache synchronization message to a second application server, the cache synchronization message identifying a cache update to be performed by the second application server.

5. The method of claim 1 , wherein the transaction ID table includes a first column and a second column, the first column including one or more transaction IDs and a second column including a timestamp recording a row's creation time.

6. The method of claim 1 , wherein one or more tables of the first database contain an optimistic control attribute used to detect and resolve conflicts resulting from race conditions.

7. A system for failover from a failure of an application server during a transaction, the system comprising:

one or more processors; and

a memory storing instructions that when executed by the one or more processors cause the system to:

detect a failure of an application server;

determine whether a message has been in a message queue for a predefined period of time;

discard the message when a transaction ID for the message is not included in a transaction ID table in a first database and the message has been in the message queue for a predefined period of time;

replay a set of database modifications to a second database when a transaction ID for said message is included in the transaction ID table in the first database but not in a transaction ID table in the second database;

determine whether the failure of the application server was detected during transmission of a cache synchronization message to a second application server or to a recovery server; and

subsequent to detecting the failure of the application server during transmission of the cache synchronization message to the second application server or to the recovery server, transmitting the cache synchronization message to the second application server to update a cache of the second application server.

8. The system of claim 7 , further comprising instructions that when executed by the one or more processors cause the system to:

determine whether the failure of the application server was detected during a communication with a first database or with the message queue; and

abort the transaction when the failure was detected during a communication with the first database or the message queue.

9. The system of claim 7 , further comprising instructions that when executed by the one or more processors cause the system to:

transmit a cache synchronization message to a second application server, the cache synchronization message identifying a cache update to be performed by the second application server.

10. The apparatus of claim 7 , wherein the transaction ID table includes a first column and a second column, the first column including one or more transaction IDs and a second column including a timestamp recording a row's creation time.

Assignments (4)
SECURITY INTEREST Recorded Jan 25, 2022
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 058840/0099 →
SECURITY INTEREST Recorded Apr 30, 2019
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., ADMINISTRATIVE AGENT
Reel/Frame 049031/0684 →
SECURITY INTEREST Recorded Dec 18, 2017
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 044889/0325 →
SECURITY INTEREST Recorded Dec 2, 2014
From: PROGRESS SOFTWARE CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 034504/0178 →
Continuity (2)
Continuation 11874116 · Oct 17, 2007
Related Publication 20110060939A1 · Mar 10, 2011