Managing Version Conflict in a Distributed Storage Network
A method for a computing device begins by generating a set of write requests regarding a set of encoded data slices and sending the set of write requests to a set of storage units, where each write request includes an encoded data slice of the set of encoded data slices and a version attribute, where a data object is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices. The method continues with the computing device receiving a write response indicating a version number conflict and in response to the version number conflict, retrieving a latest version of the data object, generating an updated set of write requests and sending the updated set of write requests to a set of storage units.
1 . A method for a computing device comprises:
generating a set of write requests regarding a set of encoded data slices, wherein a write request of the set of write requests includes an encoded data slice of the set of encoded data slices and a version attribute, wherein a data object is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices;
sending the set of write requests to a set of storage units;
receiving, from a storage unit of the set of storage units, a write response indicating a version number conflict;
in response to the version number conflict, retrieving a latest version of the data object;
generating an updated set of write requests; and
sending the updated set of write requests to a set of storage units.
2 . The method of claim 1 , wherein at least some encoded data slices of the set of encoded data slices include different version attributes.
3 . The method of claim 1 , wherein the generating the write response comprises:
determining, based on the version attribute, a version number for an associated encoded data slice;
comparing the version number to an expected version number; and
when the version number does not match the expected version number, generating a version number conflict.
4 . The method of claim 1 , wherein the version attribute is an explicit version number.
5 . The method of claim 1 , wherein the version attribute is an output associated with a counter.
6 . The method of claim 1 , wherein the version attribute is based on an output from a counter.
7 . The method of claim 1 , wherein the version attribute is based on a timestamp.
8 . The method of claim 1 , wherein an expected version number is based on a counter, wherein the counter is adapted to increment the expected version number when an associated encoded data slice is saved.
9 . The method of claim 1 , wherein an expected version number is determined based on a timestamp associated with a previously saved encoded data slice, wherein the previously saved encoded data slice is associated with another computing device.
10 . A non-transitory computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by one or more processing modules of one or more computing devices of a storage network, causes the one or more computing devices to:
generate a set of write requests regarding a set of encoded data slices, wherein a write request of the set of write requests includes an encoded data slice of the set of encoded data slices and a version attribute associated with a stored version of the encoded data slice, wherein a data object is dispersed error encoded in accordance with dispersed error encoding parameters to produce the set of encoded data slices;
send the set of write requests to a set of storage units;
receive, from a storage unit of the set of storage units, a write response indicating a version number conflict;
in response to the version number conflict, retrieve a latest version of the data object;
generate an updated set of write requests; and
send the updated set of write requests to a set of storage units.
11 . The storage medium of claim 10 , wherein at least some encoded data slices of the set of encoded data slices include different version attributes.
12 . The storage medium of claim 10 , wherein the generating the write response is based on the storage unit determining, based on the version attribute, a version number for an associated encoded data slice, comparing the version number to an expected version number and when the version number does not match the expected version number, generating a version number conflict.
13 . The storage medium of claim 10 , wherein the version attribute is an explicit version number.
14 . The storage medium of claim 10 , wherein the version attribute is an output associated with a counter.
15 . The storage medium of claim 10 , wherein the version attribute is based on an output from a counter.
16 . The storage medium of claim 10 , wherein the version attribute is based on a timestamp.
17 . The storage medium of claim 10 , wherein an expected version number is based on a counter, wherein the counter is adapted to increment the expected version number when an associated encoded data slice is saved.
18 . The storage medium of claim 10 , wherein an expected version number is determined based on a timestamp associated with a previously saved encoded data slice, wherein the previously saved encoded data slice is associated with another computing device.
19 . A method for a storage unit of a storage network, the method comprising:
receiving, from a computing device associated with the storage network, a write request for an encoded data slice, wherein the write request includes a version attribute for the encoded data slice;
determining, based on the version attribute, a version number for an associated encoded data slice;
comparing the version number to an expected version number; and
in response to a determination that the version number does not match the expected version number, generating a version number conflict.
20 . The method of claim 19 , wherein the expected version number is based on at least one of a timestamp, a counter and an explicit version number.