@fluidframework/container-runtime 2.0.0-internal.6.2.0 → 2.0.0-internal.6.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +4 -0
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +4 -3
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +1 -2
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +81 -69
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +13 -12
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +18 -3
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +185 -145
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +3 -3
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +2 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +36 -36
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +7 -8
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +19 -20
- package/dist/dataStores.js.map +1 -1
- package/dist/deltaManagerProxyBase.d.ts +1 -1
- package/dist/deltaManagerProxyBase.js +2 -2
- package/dist/deltaManagerProxyBase.js.map +1 -1
- package/dist/deltaScheduler.js +6 -6
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +3 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +4 -21
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +2 -2
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.js +7 -7
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +4 -7
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +15 -52
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +4 -4
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +1 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/id-compressor/appendOnlySortedMap.js +2 -2
- package/dist/id-compressor/appendOnlySortedMap.js.map +1 -1
- package/dist/id-compressor/finalSpace.js +2 -2
- package/dist/id-compressor/finalSpace.js.map +1 -1
- package/dist/id-compressor/idCompressor.d.ts.map +1 -1
- package/dist/id-compressor/idCompressor.js +16 -15
- package/dist/id-compressor/idCompressor.js.map +1 -1
- package/dist/id-compressor/sessions.js +5 -5
- package/dist/id-compressor/sessions.js.map +1 -1
- package/dist/id-compressor/utilities.js +2 -2
- package/dist/id-compressor/utilities.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -3
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +11 -10
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +3 -3
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.js +12 -12
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.js +6 -6
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +12 -13
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +19 -18
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +1 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +1 -1
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +6 -5
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +3 -3
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +13 -12
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +4 -3
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +1 -1
- package/dist/summary/summarizerClientElection.js +2 -2
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +2 -2
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +1 -1
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +5 -14
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +32 -109
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +6 -30
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +0 -11
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +5 -88
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +9 -8
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.js +2 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +10 -10
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +9 -8
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +1 -2
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +52 -40
- package/lib/blobManager.js.map +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +2 -1
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +18 -3
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +147 -107
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +2 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +2 -2
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +1 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +1 -2
- package/lib/dataStores.js.map +1 -1
- package/lib/deltaManagerProxyBase.d.ts +1 -1
- package/lib/deltaManagerProxyBase.js +1 -1
- package/lib/deltaManagerProxyBase.js.map +1 -1
- package/lib/deltaScheduler.js +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +3 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +5 -22
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +2 -2
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.js +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +4 -7
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +16 -53
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/id-compressor/appendOnlySortedMap.js +1 -1
- package/lib/id-compressor/appendOnlySortedMap.js.map +1 -1
- package/lib/id-compressor/finalSpace.js +1 -1
- package/lib/id-compressor/finalSpace.js.map +1 -1
- package/lib/id-compressor/idCompressor.d.ts.map +1 -1
- package/lib/id-compressor/idCompressor.js +2 -1
- package/lib/id-compressor/idCompressor.js.map +1 -1
- package/lib/id-compressor/sessions.js +1 -1
- package/lib/id-compressor/sessions.js.map +1 -1
- package/lib/id-compressor/utilities.js +1 -1
- package/lib/id-compressor/utilities.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +2 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +2 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +1 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.js +1 -1
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.js +1 -1
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +1 -2
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +2 -1
- package/lib/scheduleManager.js.map +1 -1
- package/lib/summary/index.d.ts +1 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +1 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +2 -1
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +5 -4
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +2 -1
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +1 -1
- package/lib/summary/summarizerClientElection.js +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/index.d.ts +1 -1
- package/lib/summary/summarizerNode/index.d.ts.map +1 -1
- package/lib/summary/summarizerNode/index.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +5 -14
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +16 -93
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +6 -30
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +0 -11
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -86
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +2 -1
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.js +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +3 -3
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +4 -3
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +22 -24
- package/src/batchTracker.ts +2 -1
- package/src/blobManager.ts +57 -48
- package/src/connectionTelemetry.ts +2 -1
- package/src/containerRuntime.ts +207 -166
- package/src/dataStore.ts +1 -1
- package/src/dataStoreContext.ts +2 -2
- package/src/dataStoreContexts.ts +1 -2
- package/src/dataStores.ts +1 -2
- package/src/deltaManagerProxyBase.ts +1 -1
- package/src/deltaScheduler.ts +1 -1
- package/src/gc/garbageCollection.ts +6 -41
- package/src/gc/gcDefinitions.ts +2 -6
- package/src/gc/gcHelpers.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +19 -65
- package/src/gc/gcUnreferencedStateTracker.ts +1 -1
- package/src/gc/index.ts +0 -1
- package/src/id-compressor/appendOnlySortedMap.ts +1 -1
- package/src/id-compressor/finalSpace.ts +1 -1
- package/src/id-compressor/idCompressor.ts +2 -1
- package/src/id-compressor/sessions.ts +1 -1
- package/src/id-compressor/utilities.ts +1 -1
- package/src/opLifecycle/opCompressor.ts +2 -1
- package/src/opLifecycle/opDecompressor.ts +2 -1
- package/src/opLifecycle/opGroupingManager.ts +1 -1
- package/src/opLifecycle/opSplitter.ts +1 -1
- package/src/opLifecycle/outbox.ts +1 -1
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +1 -2
- package/src/scheduleManager.ts +2 -1
- package/src/summary/index.ts +1 -2
- package/src/summary/orderedClientElection.ts +2 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +5 -10
- package/src/summary/summarizer.ts +2 -1
- package/src/summary/summarizerClientElection.ts +1 -1
- package/src/summary/summarizerHeuristics.ts +1 -1
- package/src/summary/summarizerNode/index.ts +1 -2
- package/src/summary/summarizerNode/summarizerNode.ts +23 -145
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +7 -38
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +3 -123
- package/src/summary/summaryCollection.ts +2 -1
- package/src/summary/summaryFormat.ts +1 -1
- package/src/summary/summaryGenerator.ts +3 -3
- package/src/summary/summaryManager.ts +4 -3
|
@@ -9,12 +9,9 @@ import {
|
|
|
9
9
|
TelemetryDataTag,
|
|
10
10
|
tagCodeArtifacts,
|
|
11
11
|
} from "@fluidframework/telemetry-utils";
|
|
12
|
-
import { assert } from "@fluidframework/
|
|
13
|
-
import { LazyPromise } from "@fluidframework/core-utils";
|
|
14
|
-
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
12
|
+
import { assert, LazyPromise } from "@fluidframework/core-utils";
|
|
15
13
|
import {
|
|
16
14
|
CreateChildSummarizerNodeParam,
|
|
17
|
-
gcTreeKey,
|
|
18
15
|
IGarbageCollectionData,
|
|
19
16
|
IGarbageCollectionDetailsBase,
|
|
20
17
|
ISummarizeInternalResult,
|
|
@@ -25,21 +22,15 @@ import {
|
|
|
25
22
|
ITelemetryContext,
|
|
26
23
|
IExperimentalIncrementalSummaryContext,
|
|
27
24
|
} from "@fluidframework/runtime-definitions";
|
|
28
|
-
import {
|
|
25
|
+
import { unpackChildNodesUsedRoutes } from "@fluidframework/runtime-utils";
|
|
29
26
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
30
|
-
import {
|
|
31
|
-
cloneGCData,
|
|
32
|
-
getGCDataFromSnapshot,
|
|
33
|
-
runGarbageCollection,
|
|
34
|
-
unpackChildNodesGCDetails,
|
|
35
|
-
} from "../../gc";
|
|
27
|
+
import { cloneGCData, unpackChildNodesGCDetails } from "../../gc";
|
|
36
28
|
import { SummarizerNode } from "./summarizerNode";
|
|
37
29
|
import {
|
|
38
30
|
EscapedPath,
|
|
39
31
|
ICreateChildDetails,
|
|
40
32
|
IInitialSummary,
|
|
41
33
|
ISummarizerNodeRootContract,
|
|
42
|
-
parseSummaryForSubtrees,
|
|
43
34
|
SummaryNode,
|
|
44
35
|
ValidateSummaryResult,
|
|
45
36
|
} from "./summarizerNodeUtils";
|
|
@@ -391,117 +382,6 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
391
382
|
return super.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);
|
|
392
383
|
}
|
|
393
384
|
|
|
394
|
-
/**
|
|
395
|
-
* Called when we need to upload the reference state from the given summary.
|
|
396
|
-
*/
|
|
397
|
-
protected async refreshLatestSummaryFromSnapshot(
|
|
398
|
-
referenceSequenceNumber: number,
|
|
399
|
-
snapshotTree: ISnapshotTree,
|
|
400
|
-
basePath: EscapedPath | undefined,
|
|
401
|
-
localPath: EscapedPath,
|
|
402
|
-
correlatedSummaryLogger: ITelemetryLoggerExt,
|
|
403
|
-
readAndParseBlob: ReadAndParseBlob,
|
|
404
|
-
): Promise<void> {
|
|
405
|
-
await this.refreshGCStateFromSnapshot(
|
|
406
|
-
referenceSequenceNumber,
|
|
407
|
-
snapshotTree,
|
|
408
|
-
readAndParseBlob,
|
|
409
|
-
);
|
|
410
|
-
return super.refreshLatestSummaryFromSnapshot(
|
|
411
|
-
referenceSequenceNumber,
|
|
412
|
-
snapshotTree,
|
|
413
|
-
basePath,
|
|
414
|
-
localPath,
|
|
415
|
-
correlatedSummaryLogger,
|
|
416
|
-
readAndParseBlob,
|
|
417
|
-
);
|
|
418
|
-
}
|
|
419
|
-
|
|
420
|
-
/**
|
|
421
|
-
* Updates GC state from the given snapshot if GC is enabled and the snapshot is newer than the one this node
|
|
422
|
-
* is tracking.
|
|
423
|
-
*/
|
|
424
|
-
private async refreshGCStateFromSnapshot(
|
|
425
|
-
referenceSequenceNumber: number,
|
|
426
|
-
snapshotTree: ISnapshotTree,
|
|
427
|
-
readAndParseBlob: ReadAndParseBlob,
|
|
428
|
-
): Promise<void> {
|
|
429
|
-
// If GC is disabled or we have seen a newer summary, skip updating GC state.
|
|
430
|
-
if (this.gcDisabled || this.referenceSequenceNumber >= referenceSequenceNumber) {
|
|
431
|
-
return;
|
|
432
|
-
}
|
|
433
|
-
|
|
434
|
-
// Load the base GC details before proceeding because if that happens later it can overwrite the GC details
|
|
435
|
-
// written by the following code.
|
|
436
|
-
await this.loadBaseGCDetails();
|
|
437
|
-
|
|
438
|
-
// Possible re-entrancy. We may already have processed this while loading base GC details.
|
|
439
|
-
if (this.referenceSequenceNumber >= referenceSequenceNumber) {
|
|
440
|
-
return;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
/**
|
|
444
|
-
* GC data is written at root of the snapshot tree under "gc" sub-tree. This data needs to be propagated to
|
|
445
|
-
* all the nodes in the container.
|
|
446
|
-
* The root summarizer node reads the GC data from the "gc" sub-tree, runs GC on it to get used routes in
|
|
447
|
-
* the container and updates its GC data and referenced used routes. It then gets the GC data and used
|
|
448
|
-
* routes of all its children and adds it to their snapshot tree.
|
|
449
|
-
* All the other nodes gets the GC data and used routes from their snapshot tree and updates their state.
|
|
450
|
-
* They get the GC data and used routes of their children and add it to their snapshot tree and so on.
|
|
451
|
-
*
|
|
452
|
-
* Note that if the snapshot does not have GC tree, GC data will be set to undefined and used routes will be
|
|
453
|
-
* set to self-route (meaning referenced) for all nodes. This is important because the GC data needs to be
|
|
454
|
-
* regenerated in the next summary.
|
|
455
|
-
*/
|
|
456
|
-
let gcDetails: IGarbageCollectionDetailsBase | undefined;
|
|
457
|
-
const gcSnapshotTree = snapshotTree.trees[gcTreeKey];
|
|
458
|
-
if (gcSnapshotTree !== undefined) {
|
|
459
|
-
// If there is a GC tree in the snapshot, this is the root summarizer node. Read GC data from the tree
|
|
460
|
-
// process it as explained above.
|
|
461
|
-
const gcSnapshotData = await getGCDataFromSnapshot(gcSnapshotTree, readAndParseBlob);
|
|
462
|
-
|
|
463
|
-
if (gcSnapshotData.gcState !== undefined) {
|
|
464
|
-
const gcNodes: { [id: string]: string[] } = {};
|
|
465
|
-
for (const [nodeId, nodeData] of Object.entries(gcSnapshotData.gcState.gcNodes)) {
|
|
466
|
-
gcNodes[nodeId] = Array.from(nodeData.outboundRoutes);
|
|
467
|
-
}
|
|
468
|
-
// Run GC on the nodes in the snapshot to get the used routes for each node in the container.
|
|
469
|
-
const usedRoutes = runGarbageCollection(gcNodes, ["/"]).referencedNodeIds;
|
|
470
|
-
gcDetails = { gcData: { gcNodes }, usedRoutes };
|
|
471
|
-
}
|
|
472
|
-
} else {
|
|
473
|
-
// If there is a GC blob in the snapshot, it's a non-root summarizer nodes - The root summarizer node
|
|
474
|
-
// writes GC blob in the snapshot of child nodes. Get GC data and used routes from the blob.
|
|
475
|
-
const gcDetailsBlob = snapshotTree.blobs[gcTreeKey];
|
|
476
|
-
if (gcDetailsBlob !== undefined) {
|
|
477
|
-
gcDetails = JSON.parse(gcDetailsBlob) as IGarbageCollectionDetailsBase;
|
|
478
|
-
}
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
// Update this node to the same GC state it was when the ack corresponding to this summary was processed.
|
|
482
|
-
this.gcData = gcDetails?.gcData !== undefined ? cloneGCData(gcDetails.gcData) : undefined;
|
|
483
|
-
this.referenceUsedRoutes =
|
|
484
|
-
gcDetails?.usedRoutes !== undefined ? Array.from(gcDetails.usedRoutes) : undefined;
|
|
485
|
-
// If there are no used routes in the GC details, set it to have self route which will make the node
|
|
486
|
-
// referenced. This scenario can only happen if the snapshot is from a client where GC was not run or
|
|
487
|
-
// disabled. In both the cases, the node should be referenced.
|
|
488
|
-
this.usedRoutes =
|
|
489
|
-
gcDetails?.usedRoutes !== undefined ? Array.from(gcDetails.usedRoutes) : [""];
|
|
490
|
-
|
|
491
|
-
if (gcDetails === undefined) {
|
|
492
|
-
return;
|
|
493
|
-
}
|
|
494
|
-
|
|
495
|
-
// Generate the GC data and used routes of children GC nodes and add it to their snapshot tree.
|
|
496
|
-
const gcDetailsMap = unpackChildNodesGCDetails(gcDetails);
|
|
497
|
-
const { childrenTree } = parseSummaryForSubtrees(snapshotTree);
|
|
498
|
-
gcDetailsMap.forEach((childGCDetails: IGarbageCollectionDetailsBase, childId: string) => {
|
|
499
|
-
if (childrenTree.trees[childId] !== undefined) {
|
|
500
|
-
childrenTree.trees[childId].blobs[gcTreeKey] = JSON.stringify(childGCDetails);
|
|
501
|
-
}
|
|
502
|
-
});
|
|
503
|
-
}
|
|
504
|
-
|
|
505
385
|
/**
|
|
506
386
|
* Override the createChild method to return an instance of SummarizerNodeWithGC.
|
|
507
387
|
*/
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import { IDisposable, IEvent } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
8
|
-
import { Deferred, assert
|
|
8
|
+
import { Deferred, assert } from "@fluidframework/core-utils";
|
|
9
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
9
10
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
10
11
|
import {
|
|
11
12
|
IDocumentMessage,
|
|
@@ -16,10 +16,10 @@ import {
|
|
|
16
16
|
IPromiseTimer,
|
|
17
17
|
IPromiseTimerResult,
|
|
18
18
|
Timer,
|
|
19
|
-
} from "@fluidframework/
|
|
19
|
+
} from "@fluidframework/core-utils";
|
|
20
20
|
import { MessageType } from "@fluidframework/protocol-definitions";
|
|
21
21
|
import { getRetryDelaySecondsFromError } from "@fluidframework/driver-utils";
|
|
22
|
-
import {
|
|
22
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
23
23
|
import {
|
|
24
24
|
IAckSummaryResult,
|
|
25
25
|
INackSummaryResult,
|
|
@@ -277,7 +277,7 @@ export class SummaryGenerator {
|
|
|
277
277
|
// If failure happened on upload, we may not yet realized that socket disconnected, so check
|
|
278
278
|
// offlineError too.
|
|
279
279
|
const category =
|
|
280
|
-
cancellationToken.cancelled || error?.errorType ===
|
|
280
|
+
cancellationToken.cancelled || error?.errorType === DriverErrorTypes.offlineError
|
|
281
281
|
? "generic"
|
|
282
282
|
: "error";
|
|
283
283
|
|
|
@@ -9,13 +9,14 @@ import {
|
|
|
9
9
|
IEventProvider,
|
|
10
10
|
ITelemetryBaseLogger,
|
|
11
11
|
} from "@fluidframework/core-interfaces";
|
|
12
|
-
import {
|
|
12
|
+
import { assert } from "@fluidframework/core-utils";
|
|
13
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
13
14
|
import {
|
|
14
15
|
createChildLogger,
|
|
15
16
|
ITelemetryLoggerExt,
|
|
16
17
|
PerformanceEvent,
|
|
17
18
|
} from "@fluidframework/telemetry-utils";
|
|
18
|
-
import {
|
|
19
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
19
20
|
import { IThrottler } from "../throttler";
|
|
20
21
|
import { ISummarizerClientElection } from "./summarizerClientElection";
|
|
21
22
|
import {
|
|
@@ -328,7 +329,7 @@ export class SummaryManager extends TypedEventEmitter<ISummarizerEvents> impleme
|
|
|
328
329
|
// If failure happened on container load, we may not yet realized that socket disconnected, so check
|
|
329
330
|
// offlineError.
|
|
330
331
|
const category =
|
|
331
|
-
error?.errorType ===
|
|
332
|
+
error?.errorType === DriverErrorTypes.offlineError ? "generic" : "error";
|
|
332
333
|
this.logger.sendTelemetryEvent(
|
|
333
334
|
{
|
|
334
335
|
eventName: "SummarizerException",
|