IP Library › Granted Patent US 9,152,687
Granted Patent B2
US 9,152,687 · App. 13/910,883 · Granted Oct 6, 2015

Cross domain locking in a distributed environment

Inventors: Luan Hong (Raleigh, NC); Dean Kalman (Cary, NC)
Assignee: NetApp, Inc.
G06F17/30581G06F9/466G06F17/30377
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,152,687
App. No.
13/910,883
Granted
Oct 6, 2015
Kind
B2
Abstract

In a distributed system, multiple nodes of a cluster update target data using a cross-domain lock. In the distributed system, data is separated into different domains, where some data elements are part of multiple domains. Multiple nodes each store a copy of the target data, which can be part of a single domain, or part of multiple domains. Where at least one element of the target data is part of two different domains, the nodes use cross-domain locks to lock both domains for at least a portion of the data update, and update the data while the lock is active. After updating the data, the nodes can release the cross-domain lock.

Claims (64)

1. A method in a distributed system, the method comprising:

initiating a data update for target data in a distributed system having a cluster of nodes, wherein the target data comprises data elements, wherein multiple nodes of the cluster store copies of the target data, and wherein the data elements have previously been logically organized into multiple data domains and the copies of the data elements are logically organized accordingly;

determining that a first data element is part of both a first and a second data domains and that a second data element is in the first data domain only;

initiating a cross-domain lock on the first and second data domains for participant nodes to update the first data element and copies of the first data element in response to determining that the first data element is part of more than one data domain;

initiating a first domain based lock on the first data domain;

updating the first data element and copies of the first data element while the cross-domain lock is active;

releasing the cross-domain lock after update of the first data element and the copies of the first data element;

updating the second data element and the copies of the second data element while the first domain based lock is active; and

releasing the first domain based lock after update of the second data element and the copies of the second data element.

2. The method of claim 1 , wherein initiating the cross-domain lock comprises:

temporarily combining both data domains into a single data domain; and

locking the single data domain.

3. The method of claim 1 , wherein initiating the cross-domain lock further comprises: initiating the cross-domain lock only for updates to data elements in more than one data domain and not for data elements in a single domain.

4. The method of claim 1 , wherein initiating the cross-domain lock further comprises:

separating the data update into cross-domain transactions for data elements in more than one data domain and local domain transactions for data elements in a single data domain; and

wherein initiating the cross-domain lock is only for the cross-domain transactions.

5. The method of claim 1 , wherein initiating the cross-domain lock further comprises:

initiating the cross-domain lock from an originator node to a participant node only during a cross-domain commit phase of a synchronization protocol, wherein the cross-domain commit phase encompasses the first and the second data domains; and

executing a local domain vote phase of the synchronization protocol with the participant node and a local domain commit phase of the synchronization protocol with the participant node during the cross-domain commit phase.

6. The method of claim 5 , further comprising:

the participant node queuing local domain operations for copies of data elements in the first and the second data domains to execute synchronization operations on the participant node in order.

7. The method of claim 1 , wherein initiating the data update comprises:

initiating the data update by implementing a two-phase commit (2PC) protocol, including initiating the cross-domain lock for a commit phase of the 2PC protocol.

8. The method of claim 7 , wherein initiating the cross-domain lock further comprises:

initiating the cross-domain lock for updates to data elements in the first and the second data domains, for both a vote phase and for the commit phase of the 2PC protocol.

9. A node device of a cluster of nodes, comprising:

a memory device to store target data shared among multiple nodes of the cluster, wherein the target data comprises data elements stored in the memory device, at least some of which, are part of multiple data domains;

a hardware interface to exchange data update synchronization operations with another of the multiple nodes to perform a data update of the target data; and

update logic to,

determine that a first data element of the target data has previously been logically organized into both a first and second data domains and that a second data element has previously been logically organized into only the first data domain;

enter a cross-domain lock on the first and second data domains in response to a determination that the first data element is part of both the first and the second data domains;

enter a first domain based lock on the first data domain;

update the first data element while the cross-domain lock is active;

deactivate the cross-domain lock after update of the first data element;

update the second data element while the first domain based lock is active; and

deactivate the first domain based lock after update of the second data element.

10. The node device of claim 9 , wherein the update logic is configured to initiate the cross-domain lock only for updates to data elements in more than one data domain and not for data elements in a single data domain.

11. The node device of claim 9 , wherein the update logic is configured to:

initiate the cross-domain lock only during a cross-domain commit phase of a synchronization protocol, wherein the cross-domain commit phase encompasses the first and the second data domains; and

execute a local domain vote phase of the synchronization protocol with the participant node and a local domain commit phase of the synchronization protocol with the participant node during the cross-domain commit phase.

12. The node device of claim 11 , wherein the node device is a participant node, and further comprising the update logic configured to:

queue local domain operations for data elements in more than one data domain to execute synchronization operations in order.

13. The node device of claim 9 , wherein the update logic is configured to:

implement a two-phase commit (2PC) protocol process to update the target data, including initiating the cross-domain lock for a commit phase of the 2PC protocol.

14. The node device of claim 13 , wherein the update logic is configured to

initiate the cross-domain lock only for updates to data elements in more than one data domain, for both a vote phase and for the commit phase of the 2PC protocol.

15. A computer-readable storage medium having program code stored thereon, the program code to:

initiate a data update for target data in a distributed system having a cluster of nodes, wherein the target data comprises data elements, wherein multiple nodes of the cluster store copies of the target data, and wherein the data elements have previously been organized into multiple data domains and the copies of the data elements are logically organized into the multiple domains accordingly;

determine that a first data element is part of both a first and second data domains and that a second data element is only in the first data domain;

initiate a cross-domain lock on the first and second data domains for participant nodes to update the first data element and copies of the first data element in response to a determination that the first data element is part of both the first data domain and the second data domain;

initiate a first domain based lock on the first data domain;

update the first data element and copies of the first data element while the cross-domain lock is active;

deactivating the cross-domain lock after updating the first data element and copies thereof;

update the second data element and copies thereof while the first domain based lock is active; and

deactivate the first domain based lock after update of the second data element and the copies thereof.

16. The computer-readable storage medium of claim 15 , wherein the program code to initiate the cross-domain lock further comprises program code to:

separate the data update into cross-domain transactions for data elements in more than one data domain and local domain transactions for data elements in a single data domain; and

the program code initiates the cross-domain lock only for the cross-domain transactions.

17. The computer-readable storage medium of claim 15 , wherein the program code to initiate the cross-domain lock further comprises program code to:

initiate the cross-domain lock from a originator node to a participant node only during a cross-domain commit phase of a synchronization protocol, wherein the cross-domain commit phase encompasses the first and the second data domains; and

execute a local domain vote phase of the synchronization protocol with the participant node and a local domain commit phase of the synchronization protocol with the participant node during the cross-domain commit phase.

18. The computer-readable storage medium of claim 17 , further comprising program code to queue local domain operations for copies of data elements in the first and the second data domains to execute synchronization operations on the participant node in order.

19. The computer-readable storage medium of claim 15 , wherein the program code to initiate the data update comprises program code to initiate the data update by implementing a two-phase commit (2PC) protocol, including initiation of the cross-domain lock for a commit phase of the 2PC protocol.

20. The computer-readable storage medium of claim 19 , wherein the program code to initiate the cross-domain lock further comprises program code to initiate the cross-domain lock only for updates to data elements in the first and the second data domains, for both a vote phase and for the commit phase of the 2PC protocol.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 12, 2013
From: HONG, LUAN; KALMAN, DEAN
To: NETAPP, INC.
Reel/Frame 030599/0718 →
Continuity (1)
Related Publication 20140365433A1 · Dec 11, 2014