Distributed storage revision rollbacks
First Claim
1. A method for use in a distributed storage unit of a plurality of distributed storage units in which the plurality of distributed storage units are configured to store different encoded data slices of a data segment, the method comprising:
- receiving a particular encoded data slice of the data segment from a processing device and a write request for storing the particular encoded data slice at the distributed storage unit, wherein the particular encoded data slice is one of X number of encoded data slices that are created when error encoding the data segment into a plurality of the different encoded data slices and wherein at least a read threshold T of the X encoded data slices are needed to reconstruct the data segment, where T is less than X, and in which the particular encoded data slice has a slice name and a revision number;
storing the particular encoded data slice in a memory associated with the distributed storage unit, but not making the particular encoded data slice available for access;
transmitting from the distributed storage unit, a write confirmation message to the processing device after storing the particular encoded data slice;
starting a rollback timer at the distributed storage unit to indicate a period of time to wait for a commit command from the processing device;
waiting at the distributed storage unit for the commit command from the processing device, in which the commit command is generated and transmitted by the processing device when the processing device receives at least a write threshold number W of write confirmation messages from the plurality of distributed storage units receiving the X number of encoded data slices of the data segment transmitted, where W is greater than or equal to T;
wherein, in response to receiving the commit command prior to an expiration of the period of time of the rollback timer, changing the access availability of the particular encoded data slice as a current version for access; and
wherein, in response to not receiving the commit command prior to the expiration of the period of time of the rollback timer, deleting the particular encoded data slice and retaining a previous version of the particular encoded data slice as the current version.
4 Assignments
0 Petitions
Accused Products
Abstract
Multiple revisions of an encoded data slice can be stored in a distributed storage unit. Before writing a new revision of an encoded data slice to storage, the distributed storage unit can invoke a write lock for all encoded data slices having the same slice name as the slice being currently written. The slice being currently written can be stored in temporary storage, and a rollback timer started. If a commit command is received before expiration of the rollback timer, the currently written slice can be permanently stored and made accessible for read requests. If the rollback timer expires prior to the storage unit receiving a commit command, however, a previously stored revision will be used.
-
Citations
20 Claims
-
1. A method for use in a distributed storage unit of a plurality of distributed storage units in which the plurality of distributed storage units are configured to store different encoded data slices of a data segment, the method comprising:
-
receiving a particular encoded data slice of the data segment from a processing device and a write request for storing the particular encoded data slice at the distributed storage unit, wherein the particular encoded data slice is one of X number of encoded data slices that are created when error encoding the data segment into a plurality of the different encoded data slices and wherein at least a read threshold T of the X encoded data slices are needed to reconstruct the data segment, where T is less than X, and in which the particular encoded data slice has a slice name and a revision number; storing the particular encoded data slice in a memory associated with the distributed storage unit, but not making the particular encoded data slice available for access; transmitting from the distributed storage unit, a write confirmation message to the processing device after storing the particular encoded data slice; starting a rollback timer at the distributed storage unit to indicate a period of time to wait for a commit command from the processing device; waiting at the distributed storage unit for the commit command from the processing device, in which the commit command is generated and transmitted by the processing device when the processing device receives at least a write threshold number W of write confirmation messages from the plurality of distributed storage units receiving the X number of encoded data slices of the data segment transmitted, where W is greater than or equal to T; wherein, in response to receiving the commit command prior to an expiration of the period of time of the rollback timer, changing the access availability of the particular encoded data slice as a current version for access; and wherein, in response to not receiving the commit command prior to the expiration of the period of time of the rollback timer, deleting the particular encoded data slice and retaining a previous version of the particular encoded data slice as the current version. - View Dependent Claims (2, 3, 4, 5)
-
-
6. A distributed storage unit that is one of a plurality of distributed storage units, in which the plurality of distributed storage units are configured to store different encoded data slices of a data segment, the distributed storage unit comprising:
-
an interface to receive a particular encoded data slice of the data segment from a processing device and a write request for storing the particular encoded data slice, wherein the particular encoded data slice is one of X number of encoded data slices that are created when error encoding the data segment into a plurality of the different encoded data slices and wherein at least a read threshold T of the X encoded data slices are needed to reconstruct the data segment, where T is less than X and in which the particular encoded data slice has a slice name and a revision number; a memory coupled to the interface configured to store the particular encoded data slice; and a processor to; facilitate storing the particular encoded data slice in the memory, but not making the particular encoded data slice available for access; transmit, via the interface, a write confirmation message to the processing device after storing the particular encoded data slice; implement a rollback timer to indicate a period of time to wait for a commit command from the processing device; wait for the commit command from the processing device, in which the commit command is generated and transmitted by the processing device when the processing device receives at least a write threshold number W of write confirmation messages from the plurality of distributed storage units receiving the X number of encoded data slices of the data segment transmitted, where W is greater than or equal to T; change the access availability of the particular encoded data slice as a current version for access, when the commit command is received prior to an expiration of the period of time of the rollback timer; and in response to not receiving the commit command prior to the expiration of the period of time of the rollback timer, delete the particular encoded data slice and retain a previous version of the particular encoded data slice as the current version. - View Dependent Claims (7, 8, 9, 10)
-
-
11. A method for use in a distributed storage unit of a plurality of distributed storage units in which the plurality of distributed storage units are configured to store different encoded data slices of a data segment, the method comprising:
-
receiving from a processing device and storing a first version of a particular encoded data slice of the data segment in a memory of the distributed storage unit, wherein the particular encoded data slice is one of X number of encoded data slices that are created when error encoding the data segment into a plurality of the different encoded data slices and wherein at least a read threshold T of the X encoded data slices are needed to reconstruct the data segment, where T is less than X, and in which the first version of the particular encoded data slice has a slice name; receiving a second version of the particular encoded data slice from the processing device, in which the second version is a revision to the first version of the particular encoded data slice, to be stored in the memory of the distributed storage unit, the second version of the particular encoded data slice having the same slice name as the first version of the encoded data slice, but having a different revision number; temporarily storing the second version of the particular encoded data slice at the distributed storage unit; transmitting from the distributed storage unit, a write confirmation message to the processing device after storing the second version of the particular encoded data slice; starting a rollback timer at the distributed storage unit to indicate a period of time to wait for a commit command from the processing device; waiting at the distributed storage unit for the commit command from the processing device, in which the commit command is generated and transmitted by the processing device when the processing device receives at least a write threshold number W of write confirmation messages from the plurality of distributed storage units receiving the X number of encoded data slices of the data segment of the second version transmitted, where W is greater than or equal to T; when the commit command is received prior to the expiration of the period of time of the rollback timer, replacing the first version of the particular encoded data slice with the second version of the particular encoded data slice; and in response to not receiving the commit command prior to the expiration of the period of time of the rollback timer, deleting the second version of the particular encoded data slice and retaining the first version as the current version. - View Dependent Claims (12, 13, 14, 15, 16)
-
-
17. A distributed storage unit that is one of a plurality of distributed storage units, in which the plurality of distributed storage units are configured to store different encoded data slices of a data segment, the distributed storage unit comprising:
-
an interface to receive a first version of a particular encoded data slice of the data segment from a processing device, wherein the particular encoded data slice is one of X number of encoded data slices that are created when error encoding the data segment into a plurality of the different encoded data slices and wherein at least a read threshold T of the X encoded data slices are needed to reconstruct the data segment, where T is less than X, and in which the first version of the particular encoded data slice has a slice name and a revision number, the interface also to receive a second version of the particular encoded data slice having the same slice name as the first version, but a different revision number to indicate that the second version of the particular encoded data slice is a revision of the first version of the particular encoded data slice; a memory to store the first version and temporarily store the second version of the particular encoded data slice; and a processor operable to; transmit, via the interface, a write confirmation message to the processing device after storing the second version of the particular encoded data slice; start a rollback timer indicating a period of time in which a commit command transmitted from the processing device is expected to be received by the distributed storage unit; wait for the commit command from the processing device, in which the commit command is generated and transmitted by the processing device when the processing device receives at least a write threshold number W of write confirmation messages from the plurality of distributed storage units receiving the X number of encoded data slices of the data segment transmitted for the second version of the particular encoded data slice, where W is greater than or equal to T; replace the first version of the particular encoded data slice with the second version of the particular encoded data slice in response to receiving the commit command prior to an expiration of the period of time of the rollback timer; and retain the first version of the particular encoded data slice in response to not receiving the commit command prior to the expiration of the period of time of the rollback timer. - View Dependent Claims (18, 19, 20)
-
Specification