/// <inheritdoc /> public void GlobalBeforeEnteringState <Key, Value>( SystemState next, FasterKV <Key, Value> faster) { switch (next.phase) { case Phase.PREPARE_GROW: // nothing to do break; case Phase.IN_PROGRESS_GROW: // Set up the transition to new version of HT var numChunks = (int)(faster.state[faster.resizeInfo.version].size / Constants.kSizeofChunk); if (numChunks == 0) { numChunks = 1; // at least one chunk } faster.numPendingChunksToBeSplit = numChunks; faster.splitStatus = new long[numChunks]; faster.Initialize(1 - faster.resizeInfo.version, faster.state[faster.resizeInfo.version].size * 2, faster.sectorSize); faster.resizeInfo.version = 1 - faster.resizeInfo.version; break; case Phase.REST: // nothing to do break; default: throw new FasterException("Invalid Enum Argument"); } }