Coherency of replicas for a distributed file sharing system
First Claim
1. A computer-readable storage medium storing program instructions executable to implement a method comprising:
- storing a respective replica of an object on each respective node of a plurality of nodes;
a first node of the plurality of nodes initiating a first distributed transaction to attempt to synchronously update the replicas of the object stored on each of other nodes of the plurality of nodes, wherein each respective node of a first subset of the other nodes successfully commits the first distributed transaction to update the replica of the object stored on the respective node, and wherein each node of a second subset of the other nodes does not successfully commit the first distributed transaction; and
each respective node of the first subset of the other nodes adding an identification of the object to a respective list of incoherent objects stored on the respective node in response to determining that not all of the other nodes successfully committed the first distributed transaction;
wherein the first subset of the other nodes includes a second node of the plurality of nodes;
wherein the method implemented by the program instructions further comprises;
after the second node adds the identification of the object to the respective list of incoherent objects stored on the second node, the second node attempting to communicate with each of the plurality of nodes other than the second node; and
in response to successfully communicating with each of the plurality of nodes other than the second node, the second node initiating a second distributed transaction to synchronize the replicas stored on the second subset of the other nodes with the replicas stored on the first subset of the other nodes.
10 Assignments
0 Petitions
Accused Products
Abstract
A plurality of data objects may be replicated across a plurality of computing nodes coupled to a network. The network may include a first node operable to initiate an update operation to update a plurality of replicas of a first object. If one or more of the replicas are not reachable then the update operation may update a subset (e.g., a quorum) but not all of the replicas. For each node on which one of the replicas was updated in the update operation, the node may add the object to a list of incoherent objects. The list of incoherent objects may subsequently be used to bring the lagging replicas in sync with the replicas that were updated. In another embodiment, a plurality of replicas of an object may be stored on a plurality of nodes, similarly as described above. A first node that stores a replica of the object may store a first timestamp associated with the replica on the first node. The timestamp may be used to ensure that the replica on the first node is coherent with respect to one or more other replicas by periodically communicating with the one or more other replicas when a threshold amount of time has passed without the replica on the first node receiving an update.
-
Citations
16 Claims
-
1. A computer-readable storage medium storing program instructions executable to implement a method comprising:
-
storing a respective replica of an object on each respective node of a plurality of nodes; a first node of the plurality of nodes initiating a first distributed transaction to attempt to synchronously update the replicas of the object stored on each of other nodes of the plurality of nodes, wherein each respective node of a first subset of the other nodes successfully commits the first distributed transaction to update the replica of the object stored on the respective node, and wherein each node of a second subset of the other nodes does not successfully commit the first distributed transaction; and each respective node of the first subset of the other nodes adding an identification of the object to a respective list of incoherent objects stored on the respective node in response to determining that not all of the other nodes successfully committed the first distributed transaction; wherein the first subset of the other nodes includes a second node of the plurality of nodes; wherein the method implemented by the program instructions further comprises; after the second node adds the identification of the object to the respective list of incoherent objects stored on the second node, the second node attempting to communicate with each of the plurality of nodes other than the second node; and in response to successfully communicating with each of the plurality of nodes other than the second node, the second node initiating a second distributed transaction to synchronize the replicas stored on the second subset of the other nodes with the replicas stored on the first subset of the other nodes. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. A system comprising:
-
a plurality of nodes; wherein the plurality of nodes includes memory storing program instructions executable to implement a method comprising; storing a respective replica of an object on each respective node of the plurality of nodes; a first node of the plurality of nodes initiating a first distributed transaction to attempt to synchronously update the replicas of the object stored on each of other nodes of the plurality of nodes, wherein each respective node of a first subset of the other nodes successfully commits the first distributed transaction to update the replica of the object stored on the respective node, and wherein each node of a second subset of the other nodes does not successfully commit the first distributed transaction; and each respective node of the first subset of the other nodes adding an identification of the object to a respective list of incoherent objects stored on the respective node in response to determining that not all of the other nodes successfully committed the first distributed transaction; wherein the first subset of the other nodes includes a second node of the plurality of nodes; wherein the method implemented by the program instructions further comprises; the second node adds the identification of the object to the respective list of incoherent objects stored on the second node, the second node attempting to communicate with each of the plurality of nodes other than the second node; and in response to successfully communicating with each of the plurality of nodes other than the second node, the second node initiating a second distributed transaction to synchronize the replicas stored on the second subset of the other nodes with the replicas stored on the first subset of the other nodes. - View Dependent Claims (14)
-
-
15. A method comprising:
-
storing a respective replica of an object on each respective node of a plurality of nodes; a first node of the plurality of nodes initiating a first distributed transaction to attempt to synchronously update the replicas of the object stored on each of other nodes of the plurality of nodes, wherein each respective node of a first subset of the other nodes successfully commits the first distributed transaction to update the replica of the object stored on the respective node, and wherein each node of a second subset of the other nodes does not successfully commit the first distributed transaction; and each respective node of the first subset of the other nodes adding an identification of the object to a respective list of incoherent objects stored on the respective node in response to determining that not all of the other nodes successfully committed the first distributed transaction; wherein the first subset of the other nodes includes a second node of the plurality of nodes; wherein the method further comprises; after the second node adds the identification of the object to the respective list of incoherent objects stored on the second node, the second node attempting to communicate with each of the plurality of nodes other than the second node; and in response to successfully communicating with each of the plurality of nodes other than the second node, the second node initiating a second distributed transaction to synchronize the replicas stored on the second subset of the other nodes with the replicas stored on the first subset of the other nodes. - View Dependent Claims (16)
-
Specification