IP Library Granted Patent US 10,599,519
Granted Patent B2
US 10,599,519 · App. 15/334,433 · Granted Mar 24, 2020

Coordinating node modification of an index structure via delegates

Inventors: Greg R. Dhuse (Chicago, IL); Adam M. Gray (Chicago, IL); Scott M. Horan (Clarendon Hills, IL); Ravi V. Khadiwala (Bartlett, IL); Tyler K. Reid (Schaumburg, IL); Daniel J. Scholl (Chicago, IL); Ilya Volvovski (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1076G06F3/061G06F3/064G06F3/067G06F3/0619G06F3/0622G06F3/0623G06F3/0635G06F3/0659G06F9/4856G06F11/1092G06F11/1096G06F11/2094G06F12/0646H03M13/1515H03M13/3761H04L9/0861H04L9/14H04L41/0816H04L47/803H04L63/0428H04L63/0457H04L63/06H04L63/068H04L63/08H04L63/101H04L67/1097G06F2201/805G06F2201/82G06F2212/1008G06F2212/657
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 10,599,519
App. No.
15/334,433
Granted
Mar 24, 2020
Kind
B2
Abstract

A method includes determining, by a computing device, to change a node of a hierarchical index structure. The method further includes determining, by the computing device, whether one or more other computing devices are attempting to change the node. The method further includes, when yes, determining, by the computing device and/or the other computing device(s), to use a delegate device to process multiple change requests to the node. The method further includes, when determined to use the delegate device, sending, by the computing device, a message to the delegate device requesting the delegate device to process the change to the node. The method further includes coordinating, by the delegate device, requested changes to the node by the computing device and the other computing device(s). The method further includes updating, by the delegate device, the node in accordance with the coordinating of the requested changes.

Claims (76)

1. A method comprises:

determining, by a computing device of a dispersed storage network (DSN), to change a node of a plurality of nodes of an index structure, wherein the index structure is used to identify particular data stored in the DSN and wherein the plurality of nodes includes a root index node, a plurality of index nodes, and a plurality of leaf index nodes arranged in a related hierarchical manner;

determining, by the computing device, whether one or more other computing devices are attempting to change the node;

when one or more other computing devices are attempting to change the node, determining, by at least one of the computing device and the one or more other computing devices, to use a delegate device to process multiple change requests to the node;

when determined to use the delegate device, sending, by the computing device, a message to the delegate device requesting the delegate device to process the change to the node on behalf of the computing device;

coordinating, by the delegate device, requested changes to the node by the computing device and the one or more other computing devices; and

updating, by the delegate device, the node in accordance with the coordinating of the requested changes.

2. The method of claim 1 , wherein the determining whether one or more other computing devices are attempting to change the node comprises one or more of:

determining, by default, that the one or more other computing devices are attempting to change the node;

sending a retrieval request to one or more storage units of the DSN regarding retrieving the node for updating and receiving, from the one or more storage units, an indication that the one or more other computing device have issued similar retrieval requests; and

querying other computing devices regarding the node to identify the one or more other computing devices.

3. The method of claim 1 , wherein the determining to use the delegate device comprises one or more of:

determining, by default, to use the delegate device; and

coordinating, by the computing device, with the one or more other computing devices to use the delegate device.

4. The method of claim 1 further comprises one of:

selecting the delegate device from a first group that includes the computing device and the one or more other computing devices;

selecting the delegate device from a second group that includes the first group, other computing devices of the DSN, and storage units of the DSN; and

identifying the delegate device based on a predetermined configuration of the DSN.

5. The method of claim 1 , wherein the coordinating the requested changes comprises one or more of:

aggregating the requested changes to produce an aggregate change;

ordering the requested changes to produce a sequential order of requested changes; and

analyzing the requested changes to identify conflicting changes and, when the conflicting change are identified, resolving the conflict to produce a resolved requested change.

6. The method of claim 1 , wherein the updating the node comprises:

retrieving a decode threshold number of encoded node slices from storage units of the DSN, wherein the node is dispersed storage error encoded to produce a set of encoded node slices, wherein the set of encoded node slices is stored in a set of storage units, and wherein the decode threshold number of encoded node slices represents a minimum number of encoded node slices of the set of encoded node slices needed to recover the node;

recovering the node from the decode threshold number of encoded node slices;

modifying the node to include a coordinated requested change to produce a modified node;

dispersed storage error encoding the modified node to produce a set of updated encoded node slice; and

sending the set of updated encoded node slice to the set of storage units for storage therein.

7. The method of claim 1 , wherein an index node of the plurality of plurality of index nodes comprises one or more of:

a node information section that includes one or more of: a source name, a node revision level, and an index node indicator;

a sibling node information section that includes one or more of: a sibling source name, a sibling minimum key index, and a sibling key type trait; and

one or more child node information sections, wherein a child node information section of the one or more child node information sections includes one or more of: a child source name, a child minimum key index, and a child key type trait.

8. The method of claim 1 , wherein a leaf node of the plurality of leaf index nodes comprises one or more of:

a node information section that includes one or more of: a source name, a node revision level, and a leaf node indicator;

a sibling node information section that includes one or more of: a sibling source name, a sibling minimum key index, and a sibling key type trait; and

one or more data object information sections, wherein a data object information section of the one or more data object information sections includes one or more of: a data object source name, a plurality of sets of encoded data slices, a data object index key, and a data object key type trait.

9. A computer readable memory comprises:

a first memory element that stores operational instructions that, when executed by a computing device of a dispersed storage network (DSN), causes the computing device to:

determine to change a node of a plurality of nodes of an index structure, wherein the index structure is used to identify particular data stored in the DSN and wherein the plurality of nodes includes a root index node, a plurality of plurality of index nodes, and a plurality of leaf index nodes arranged in a related hierarchical manner; and

determine whether one or more other computing devices are attempting to change the node;

a second memory element that stores operational instructions that, when executed by at least one of the computing device and the one or more other computing devices, causes the at least one of the computing device and the one or more other computing devices to:

when one or more other computing devices are attempting to change the node, determine to use a delegate device to process multiple change requests to the node;

a third memory element that stores operational instructions that, when executed by the computing device, causes the computing device to:

when determined to use the delegate device, send a message to the delegate device requesting the delegate device to process the change to the node on behalf of the computing device;

a fourth memory element that stores operational instructions that, when executed by the delegate device, causes the delegate device to:

coordinate requested changes to the node by the computing device and the one or more other computing devices; and

update the node in accordance with the coordinating of the requested changes.

10. The computer readable memory of claim 9 , wherein the first memory element further stores operational instructions that, when executed by the computing device, causes the computing device to determining whether one or more other computing devices are attempting to change the node comprises one or more of:

determining, by default, that the one or more other computing devices are attempting to change the node;

sending a retrieval request to one or more storage units of the DSN regarding retrieving the node for updating and receiving, from the one or more storage units, an indication that the one or more other computing device have issued similar retrieval requests; and

querying other computing devices regarding the node to identify the one or more other computing devices.

11. The computer readable memory of claim 9 , wherein the second memory element further stores operational instructions that, when executed by at least one of the computing device and the one or more other computing devices, causes the at least one of the computing device and the one or more other computing devices to determine to use the delegate device comprises one or more of:

determining, by default, to use the delegate device; and

coordinating, by the computing device, with the one or more other computing devices to use the delegate device.

12. The computer readable memory of claim 9 , wherein the second memory element further stores operational instructions that, when executed by at least one of the computing device and the one or more other computing devices, causes the at least one of the computing device and the one or more other computing devices to perform one of:

selecting the delegate device from a first group that includes the computing device and the one or more other computing devices;

selecting the delegate device from a second group that includes the first group, other computing devices of the DSN, and storage units of the DSN; and

identifying the delegate device based on a predetermined configuration of the DSN.

13. The computer readable memory of claim 9 , wherein the fourth memory element further stores operational instructions that, when executed by the delegate device, causes the delegate device to coordinate the requested changes by one or more of:

aggregating the requested changes to produce an aggregate change;

ordering the requested changes to produce a sequential order of requested changes; and

analyzing the requested changes to identify conflicting changes and, when the conflicting change are identified, resolving the conflict to produce a resolved requested change.

14. The computer readable memory of claim 9 , wherein the fourth memory element further stores operational instructions that, when executed by the delegate device, causes the delegate device to update the node by:

retrieving a decode threshold number of encoded node slices from storage units of the DSN, wherein the node is dispersed storage error encoded to produce a set of encoded node slices, wherein the set of encoded node slices is stored in a set of storage units, and wherein the decode threshold number of encoded node slices represents a minimum number of encoded node slices of the set of encoded node slices needed to recover the node;

recovering the node from the decode threshold number of encoded node slices;

modifying the node to include a coordinated requested change to produce a modified node;

dispersed storage error encoding the modified node to produce a set of updated encoded node slice; and

sending the set of updated encoded node slice to the set of storage units for storage therein.

15. The computer readable memory of claim 9 , wherein an index node of the plurality of plurality of index nodes comprises one or more of:

a node information section that includes one or more of: a source name, a node revision level, and an index node indicator;

a sibling node information section that includes one or more of: a sibling source name, a sibling minimum key index, and a sibling key type trait; and

one or more child node information sections, wherein a child node information section of the one or more child node information sections includes one or more of: a child source name, a child minimum key index, and a child key type trait.

16. The computer readable memory of claim 9 , wherein a leaf node of the plurality of leaf index nodes comprises one or more of:

a node information section that includes one or more of: a source name, a node revision level, and a leaf node indicator;

a sibling node information section that includes one or more of: a sibling source name, a sibling minimum key index, and a sibling key type trait; and

one or more data object information sections, wherein a data object information section of the one or more data object information sections includes one or more of: a data object source name, a plurality of sets of encoded data slices, a data object index key, and a data object key type trait.

Assignments (5)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 26, 2016
From: DHUSE, GREG R.; GRAY, ADAM M.; HORAN, SCOTT M.; KHADIWALA, RAVI V.; REID, TYLER K.; SCHOLL, DANIEL J.; VOLVOVSKI, ILYA
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 040135/0185 →