IP Library Granted Patent US 8,782,004
Granted Patent B2
US 8,782,004 · App. 13/355,726 · Granted Jul 15, 2014

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 8,782,004
App. No.
13/355,726
Granted
Jul 15, 2014
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 (58)

1. A computer-implemented method comprising:

maintaining, at a replication site of a plurality of replication sites arranged in a multi-master topology, a data object comprising an access controlled data object data unit;

maintaining, at the replication site, a first version vector for the access controlled data object data unit, the first version vector representing a first update to the access controlled data object data unit at a replication site of the plurality of replication sites;

receiving a data object change update for the data object from another replication site of the plurality of replication sites;

wherein the data object change update comprises a data object data unit update;

wherein the data object data unit update is associated in the data object change update with a second version vector, the second version vector representing a second update to the access controlled data object data unit at a replication site of the plurality of replication sites;

determining, based at least in part upon the second version vector associated with the data object data unit update and the first version vector maintained at the replication site for the access controlled data object data unit, whether the data object data unit update conflicts with the access controlled data object data unit;

if a conflict does not exist, applying the data object change update to the data object maintained at the replication site;

if a conflict exists, applying the data object change update to the data object maintained at the replication site after the conflict has been deconflicted;

wherein applying the data object change update to the data object maintained at the replication site includes comparing the second version vector to the first version vector to determine whether the second update happened before, happened after, or happened concurrently with the first update;

if the second update happened after the first update, applying the data object data unit update to the access controlled data object data unit and merging the second version vector associated with the data object data unit update and the first version vector associated with the access controlled data object data unit without incrementing the resulting merged version vector;

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

2. The method of claim 1 , wherein the data object corresponds to a data record in a database; wherein the access controlled data object data unit is a property, attribute, or field of the data record.

3. The method of claim 1 , wherein the data object corresponds to a document of a file system; wherein the access controlled data object data unit is a portion of the document.

4. The method of claim 1 , further comprising not applying the data object data unit update to the data object maintained at the replication site if the data object data unit update happened before the access controlled data object data unit.

5. The method of claim 1 , further comprising:

if the second update happened concurrently with the first update, applying results of a deconfliction between the data object data unit update and the access controlled data object data unit to the access controlled data object data unit and incrementing a version vector generated by merging the second version vector associated with the data object data unit update and the first version vector associated with the access controlled data object data unit.

6. The method of claim 1 , wherein the first version vector maintained for the access controlled data object unit at the replication site is associated at the replication site with the data object.

7. The method of claim 1 , wherein the first version vector maintained for the access controlled data object unit at the replication site is associated at the replication site with the access controlled data object unit.

8. The method of claim 1 , wherein, because of an access control filter at the other replication site, the data object change update received from the other replication site does not include a data object data unit update for an update to an access controlled data object data unit of the data object made at a replication site of the plurality of replication sites.

9. A non-transitory computer-readable medium storing instructions which, when executed by one or more processors, causes performance of a method comprising:

maintaining, at a replication site of a plurality of replication sites arranged in a multi-master topology, a data object comprising an access controlled data object data unit;

maintaining, at the replication site, a first version vector for the access controlled data object data unit, the first version vector representing a first update to the access controlled data object data unit at a replication site of the plurality of replication sites;

receiving a data object change update for the data object from another replication site of the plurality of replication sites;

wherein the data object change update comprises a data object data unit update;

wherein the data object data unit update is associated in the data object change update with a second version vector, the second version vector representing a second update to the access controlled data object data unit at a replication site of the plurality of replication sites;

determining, based at least in part upon the second version vector associated with the data object data unit update and the first version vector maintained at the replication site for the access controlled data object data unit, whether the data object data unit update conflicts with the access controlled data object data unit;

if a conflict does not exist, applying the data object change update to the data object maintained at the replication site;

if a conflict exists, applying the data object change update to the data object maintained at the replication site after the conflict has been deconflicted;

wherein applying the data object change update to the data object maintained at the replication site includes comparing the second version vector to the first version vector to determine whether the second update happened before, happened after, or happened concurrently with the first update;

if the second update happened after the first update, applying the data object data unit update to the access controlled data object data unit and merging the second version vector associated with the data object data unit update and the first version vector associated with the access controlled data object data unit without incrementing the resulting merged version vector;

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

10. The medium of claim 9 , wherein the data object corresponds to a data record in a database; wherein the access controlled data object data unit is a property, attribute, or field of the data record.

11. The medium of claim 9 , wherein the data object corresponds to a document of a file system; wherein the access controlled data object data unit is a portion of the document.

12. The medium of claim 9 , the method further comprising not applying the data object data unit update to the data object maintained at the replication site if the data object data unit update happened before the access controlled data object data unit.

13. The medium of claim 9 , the method further comprising:

if the second update happened concurrently with the first update, applying results of a deconfliction between the data object data unit update and the access controlled data object data unit to the access controlled data object data unit and incrementing a version vector generated by merging the second version vector associated with the data object data unit update and the first version vector associated with the access controlled data object data unit.

14. The medium of claim 9 , wherein the first version vector maintained for the access controlled data object unit at the replication site is associated at the replication site with the data object.

15. The medium of claim 9 , wherein the first version vector maintained for the access controlled data object unit at the replication site is associated at the replication site with the access controlled data object unit.

16. The medium of claim 9 , wherein, because of an access control filter at the other replication site, the data object change update received from the other replication site does not include a data object data unit update for an update to an access controlled data object data unit of the data object made at a replication site of the plurality of replication sites.

17. A computer-implemented method, comprising:

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

storing a first version of a data object, the first version of the data object having a plurality of properties, each property of the plurality of properties being associated with a version vector and an access control list;

updating a first property of the plurality of properties;

in response to updating the first property, incrementing the version vector associated with the first property;

updating a second property of the plurality of properties;

in response to updating the second property, incrementing the version vector associated with the second property;

determining, based on an access control filter, to share the update to the first property with a second replication site of the plurality of replication sites;

determining, based on the access control filter, not to share the update to the second property with the second replication site; and

sending a data object change update to the second replication site;

wherein the data object change update includes information pertaining to the update to the first property and the incremented version vector associated with the first property;

wherein the data object change update does not include information pertaining to the update to the second property;

at the second replication site of the plurality of replication sites:

maintaining a second version of the data object;

wherein the second version of the data object has the first property but not the second property;

receiving the data object change update from the first replication site;

determining, based at least in part upon the incremented version vector associated with the first property in the data object change update, whether the information pertaining to the update to the first property in the data object change update conflicts with the first property at the second replication site; and

wherein the method is performed by one or more computing devices.

Assignments (9)
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 →
SECURITY INTEREST Recorded Jul 3, 2022
From: PALANTIR TECHNOLOGIES INC.
To: WELLS FARGO BANK, N.A.
Reel/Frame 060572/0506 →
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 →
CHANGE OF NAME Recorded Dec 31, 2020
From: PALANTIR TECHNOLOGIES, INC.
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 054788/0751 →
RELEASE OF SECURITY INTEREST Recorded Jun 4, 2020
From: ROYAL BANK OF CANADA
To: PALANTIR TECHNOLOGIES INC.
Reel/Frame 052856/0382 →
SECURITY INTEREST Recorded Jun 4, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 052856/0817 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: MORGAN STANLEY SENIOR FUNDING, INC., AS ADMINISTRATIVE AGENT
Reel/Frame 051713/0149 →
SECURITY INTEREST Recorded Jan 27, 2020
From: PALANTIR TECHNOLOGIES INC.
To: ROYAL BANK OF CANADA, AS ADMINISTRATIVE AGENT
Reel/Frame 051709/0471 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 23, 2012
From: DUCOTT, RICHARD ALLEN, III; BRAINARD, KATHERINE; GARROD, JOHN KENNETH; CARRINO, JOHN ANTONIO
To: PALANTIR TECHNOLOGIES, INC.
Reel/Frame 027574/0976 →