摘要 |
A method, for handling partially inconsistent states among members of a cluster in an erratic storage network that responds to requests from a client, includes assigning a unique commit identifier corresponding to each successive modification of state of the cluster when an update request has been successfully completed and correlating an incoming request to a given member of the cluster with any commit identifiers necessary to satisfy the request. The method further includes detecting, on the incoming request to the given member of the cluster, whether the commit identifiers necessary to satisfy the request have been applied to the given member, and processing the incoming request based on whether the commit identifiers necessary to satisfy the request have been applied to the given member. Operation of the members can be asynchronous. |
主权项 |
1. A method for handling partially inconsistent states among members of a cluster in an erratic storage network that responds to requests from a client, the method comprising:
assigning a unique commit identifier corresponding to each successive modification of state of the cluster when an update request has been successfully completed; correlating the incoming request with a given member of the cluster with any commit identifiers necessary to satisfy the request; detecting, on the incoming request to the given member of the cluster, whether the commit identifiers necessary to satisfy the request have been applied to the given member; and
if the commit identifiers necessary to satisfy the request have been applied to the given member, then satisfying the incoming request; andif the commit identifiers necessary to satisfy the request have not been applied to the given member, then maintaining the request as pending at the given member and performing at least one of the following processes:
(i) asynchronously causing one or more other members of the cluster, having commit identifiers necessary to satisfy the request, to satisfy the request;(ii) asynchronously causing one or more other members to provide to the given member the missing commit identifiers to satisfy the request, so that the given member can satisfy the request; and(iii) waiting until the given member has been caused to receive the missing commit identifiers to satisfy the request, so that the given member can satisfy the request. |