IP Library Granted Patent US 12,242,509
Granted Patent B2
US 12,242,509 · App. 17/579,161 · Granted Mar 4, 2025

Dynamic pairing mechanism for live database replication

Inventor: Jyoti Ranjan (Hyderabad, IN)
Assignee: Salesforce, Inc.
G06F16/273G06F11/2069G06F16/1844G06F16/2379G06F16/275G06F2209/542
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 12,242,509
App. No.
17/579,161
Granted
Mar 4, 2025
Kind
B2
Abstract

Techniques are provided for copying data from a source database to a target database in a database replication system which includes a database event mining system, an event interceptor process and an event receptor process. In one aspect, the event interceptor detects a failure in the event receptor and switches to a mode in which it rejects new database events from the database event mining system. The event interceptor can also request that the database event mining system resend the event after a specified delay. The event interceptor can also shut itself down for a specified period of time, then restart and listen for a pairing request from the event receptor. In another aspect, the event receptor can request that the database event mining system send event data from a specified system change number.

Claims (46)

1. An apparatus comprising:

one or more processors; and

a non-transitory machine-readable storage medium having program instructions stored thereon that are executable by the one or more processors to cause the apparatus to implement an event interceptor that performs operations comprising:

responding to a first pairing request from an event receptor to pair with the event receptor to establish a connection, wherein the event receptor is operable to write data to a target database based on changes made at a source database, and wherein the connection permits the event interceptor to provide event data to the event receptor;

while paired with the event receptor, receiving, from an event system, events regarding particular changes made at the source database, extracting data of the events and sending the extracted data to the event receptor to implement the particular changes at the target database;

determining that the event receptor has failed and become unreceptive to receiving event data;

in response to the determining that the event receptor has failed, shutting down for a period of time before restarting; and

after the restarting, rejecting received events from the event system until at least a second pairing request is received from the event receptor to reestablish the connection, wherein the second pairing request is indicative that the event receptor has recovered.

2. The apparatus of claim 1 , wherein the operations further comprise:

before the shutting down and after the determining that the event receptor has failed, sending a message to the event system to resend an event for an incomplete transaction.

3. The apparatus of claim 2 , wherein the event system is operable to buffer events which occur while the event interceptor is shut down and while the event interceptor has not yet received the second pairing request from the event receptor after the restarting.

4. The apparatus of claim 2 , wherein the operations further comprise:

responding to the second pairing request from the event receptor to reestablish the connection; and

while paired with the event receptor after the restarting, receiving the event regarding the incomplete transaction from the event system, extracting data of the event regarding the incomplete transaction, and sending the extracted data of the event regarding the incomplete transaction to the event receptor.

5. The apparatus of claim 2 , wherein the operations further comprise, while the event interceptor has not yet received the second pairing request from the event receptor after the restarting, repeatedly receiving and rejecting the event for the incomplete transaction from the database event mining system.

6. The apparatus of claim 5 , wherein the receiving and rejecting is performed without buffering the event for the incomplete transaction.

7. The apparatus of claim 1 , wherein the determining includes periodically performing a heartbeat check of the event receptor.

8. The apparatus of claim 1 , wherein the determining is based on a determination that an ongoing transaction with the event receptor has failed.

9. The apparatus of claim 1 , wherein the operations further comprise:

launching a remote procedure call server to listen for the second pairing request from the event receptor.

10. The apparatus of claim 1 , wherein the extracted data is sent to the event receptor via a remote procedure call.

11. A non-transitory machine-readable storage medium having program instructions stored thereon that are executable by one or more processors to implement an event interceptor that performs operations comprising:

determining whether the event interceptor is paired with an event receptor via a connection, wherein the event receptor is operable to write data to a target database based on changes made at a source database, and wherein the connection permits the event interceptor to provide event data to the event receptor;

in response to a determination that the event interceptor is not paired with the event receptor, rejecting events regarding changes made at the source database;

in response to a determination that the event interceptor is paired with the event receptor, extracting data from events regarding particular changes made at the source database and sending the extracted data to the event receptor to implement the particular changes at the target database;

in response to a determination that the event receptor has failed and become unreceptive to receiving event data, shutting down for a period of time before restarting; and

after the restarting, rejecting received events from an event system until at least a pairing request is received from the event receptor to reestablish the connection, wherein the pairing request is indicative that the event receptor has recovered.

12. The non-transitory machine-readable storage medium of claim 11 , wherein the rejecting is performed without buffering the events.

13. The non-transitory machine-readable storage medium of claim 11 , wherein the operations further comprise:

launching a remote procedure call to listen for the pairing request from the event receptor; and

when the pairing request is detected, exchanging information with the event receptor to pair with the event receptor.

14. The non-transitory machine-readable storage medium of claim 11 ,

wherein the extracted data is sent to the event receptor via a remote procedure call.

15. A method, comprising:

responding, by an event interceptor executing on a computer system, to a first pairing request from an event receptor to pair to establish a connection, wherein the event receptor is operable to write data to a target database based on changes made at a source database, and wherein the connection permits the event interceptor to provide event data to the event receptor for writing to the target database;

receiving, from an event system by the event interceptor, data regarding each event of a batch of events, wherein each event of the batch of events involves a transfer of data from the source database to the target database;

sending, by the event interceptor, the data of each event of the batch of events to the event receptor to implement particular changes at the target database;

determining, by the event interceptor, that the event receptor has failed and become unreceptive to receiving event data;

in response to the determining that the event receptor has failed, the event interceptor shutting down for a period of time before restarting; and

after the restarting, the event interceptor rejecting received events from the event system until at least a second pairing request is received from the event receptor to reestablish the connection, wherein the second pairing request is indicative that the event receptor has recovered.

16. The method of claim 15 , further comprising:

after the sending, receiving a request to resend data regarding a subset of the batch of events starting with a selected event, wherein the request to resend the data comprises an identifier of the selected event, wherein each event of the batch of events is associated with a respective system change number (SCN), and wherein the identifier of the selected event comprises an SCN associated with the selected event.

17. The method of claim 16 , further comprising:

sending, by the event interceptor, the identifier of the selected event to the event system; and

receiving, by the event interceptor, the data regarding the subset of the batch of events.

18. The method of claim 15 , wherein the data of each event of the batch of events is sent to the event receptor via a remote procedure call.

Assignments (2)
CHANGE OF NAME Recorded Oct 30, 2023
From: SALESFORCE.COM, INC.
To: SALESFORCE, INC.
Reel/Frame 065394/0169 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2022
From: RANJAN, JYOTI
To: SALESFORCE.COM, INC.
Reel/Frame 058711/0565 →
Continuity (1)
Related Publication 20230229670A1 · Jul 20, 2023
References Cited (184)
US 5577188A · Zhu · 1996 [cited by applicant]
US 5608872A · Schwartz et al. · 1997 [cited by applicant]
US 5649104A · Carleton et al. · 1997 [cited by applicant]
US 5715450A · Ambrose et al. · 1998 [cited by applicant]
US 5761419A · Schwartz et al. · 1998 [cited by applicant]
US 5819038A · Carleton et al. · 1998 [cited by applicant]
US 5821937A · Tonelli et al. · 1998 [cited by applicant]
US 5831610A · Tonelli et al. · 1998 [cited by applicant]
US 5873096A · Lim et al. · 1999 [cited by applicant]
US 5918159A · Fomukong et al. · 1999 [cited by applicant]
US 5963953A · Cram et al. · 1999 [cited by applicant]
US 5983227A · Nazem et al. · 1999 [cited by applicant]
US 6092083A · Brodersen et al. · 2000 [cited by applicant]
US 6161149A · Achacoso et al. · 2000 [cited by applicant]
US 6169534B1 · Raffel et al. · 2001 [cited by applicant]
US 6178425B1 · Brodersen et al. · 2001 [cited by applicant]
US 6189011B1 · Lim et al. · 2001 [cited by applicant]
US 6216133B1 · Masthoff · 2001 [cited by applicant]
US 6216135B1 · Brodersen et al. · 2001 [cited by applicant]
US 6233617B1 · Rothwein et al. · 2001 [cited by applicant]
US 6236978B1 · Tuzhilin · 2001 [cited by applicant]
US 6266669B1 · Brodersen et al. · 2001 [cited by applicant]
US 6288717B1 · Dunkle · 2001 [cited by applicant]
US 6295530B1 · Ritchie et al. · 2001 [cited by applicant]
US 6324568B1 · Diec et al. · 2001 [cited by applicant]
US 6324693B1 · Brodersen et al. · 2001 [cited by applicant]
US 6336137B1 · Lee et al. · 2002 [cited by applicant]
US D454139S · Feldcamp et al. · 2002 [cited by applicant]
US 6367077B1 · Brodersen et al. · 2002 [cited by applicant]
US 6393605B1 · Loomans · 2002 [cited by applicant]
US 6405220B1 · Brodersen et al. · 2002 [cited by applicant]
US 6411949B1 · Schaffer · 2002 [cited by applicant]
US 6434550B1 · Warner et al. · 2002 [cited by applicant]
US 6446089B1 · Brodersen et al. · 2002 [cited by applicant]
US 6535909B1 · Rust · 2003 [cited by applicant]
US 6549908B1 · Loomans · 2003 [cited by applicant]
US 6553563B2 · Ambrose et al. · 2003 [cited by applicant]
US 6560461B1 · Fomukong et al. · 2003 [cited by applicant]
US 6574635B2 · Stauber et al. · 2003 [cited by applicant]
US 6577726B1 · Huang et al. · 2003 [cited by applicant]
US 6601087B1 · Zhu et al. · 2003 [cited by applicant]
US 6604117B2 · Lim et al. · 2003 [cited by applicant]
US 6604128B2 · Diec et al. · 2003 [cited by applicant]
US 6609150B2 · Lee et al. · 2003 [cited by applicant]
US 6621834B1 · Scherpbier et al. · 2003 [cited by applicant]
US 6654032B1 · Zhu et al. · 2003 [cited by applicant]
US 6665648B2 · Brodersen et al. · 2003 [cited by applicant]
US 6665655B1 · Warner et al. · 2003 [cited by applicant]
US 6684438B2 · Brodersen et al. · 2004 [cited by applicant]
US 6711565B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6724399B1 · Katchour et al. · 2004 [cited by applicant]
US 6728702B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6728960B1 · Loomans et al. · 2004 [cited by applicant]
US 6732095B1 · Warshavsky et al. · 2004 [cited by applicant]
US 6732100B1 · Brodersen et al. · 2004 [cited by applicant]
US 6732111B2 · Brodersen et al. · 2004 [cited by applicant]
US 6754681B2 · Brodersen et al. · 2004 [cited by applicant]
US 6763351B1 · Subramaniam et al. · 2004 [cited by applicant]
US 6763501B1 · Zhu et al. · 2004 [cited by applicant]
US 6768904B2 · Kim · 2004 [cited by applicant]
US 6772229B1 · Achacoso et al. · 2004 [cited by applicant]
US 6782383B2 · Subramaniam et al. · 2004 [cited by applicant]
US 6804330B1 · Jones et al. · 2004 [cited by applicant]
US 6826565B2 · Ritchie et al. · 2004 [cited by applicant]
US 6826582B1 · Chatterjee et al. · 2004 [cited by applicant]
US 6826745B2 · Coker · 2004 [cited by applicant]
US 6829655B1 · Huang et al. · 2004 [cited by applicant]
US 6842748B1 · Warner et al. · 2005 [cited by applicant]
US 6850895B2 · Brodersen et al. · 2005 [cited by applicant]
US 6850949B2 · Warner et al. · 2005 [cited by applicant]
US 6907566B1 · McElfresh et al. · 2005 [cited by applicant]
US 7062502B1 · Kesler · 2006 [cited by applicant]
US 7069231B1 · Cinarkaya · 2006 [cited by applicant]
US 7069497B1 · Desai · 2006 [cited by applicant]
US 7100111B2 · McElfresh et al. · 2006 [cited by applicant]
US 7181758B1 · Chan · 2007 [cited by applicant]
US 7269590B2 · Hull et al. · 2007 [cited by applicant]
US 7289976B2 · Kihneman et al. · 2007 [cited by applicant]
US 7340411B2 · Cook · 2008 [cited by applicant]
US 7356482B2 · Frankland et al. · 2008 [cited by applicant]
US 7373599B2 · McElfresh et al. · 2008 [cited by applicant]
US 7401094B1 · Kesler · 2008 [cited by applicant]
US 7406501B2 · Szeto et al. · 2008 [cited by applicant]
US 7412455B2 · Dillon · 2008 [cited by applicant]
US 7454509B2 · Boulter et al. · 2008 [cited by applicant]
US 7508789B2 · Chan · 2009 [cited by applicant]
US 7599935B2 · La Rotonda et al. · 2009 [cited by applicant]
US 7603331B2 · Tuzhilin et al. · 2009 [cited by applicant]
US 7603483B2 · Psounis et al. · 2009 [cited by applicant]
US 7620655B2 · Larsson et al. · 2009 [cited by applicant]
US 7644122B2 · Weyer et al. · 2010 [cited by applicant]
US 7668861B2 · Steven · 2010 [cited by applicant]
US 7698160B2 · Beaven et al. · 2010 [cited by applicant]
US 7730478B2 · Weissman · 2010 [cited by applicant]
US 7747648B1 · Kraft et al. · 2010 [cited by applicant]
US 7779039B2 · Weissman et al. · 2010 [cited by applicant]
US 7779475B2 · Jakobson et al. · 2010 [cited by applicant]
US 7827208B2 · Bosworth et al. · 2010 [cited by applicant]
US 7853881B1 · Aly Assal et al. · 2010 [cited by applicant]
US 7945653B2 · Zukerberg et al. · 2011 [cited by applicant]
US 8005896B2 · Cheah · 2011 [cited by applicant]
US 8014943B2 · Jakobson · 2011 [cited by applicant]
US 8015495B2 · Achacoso et al. · 2011 [cited by applicant]
US 8032297B2 · Jakobson · 2011 [cited by applicant]
US 8073850B1 · Hubbard et al. · 2011 [cited by applicant]
US 8082301B2 · Ahlgren et al. · 2011 [cited by applicant]
US 8095413B1 · Beaven · 2012 [cited by applicant]
US 8095531B2 · Weissman et al. · 2012 [cited by applicant]
US 8095594B2 · Beaven et al. · 2012 [cited by applicant]
US 8103611B2 · Tuzhilin et al. · 2012 [cited by applicant]
US 8150913B2 · Cheah · 2012 [cited by applicant]
US 8209308B2 · Rueben et al. · 2012 [cited by applicant]
US 8209333B2 · Hubbard et al. · 2012 [cited by applicant]
US 8275836B2 · Beaven et al. · 2012 [cited by applicant]
US 8457545B2 · Chan · 2013 [cited by applicant]
US 8484111B2 · Frankland et al. · 2013 [cited by applicant]
US 8490025B2 · Jakobson et al. · 2013 [cited by applicant]
US 8504945B2 · Jakobson et al. · 2013 [cited by applicant]
US 8510045B2 · Rueben et al. · 2013 [cited by applicant]
US 8510664B2 · Rueben et al. · 2013 [cited by applicant]
US 8566301B2 · Rueben et al. · 2013 [cited by applicant]
US 8646103B2 · Jakobson et al. · 2014 [cited by applicant]
US 10216820B1 · Holenstein · 2019 [cited by examiner]
US 11748212B1 · Holenstein · 2023 [cited by examiner]
US 20010044791A1 · Richter et al. · 2001 [cited by applicant]
US 20020072951A1 · Lee et al. · 2002 [cited by applicant]
US 20020082892A1 · Raffel et al. · 2002 [cited by applicant]
US 20020129352A1 · Brodersen et al. · 2002 [cited by applicant]
US 20020140731A1 · Subramaniam et al. · 2002 [cited by applicant]
US 20020143997A1 · Huang et al. · 2002 [cited by applicant]
US 20020162090A1 · Parnell et al. · 2002 [cited by applicant]
US 20020165742A1 · Robbins · 2002 [cited by applicant]
US 20030004971A1 · Gong · 2003 [cited by applicant]
US 20030018705A1 · Chen et al. · 2003 [cited by applicant]
US 20030018830A1 · Chen et al. · 2003 [cited by applicant]
US 20030066031A1 · Laane et al. · 2003 [cited by applicant]
US 20030066032A1 · Ramachandran et al. · 2003 [cited by applicant]
US 20030069936A1 · Warner et al. · 2003 [cited by applicant]
US 20030070000A1 · Coker et al. · 2003 [cited by applicant]
US 20030070004A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030070005A1 · Mukundan et al. · 2003 [cited by applicant]
US 20030074418A1 · Coker et al. · 2003 [cited by applicant]
US 20030120675A1 · Stauber et al. · 2003 [cited by applicant]
US 20030151633A1 · George et al. · 2003 [cited by applicant]
US 20030159136A1 · Huang et al. · 2003 [cited by applicant]
US 20030187921A1 · Diec et al. · 2003 [cited by applicant]
US 20030189600A1 · Gune et al. · 2003 [cited by applicant]
US 20030204427A1 · Gune et al. · 2003 [cited by applicant]
US 20030206192A1 · Chen et al. · 2003 [cited by applicant]
US 20030225730A1 · Warner et al. · 2003 [cited by applicant]
US 20040001092A1 · Rothwein et al. · 2004 [cited by applicant]
US 20040010489A1 · Rio et al. · 2004 [cited by applicant]
US 20040015981A1 · Coker et al. · 2004 [cited by applicant]
US 20040027388A1 · Berg et al. · 2004 [cited by applicant]
US 20040128001A1 · Levin et al. · 2004 [cited by applicant]
US 20040186860A1 · Lee et al. · 2004 [cited by applicant]
US 20040193510A1 · Catahan et al. · 2004 [cited by applicant]
US 20040199489A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199536A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040199543A1 · Braud et al. · 2004 [cited by applicant]
US 20040249854A1 · Barnes-Leon et al. · 2004 [cited by applicant]
US 20040260534A1 · Pak et al. · 2004 [cited by applicant]
US 20040260659A1 · Chan et al. · 2004 [cited by applicant]
US 20040268299A1 · Lei et al. · 2004 [cited by applicant]
US 20050050555A1 · Exley et al. · 2005 [cited by applicant]
US 20050091098A1 · Brodersen et al. · 2005 [cited by applicant]
US 20080249972A1 · Dillon · 2008 [cited by applicant]
US 20090059788A1 · Granovsky · 2009 [cited by examiner]
US 20090063415A1 · Chatfield et al. · 2009 [cited by applicant]
US 20090100342A1 · Jakobson · 2009 [cited by applicant]
US 20090177744A1 · Marlow et al. · 2009 [cited by applicant]
US 20110218958A1 · Warshavsky · 2011 [cited by applicant]
US 20110247051A1 · Bulumulla · 2011 [cited by applicant]
US 20120042218A1 · Cinarkaya · 2012 [cited by applicant]
US 20120233137A1 · Jakobson et al. · 2012 [cited by applicant]
US 20120290407A1 · Hubbard et al. · 2012 [cited by applicant]
US 20130212497A1 · Zelenko et al. · 2013 [cited by applicant]
US 20130218948A1 · Jakobson · 2013 [cited by applicant]
US 20130218949A1 · Jakobson · 2013 [cited by applicant]
US 20130218966A1 · Jakobson · 2013 [cited by applicant]
US 20130247216A1 · Cinarkaya · 2013 [cited by applicant]
US 20140359537A1 · Jackobson et al. · 2014 [cited by applicant]
US 20180176307A1 · Kancherla · 2018 [cited by examiner]
US 20210182162A1 · Kohli · 2021 [cited by examiner]