Workflow

When a client needs to do an index operation, first it must gather enough information to determine to whom to delegate. Namely, it needs to know roughly how large the index is and how many Slicestor® nodes are in the Storage Pool on the vault in which it operates.

After it has this information, it splits up the index so every Slicestor node manages a different part of the index. The algorithm to split up the index ensures that no nodes in the index are shared by multiple Slicestor nodes. If not enough nodes exist for it to happen, then not all Slicestor nodes are used for delegation.

Delegation at Index Creation

When the index is first created and the only node that exists is the root node, all delegation operations go to a single Slicestor node.

The algorithm navigates through the top levels of the index until it finds a level that has enough nodes for the Slicestor nodes to share the index.

Navigating to Find Sufficient Nodes to Share Index

If you consider a 5-wide Storage Pool, the algorithm would navigate to the second level in the graphic since five nodes exist at that level. Each sub tree would then be assigned to a Slicestor node for delegation. Each sub tree would then be assigned to a Slicestor node for delegation.

Figure 1. Navigating until Sufficient Nodes are found

After a delegate is chosen, the client attempts a delegation request to that delegate and awaits a response. The delegate receives the request and attempts the index operation. After the operation is completed, the delegate responds to the client. The client considers the operation a success.

If the client receives an error response from a delegate or no response at all within a certain period, it attempts to redelegate to another Slicestor node. This redelegation decision uses the same deterministic logic that is used for the initial delegation decision so that other clients who are redelegating choose the same secondary Slicestor nodes.

If enough redelegations fail, the client attempts the index operation itself eventually before it halts and calls the operation a failure.