IP Library Granted Patent US 10,776,384
Granted Patent B1
US 10,776,384 · App. 14/265,247 · Granted Sep 15, 2020

Method, server and system for criteria-based assured replication

Inventors: Patrick Edward Jackson (Austin, TX); David Michael Ely (Austin, TX); Bjorn Aannestad (Austin, TX)
Assignee: Ping Identity Corporation
G06F16/27G06F16/282
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 10,776,384
App. No.
14/265,247
Granted
Sep 15, 2020
Kind
B1
Abstract

A method of replicating changes to a dataset includes receiving from a client a request for an operation on the dataset, dynamically selecting from a plurality of replication assurance policies a selected replication assurance policy for the operation, the selected replication assurance policy determining a selected assurance level, wherein the selection is based on at least one of an operation criteria or a connection criteria, submitting, to a first replica of the dataset, a command comprising the operation, and reporting to the client the result of the operation according to the selected assurance level.

Claims (73)

1. For use in a distributed database, a method of replicating changes to a dataset, the method comprising:

receiving from a client a request for an operation on the dataset;

selecting, in response to receiving the request, a replication assurance policy from a plurality of replication assurance policies for the operation, based on at least one of an operation criteria or a connection criteria, and to determine an assurance level, the assurance level being “processed all” or “received any”;

performing the operation on the dataset and not sending a result of the operation to the client before an acknowledgment is received from a replica of the dataset that the assurance level is met;

submitting a command including the operation and the assurance level to the replica of the dataset,

receiving the acknowledgement from the replica that the assurance level is met; and

returning to the client the result of the operation in response to receiving the acknowledgement from the replica that the assurance level is met.

2. The method of replicating changes to a dataset of claim 1 , wherein the operation criteria includes one or more of the following: operation type, type of entry, a portion of the dataset affected by the operation, or attributes included in the operation.

3. The method of replicating changes to a dataset of claim 1 , wherein the connection criteria includes at least one of the following: server port on which the client request is received, an identity associated with the client, client membership in a specified group, client attribute, or client location.

4. The method of replicating changes to a dataset of claim 1 , wherein the plurality of replication assurance policies are ordered.

5. The method of replicating changes to a dataset of claim 1 , wherein the request for an operation on the dataset further includes a control to override the replication assurance policy.

6. The method of replicating changes to a dataset of claim 1 , wherein the replica is a first replica, the method further comprising submitting the command including the operation to a second replica of the dataset.

7. The method of replicating changes to a dataset of claim 6 , wherein success is reported to the client when the first replica and the second replica have completed the operation.

8. The method of replicating changes to a dataset of claim 6 , wherein success is reported to the client when the command has been submitted to at least one of the first replica or the second replica.

9. The method of replicating changes to a dataset of claim 1 , wherein the replica is a first replica and the assurance level is a first assurance level selected for the first replica, the method further comprising selecting a second assurance level for a second replica.

10. The method of replicating changes to a dataset of claim 9 , wherein the second replica is remote from the first replica.

11. The method of replicating changes to a dataset of claim 9 , wherein the first assurance level is different from the second assurance level.

12. The method of replicating changes to a dataset of claim 1 , wherein the distributed database includes a directory service.

13. The method of replicating changes to a dataset of claim 1 , wherein the distributed database includes an LDAP directory.

14. The method of replicating changes to a dataset of claim 1 , further comprising updating the replication assurance policy to comply with a request control.

15. The method of replicating changes to a dataset of claim 14 , further comprising submitting a command including the operation and an updated assurance level associated with the updated replication assurance policy to the replica.

16. A server for use in a distributed database system including a plurality of replicas of a dataset, the server comprising:

one or more processing units;

memory media coupled to the one or more processing units;

instructions which when loaded into the memory media and executed by the one or more processing units cause the server to perform:

receiving from a client a request for an operation on the dataset;

selecting, in response to receiving the request, a replication assurance policy from a plurality of replication assurance policies for the operation, based on at least one of an operation criteria or a connection criteria, and to determine an assurance level, the assurance level being “processed all” or “received any”;

performing the operation on the dataset and delaying sending a result of the operation to the client until receiving an acknowledgment that the assurance level is met;

submitting a command including the operation and the assurance level to a replica from the plurality of replicas of the dataset,

receiving the acknowledgement from the replica that the assurance level is met; and

returning to the client the result of the operation in response to receiving the acknowledgement from the replica that the assurance level is met.

17. The server of claim 16 , wherein the request for an operation on the dataset includes a control that overrides the replication assurance policy.

18. The server of claim 16 , wherein the replica is a first replica and the assurance level is a first assurance level selected for the first replica, the method further comprising selecting a second assurance level for a second replica.

19. The server of claim 18 wherein the second replica is remote from the first replica.

20. The server of claim 18 , wherein the first assurance level is different from the second assurance level.

21. The server of claim 16 , wherein the distributed database system comprises a directory service.

22. The server of claim 16 , wherein the distributed database system comprises an LDAP directory.

23. The server of claim 16 , further comprising instructions which when loaded into the memory media and executed by the one or more processing units cause the server to perform overriding the replication assurance policy to comply with a request control.

24. A distributed database system, comprising:

a dataset;

a first server, the first server hosting a first replica of the dataset, wherein the first server includes:

one or more processing units;

memory media coupled to the one or more processing units;

instructions which when loaded into the memory media and executed by the one or more processing units cause the first server to perform:

receiving from a client a request for an operation on the dataset;

selecting, in response to receiving the request, a replication assurance policy from a plurality of replication assurance policies for the operation, based on at least one of an operation criteria or a connection criteria, and to determine an assurance level, the assurance level being “processed all” or “received any”;

performing the operation on the dataset and delaying sending a result of the operation to the client until an acknowledgement that the assurance level is met is received;

submitting a command including the operation and the assurance level to the first replica of the dataset,

receiving an acknowledgement from the first replica that the assurance level is met; and

returning to the client the result of the operation when the acknowledgement is received from the first replica that the assurance level is met; and

a second server, the second server hosting a second replica of the dataset.

25. The distributed database system of claim 24 , wherein the distributed database system includes an LDAP directory service.

26. The distributed database system of claim 24 , further comprising an LDAP directory.

27. The distributed database system of claim 24 , wherein the replication assurance policy is a first replication assurance policy from the plurality of replication assurance policies, the assurance level is a first assurance level, the acknowledgement is a first acknowledgment, the command is a first command, the instructions when executed by the one or more processing units causing the first server to perform:

dynamically selecting a second replication assurance policy from the plurality of replication assurance policies and for the operation, the second replication assurance policy determining a second assurance level;

submitting, to the second replica of the dataset, a second command including the operation; and

reporting to the client the result of the operation when a second acknowledgement is received from the second replica that the second assurance level is met.

28. The distributed database system of claim 24 , wherein the second replica is remote from the first replica.

29. The distributed database system of claim 27 , wherein the first assurance level is different from the second assurance level.

30. The distributed database system of claim 24 , wherein the first server further comprises instructions which when loaded into the memory media and executed by the one or more processing units cause the first server to perform overriding the replication assurance policy to comply with a request control.

31. For use in a distributed database, a method of replicating changes to a dataset, the method comprising:

receiving from a client a request for an operation on the dataset;

selecting a replication assurance policy from a plurality of replication assurance policies for the operation and based on one or more criteria;

performing the operation on the dataset to update the database and delaying sending a result of the operation to the client until receiving an acknowledgment that an assurance level is met, the assurance level being “processed all” or “received any”;

submitting a command including the operation and the assurance level to a replica of the dataset, the assurance level being associated with the selected replication assurance policy,

receiving the acknowledgement from the replica that the assurance level is met; and

returning to the client the result of the operation when the acknowledgement is received from the replica that the assurance level determined by the selected replication assurance policy is met.

32. The method of replicating changes to a dataset of claim 1 , further comprising:

before the selecting the replication assurance policy and in response to receiving the request, determining, based on the operation criteria or the connection criteria, if any replication assurance policy from the plurality of replication assurance policies applies to the operation,

the selecting the replication assurance policy including selecting the replication assurance policy in response to the determining.

33. The method of replicating changes to a dataset of claim 1 , further comprising:

in response to the receiving the request, determining if any replication assurance policy from the plurality of replication assurance polices applies to the operation based on at least one of the operation criteria or the connection criteria,

the performing the operation on the dataset being based on the determining resulting in at least one replication assurance policy from the plurality of replication assurance policies applying to the operation.

Assignments (12)
RELEASE OF SECURITY INTEREST AT R/F 61703/0988 Recorded Nov 14, 2025
From: BLUE OWL CAPITAL CORPORATION
To: PING IDENTITY CORPORATION
Reel/Frame 073570/0777 →
SECURITY INTEREST Recorded Nov 13, 2025
From: PING IDENTITY CORPORATION; PING IDENTITY INTERNATIONAL, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 073557/0093 →
RELEASE OF SECURITY INTEREST Recorded Oct 19, 2022
From: BANK OF AMERICA, N.A.
To: PING IDENTITY CORPORATION
Reel/Frame 061709/0527 →
GRANT OF SECURITY INTEREST IN PATENT RIGHTS Recorded Oct 18, 2022
From: PING IDENTITY CORPORATION
To: OWL ROCK CAPITAL CORPORATION, AS COLLATERAL AGENT
Reel/Frame 061703/0988 →
SECURITY INTEREST Recorded Nov 23, 2021
From: PING IDENTITY CORPORATION
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 058944/0687 →
RELEASE OF SECURITY INTEREST Recorded Dec 2, 2019
From: PACIFIC WESTERN BANK
To: UNBOUNDID LLC (F/K/A UNBOUNDID, CORP.)
Reel/Frame 051152/0678 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2018
From: UNBOUNDID, LLC
To: PING IDENTITY CORPORATION
Reel/Frame 045977/0480 →
CHANGE OF NAME Recorded Jun 4, 2018
From: UNBOUNDID CORP.
To: UNBOUNDID, LLC
Reel/Frame 046291/0155 →
RELEASE OF SECURITY INTEREST Recorded Jan 25, 2018
From: GUGGENHEIM CORPORATE FUNDING
To: UNBOUNDID, LLC (F/K/A UNBOUNDID, CORP.)
Reel/Frame 044731/0412 →
SECURITY INTEREST Recorded Sep 8, 2016
From: UNBOUNDID, CORP.
To: GUGGENHEIM CORPORATE FUNDING, LLC
Reel/Frame 039671/0913 →
SECURITY INTEREST Recorded Mar 9, 2016
From: UNBOUNDID, CORP.
To: PACIFIC WESTERN BANK
Reel/Frame 037928/0128 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 30, 2014
From: JACKSON, PATRICK; ELY, DAVID; AANNESTAD, BJORN
To: UNBOUNDID, CORP.
Reel/Frame 032994/0146 →
Continuity (1)
Provisional Application 61817579 · Apr 30, 2013
Cited By (1)
US 12,443,587