IP Library Granted Patent US 9,189,492
Granted Patent B2
US 9,189,492 · App. 14/286,485 · Granted Nov 17, 2015

Cross-ACL multi-master replication

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,189,492
App. No.
14/286,485
Granted
Nov 17, 2015
Kind
B2
Abstract

Techniques for cross-ACL multi-master replication are provided. The techniques allow a replication site in a multi-master replication system implementing an asynchronous replication protocol and an access control policy to appropriately apply received data change updates to data maintained at the site even where a data change update is missing information because of the implemented access control policy.

Claims (70)

1. A method comprising:

at a first replication site of a plurality of replication sites:

receiving a first update to a data record from a second replication site of the plurality of replication sites;

receiving a second update to the data record from a third replication site of the plurality of replication sites;

wherein the first update comprises a first value for a first field of the data record and a first value for a second field of the data record;

wherein the second update comprises a second value for the first field and a first value for a third field of the data record;

wherein the first update does not include a value for the third field;

wherein the second update does not include a value for the second field;

responsive to receiving the first update, creating the data record in a database comprising the first value for the first field and the first value for the second field;

responsive to receiving the second update, detecting a concurrency conflict between the first value for the first field of the data record in the database and the second value for the first field in the second update;

after the concurrency conflict is deconflicted, updating the data record in the database to include a deconflicted value for the first field and the first value for the third field from the second update;

wherein the method is performed by one or more computing devices at the first replication site.

2. The method of claim 1 , wherein detecting the concurrency conflict comprises comparing a first version vector to a second version vector, and determining the concurrency conflict exists based on results of the comparing.

3. The method of claim 1 , further comprising automatically deconflicting the concurrency conflict.

4. The method of claim 1 , wherein the deconflicted value for the first field is one of the first value for the first field or the second value for the first field.

5. The method of claim 1 , wherein the deconflicted value for the first field is neither the first value for the first field nor the second value for the first field.

6. A method comprising:

at a first replication site of a plurality of replication sites:

receiving a first update to a file from a second replication site of the plurality of replication sites;

receiving a second update to the file from a third replication site of the plurality of replication sites;

wherein the first update comprises a first value for a first portion of the file and a first value for a second portion of the file;

wherein the second update comprises a second value for the first file portion and a first value for a third portion of the file;

wherein the first update does not include a value for the third portion;

wherein the second update does not include a value for the second portion;

responsive to receiving the first update, creating the file in a data storage medium comprising the first value for the first portion and the first value for the second portion;

responsive to receiving the second update, detecting a concurrency conflict between the first value for the first portion of the file in the data storage medium and the second value for the first portion in the second update;

after the concurrency conflict is deconflicted, updating the file in the data storage medium to include a deconflicted value for the first portion and the first value for the third portion from the second update;

wherein the method is performed by one or more computing devices at the first replication site.

7. The method of claim 6 , wherein detecting the concurrency conflict comprises comparing a first version vector to a second version vector, and determining the concurrency conflict exists based on results of the comparing.

8. The method of claim 6 , further comprising automatically deconflicting the concurrency conflict.

9. The method of claim 6 , wherein the deconflicted value for the first field is one of the first value for the first field or the second value for the first field.

10. The method of claim 6 , wherein the deconflicted value for the first field is neither the first value for the first field nor the second value for the first field.

11. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices at a first replication site of a plurality of replication sites, causes the one or more computing devices to perform the method of claim 1 .

12. One or more non-transitory computer-readable media storing instructions which, when executed by one or more computing devices at a first replication site of a plurality of replication sites, causes the one or more computing devices to perform the method of claim 6 .

13. A method comprising:

at a first replication site of a plurality of replication sites, the first replication site comprising one or more computing devices and a first database, the one or more computing devices at the first replication site performing the steps of:

storing, in the first database, a data object comprising a first value for a first property of the data object, a first value for a second property of the data object, and a first value for a third property of the data object;

filtering, from a first update to be sent to a second replication site of the plurality of replication sites, the first value for the third property, based on a first access control list associated in the first database with the third property and based on a first access control filter that governs sharing of information in the first database by the first replication site with the second replication site;

filtering, from a second update to be sent to a third replication site of the plurality of replication sites, the first value for the second property, based on a second access control list associated in the first database with the second property and based on a second access control filter that governs sharing of information in the first database by the first replication site with the third replication site;

at a fourth replication site of the plurality of replication sites, the fourth replication site comprising one or more computing devices and a second database, the one or more computing devices at the fourth replication site performing the steps of:

receiving a third update to the data object from the second replication site;

receiving a fourth update to the data object from the third replication site;

wherein the third update comprises a second value for the first property and the first value for the second property;

wherein the fourth update comprises a third value for the first property and the first value for the third property;

responsive to receiving the third update, creating the data record in the second database comprising the second value for the first property and the first value for the second property;

responsive to receiving the fourth update, detecting a concurrency conflict between the second value for the first property of the data record in the second database and the third value for the first property in the fourth update;

after the concurrency conflict is deconflicted, updating the data record in the second database to include a deconflicted value for the first property and the first value for the third property from the fourth update.

14. The method of claim 13 , wherein detecting the concurrency conflict comprises comparing a first version vector to a second version vector, and determining the concurrency conflict exists based on results of the comparing.

15. The method of claim 13 , further comprising automatically deconflicting the concurrency conflict.

16. The method of claim 13 , wherein the deconflicted value for the first property is one of the second value for the first property or the third value for the first property.

17. The method of claim 13 , wherein the deconflicted value for the first property is neither the second value for the first property nor the third value for the first property.

18. The method of claim 13 , wherein the first access control list associated in the first database with the third property comprises a security classification level; and wherein the first access control filter is configured to prevent the first replication site from sharing, with the second replication site, information in the first database associated with the security classification level.

19. The method of claim 13 , wherein the second access control list associated in the first database with the second property comprises a security classification level; and wherein the second access control filter is configured to prevent the first replication site from sharing, with the third replication site, information in the first database associated with the security classification level.

20. A system comprising:

one or more computing devices and a first database at a first replication site of a plurality of replication sites;

one or more computing devices at a second replication site of the plurality of replication sites;

one or more computing devices at a third replication site of the plurality of replication sites;

one or more computing devices at a fourth replication site of the plurality of replication sites;

wherein the one or more computing devices at the first replication site are configured to:

store, in the first database, a data object comprising a first value for a first property of the data object, a first value for a second property of the data object, and a first value for a third property of the data object;

filter, from a first update to be sent to the second replication site, the first value for the third property, based on a first access control list associated in the first database with the third property and based on a first access control filter that governs sharing of information in the first database by the first replication site with the second replication site;

filter, from a second update to be sent to the third replication site, the first value for the second property, based on a second access control list associated in the first database with the second property and based on a second access control filter that governs sharing of information in the first database by the first replication site with the third replication site;

wherein the one or more computing devices at the fourth replication site are configured to:

receive a third update to the data object from the second replication site;

receive a fourth update to the data object from the third replication site;

wherein the third update comprises a second value for the first property and the first value for the second property;

wherein the fourth update comprises a third value for the first property and the first value for the third property;

responsive to receiving the third update, create the data record in the second database comprising the second value for the first property and the first value for the second property;

responsive to receiving the fourth update, detect a concurrency conflict between the second value for the first property of the data record in the second database and the third value for the first property in the fourth update;

after the concurrency conflict is deconflicted, update the data record in the second database to include a deconflicted value for the first property and the first value for the third property from the fourth update.

Assignments (7)
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
ASSIGNMENT OF INTELLECTUAL PROPERTY SECURITY AGREEMENTS Recorded Jul 3, 2022
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0640 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ERRONEOUSLY LISTED PATENT BY REMOVING APPLICATION NO. 16/832267 FROM THE RELEASE OF SECURITY INTEREST PREVIOUSLY RECORDED ON REEL 052856 FRAME 0382. ASSIGNOR(S) HEREBY CONFIRMS THE RELEASE OF SECURITY INTEREST. Recorded Aug 26, 2021
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 057335/0753 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →