@fluidframework/container-runtime 2.20.0 → 2.21.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/.eslintrc.cjs +36 -6
- package/CHANGELOG.md +38 -0
- package/api-report/container-runtime.legacy.alpha.api.md +31 -31
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +14 -11
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js +7 -5
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +63 -41
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +4 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +14 -30
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +264 -194
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +6 -3
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +16 -11
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +1 -0
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +5 -5
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +36 -14
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +2 -0
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +8 -0
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -0
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +8 -5
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +2 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +29 -15
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/inboundBatchAggregator.js +3 -3
- package/dist/inboundBatchAggregator.js.map +1 -1
- package/dist/layerCompatState.d.ts +19 -0
- package/dist/layerCompatState.d.ts.map +1 -0
- package/dist/layerCompatState.js +64 -0
- package/dist/layerCompatState.js.map +1 -0
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +2 -2
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +3 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -19
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +3 -0
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +4 -1
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +5 -3
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +13 -10
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +14 -11
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +3 -3
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +11 -15
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
- package/dist/opLifecycle/remoteMessageProcessor.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 +3 -4
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +11 -10
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +7 -0
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +6 -4
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +1 -0
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +13 -11
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +7 -2
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +2 -2
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +38 -17
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -0
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +18 -9
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +1 -0
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +1 -1
- package/dist/summary/summarizerHeuristics.js.map +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.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +30 -31
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +7 -0
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +3 -4
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +9 -6
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +4 -1
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +3 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +19 -8
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +12 -9
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +14 -11
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js +7 -5
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +66 -42
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +5 -5
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +14 -30
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +271 -196
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +6 -3
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +16 -11
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +1 -0
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +6 -6
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +39 -15
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +2 -0
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +8 -0
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +1 -0
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +8 -5
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +2 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +32 -16
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/inboundBatchAggregator.js +4 -4
- package/lib/inboundBatchAggregator.js.map +1 -1
- package/lib/layerCompatState.d.ts +19 -0
- package/lib/layerCompatState.d.ts.map +1 -0
- package/lib/layerCompatState.js +60 -0
- package/lib/layerCompatState.js.map +1 -0
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +2 -2
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +3 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +13 -19
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +3 -0
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +4 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +5 -3
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +13 -10
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +14 -11
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +3 -3
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +11 -15
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
- package/lib/opLifecycle/remoteMessageProcessor.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 +3 -4
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +12 -11
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +7 -0
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +6 -4
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +1 -0
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +13 -11
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +7 -2
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +2 -2
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +38 -17
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -0
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +18 -9
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -0
- 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.map +1 -1
- package/lib/summary/summarizerNode/index.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +30 -31
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +7 -0
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +3 -4
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +9 -6
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +4 -1
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +19 -8
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +12 -9
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +21 -43
- package/src/batchTracker.ts +3 -3
- package/src/blobManager/blobManager.ts +16 -14
- package/src/blobManager/blobManagerSnapSum.ts +8 -8
- package/src/channelCollection.ts +63 -44
- package/src/connectionTelemetry.ts +12 -6
- package/src/containerRuntime.ts +306 -235
- package/src/dataStore.ts +6 -3
- package/src/dataStoreContext.ts +16 -16
- package/src/dataStoreContexts.ts +1 -0
- package/src/deltaScheduler.ts +6 -6
- package/src/gc/garbageCollection.ts +47 -20
- package/src/gc/gcConfigs.ts +9 -1
- package/src/gc/gcDefinitions.ts +12 -0
- package/src/gc/gcHelpers.ts +9 -4
- package/src/gc/gcSummaryStateTracker.ts +3 -1
- package/src/gc/gcTelemetry.ts +26 -11
- package/src/inboundBatchAggregator.ts +4 -4
- package/src/layerCompatState.ts +75 -0
- package/src/messageTypes.ts +2 -0
- package/src/opLifecycle/README.md +43 -34
- package/src/opLifecycle/duplicateBatchDetector.ts +2 -2
- package/src/opLifecycle/opCompressor.ts +16 -23
- package/src/opLifecycle/opDecompressor.ts +4 -1
- package/src/opLifecycle/opGroupingManager.ts +5 -4
- package/src/opLifecycle/opSplitter.ts +14 -11
- package/src/opLifecycle/outbox.ts +13 -20
- package/src/opLifecycle/remoteMessageProcessor.ts +3 -1
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +15 -10
- package/src/summary/documentSchema.ts +11 -4
- package/src/summary/orderedClientElection.ts +14 -11
- package/src/summary/runWhileConnectedCoordinator.ts +6 -0
- package/src/summary/runningSummarizer.ts +43 -19
- package/src/summary/summarizer.ts +24 -11
- package/src/summary/summarizerClientElection.ts +2 -0
- package/src/summary/summarizerHeuristics.ts +1 -1
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +32 -31
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -4
- package/src/summary/summarizerTypes.ts +7 -0
- package/src/summary/summaryCollection.ts +19 -8
- package/src/summary/summaryFormat.ts +10 -5
- package/src/summary/summaryGenerator.ts +25 -10
- package/src/summary/summaryManager.ts +14 -12
- package/container-runtime.test-files.tar +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/gc/garbageCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,OAAO,EACN,6BAA6B,EAC7B,gBAAgB,EAGhB,KAAK,iBAAiB,EACtB,MAAM,8CAA8C,CAAC;AAKtD,OAAO,EACN,mBAAmB,EAOnB,MAAM,0CAA0C,CAAC;AAMlD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAG5D,OAAO,
|
|
1
|
+
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/gc/garbageCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -11,7 +11,9 @@ import { TombstoneResponseHeaderKey } from "../containerRuntime.js";
|
|
|
11
11
|
import { ClientSessionExpiredError } from "../error.js";
|
|
12
12
|
import { ContainerMessageType } from "../messageTypes.js";
|
|
13
13
|
import { generateGCConfigs } from "./gcConfigs.js";
|
|
14
|
-
import {
|
|
14
|
+
import {
|
|
15
|
+
// eslint-disable-next-line import/no-deprecated
|
|
16
|
+
GCNodeType, GarbageCollectionMessageType, UnreferencedState, } from "./gcDefinitions.js";
|
|
15
17
|
import { cloneGCData, concatGarbageCollectionData, dataStoreNodePathOnly, getGCDataFromSnapshot, urlToGCNodePath, } from "./gcHelpers.js";
|
|
16
18
|
import { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
|
|
17
19
|
import { GCSummaryStateTracker } from "./gcSummaryStateTracker.js";
|
|
@@ -71,8 +73,10 @@ export class GarbageCollector {
|
|
|
71
73
|
/**
|
|
72
74
|
* API for ensuring the correct auto-recovery mitigations
|
|
73
75
|
*/
|
|
76
|
+
// TODO: consider hoisting this to an outer scope as an optimization
|
|
77
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
74
78
|
this.autoRecovery = (() => {
|
|
75
|
-
// This uses a hidden state machine for forcing fullGC as part of
|
|
79
|
+
// This uses a hidden state machine for forcing fullGC as part of auto-recovery,
|
|
76
80
|
// to regenerate the GC data for each node.
|
|
77
81
|
//
|
|
78
82
|
// Once fullGC has been requested, we need to wait until GC has run and the summary has been acked before clearing the state.
|
|
@@ -207,7 +211,7 @@ export class GarbageCollector {
|
|
|
207
211
|
if (nodeData.unreferencedTimestampMs !== undefined) {
|
|
208
212
|
this.unreferencedNodesState.set(nodeId, new UnreferencedStateTracker(nodeData.unreferencedTimestampMs, this.configs.inactiveTimeoutMs, currentReferenceTimestampMs, this.configs.tombstoneTimeoutMs, this.configs.sweepGracePeriodMs));
|
|
209
213
|
}
|
|
210
|
-
gcNodes[nodeId] =
|
|
214
|
+
gcNodes[nodeId] = [...nodeData.outboundRoutes];
|
|
211
215
|
}
|
|
212
216
|
this.gcDataFromLastRun = { gcNodes };
|
|
213
217
|
});
|
|
@@ -223,7 +227,7 @@ export class GarbageCollector {
|
|
|
223
227
|
// state will re-summarize to reset any GC specific state in their summaries (like unreferenced flag).
|
|
224
228
|
const gcNodes = {};
|
|
225
229
|
for (const [nodeId, nodeData] of Object.entries(baseSnapshotData.gcState.gcNodes)) {
|
|
226
|
-
gcNodes[nodeId] =
|
|
230
|
+
gcNodes[nodeId] = [...nodeData.outboundRoutes];
|
|
227
231
|
}
|
|
228
232
|
// Run GC on the nodes in the base summary to get the routes used in each node in the container.
|
|
229
233
|
// This is an optimization for space (vs performance) wherein we don't need to store the used routes of
|
|
@@ -265,7 +269,7 @@ export class GarbageCollector {
|
|
|
265
269
|
// Initialize the tombstone state from the snapshot. Also, notify the runtime of tombstone routes.
|
|
266
270
|
if (baseSnapshotData.tombstones !== undefined) {
|
|
267
271
|
// Create a copy since we are writing from a source we don't control
|
|
268
|
-
this.tombstones =
|
|
272
|
+
this.tombstones = [...baseSnapshotData.tombstones];
|
|
269
273
|
this.runtime.updateTombstonedRoutes(this.tombstones);
|
|
270
274
|
}
|
|
271
275
|
await this.initializeOrUpdateGCState();
|
|
@@ -284,16 +288,16 @@ export class GarbageCollector {
|
|
|
284
288
|
eventName: "InitializeOrUpdateGCState",
|
|
285
289
|
}, async (event) => {
|
|
286
290
|
// If the GC state hasn't been initialized yet, initialize it and return.
|
|
287
|
-
if (
|
|
288
|
-
await this.initializeGCStateFromBaseSnapshotP;
|
|
289
|
-
}
|
|
290
|
-
else {
|
|
291
|
+
if (initialized) {
|
|
291
292
|
// If the GC state has been initialized, update the tracking of unreferenced nodes as per the current
|
|
292
293
|
// reference timestamp.
|
|
293
294
|
for (const [, nodeStateTracker] of this.unreferencedNodesState) {
|
|
294
295
|
nodeStateTracker.updateTracking(currentReferenceTimestampMs);
|
|
295
296
|
}
|
|
296
297
|
}
|
|
298
|
+
else {
|
|
299
|
+
await this.initializeGCStateFromBaseSnapshotP;
|
|
300
|
+
}
|
|
297
301
|
event.end({
|
|
298
302
|
details: { initialized, unrefNodeCount: this.unreferencedNodesState.size },
|
|
299
303
|
});
|
|
@@ -523,6 +527,7 @@ export class GarbageCollector {
|
|
|
523
527
|
// local state when processing the op.
|
|
524
528
|
const sweepReadyDSAndBlobs = nodesToDelete.filter((nodeId) => {
|
|
525
529
|
const nodeType = this.runtime.getNodeType(nodeId);
|
|
530
|
+
// eslint-disable-next-line import/no-deprecated
|
|
526
531
|
return nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob;
|
|
527
532
|
});
|
|
528
533
|
const contents = {
|
|
@@ -586,7 +591,7 @@ export class GarbageCollector {
|
|
|
586
591
|
*/
|
|
587
592
|
const gcDataSuperSet = concatGarbageCollectionData(previousGCData, currentGCData);
|
|
588
593
|
const newOutboundRoutesSinceLastRun = [];
|
|
589
|
-
this.newReferencesSinceLastRun
|
|
594
|
+
for (const [sourceNodeId, outboundRoutes] of this.newReferencesSinceLastRun) {
|
|
590
595
|
if (gcDataSuperSet.gcNodes[sourceNodeId] === undefined) {
|
|
591
596
|
gcDataSuperSet.gcNodes[sourceNodeId] = outboundRoutes;
|
|
592
597
|
}
|
|
@@ -594,7 +599,7 @@ export class GarbageCollector {
|
|
|
594
599
|
gcDataSuperSet.gcNodes[sourceNodeId].push(...outboundRoutes);
|
|
595
600
|
}
|
|
596
601
|
newOutboundRoutesSinceLastRun.push(...outboundRoutes);
|
|
597
|
-
}
|
|
602
|
+
}
|
|
598
603
|
/**
|
|
599
604
|
* Run GC on the above reference graph starting with root and all new outbound routes. This will generate a
|
|
600
605
|
* list of all nodes that could have been referenced since the last run. If any of these nodes are unreferenced,
|
|
@@ -626,6 +631,7 @@ export class GarbageCollector {
|
|
|
626
631
|
}
|
|
627
632
|
return this.summaryStateTracker.summarize(trackState && !fullTree, gcState, this.deletedNodes, this.tombstones);
|
|
628
633
|
}
|
|
634
|
+
// eslint-disable-next-line import/no-deprecated
|
|
629
635
|
getMetadata() {
|
|
630
636
|
return {
|
|
631
637
|
/**
|
|
@@ -670,8 +676,9 @@ export class GarbageCollector {
|
|
|
670
676
|
this.autoRecovery.requestFullGCOnNextRun();
|
|
671
677
|
break;
|
|
672
678
|
}
|
|
673
|
-
default:
|
|
679
|
+
default: {
|
|
674
680
|
throw DataProcessingError.create(`Garbage collection message of unknown type ${gcMessageType}`, "processMessage");
|
|
681
|
+
}
|
|
675
682
|
}
|
|
676
683
|
}
|
|
677
684
|
}
|
|
@@ -690,7 +697,7 @@ export class GarbageCollector {
|
|
|
690
697
|
// The ids in the sweep-ready nodes do not contain DDS node ids. This is an optimization to reduce the size
|
|
691
698
|
// of the GC op. Since GC applies to data store only, all its DDSes are deleted along with it. So, get the
|
|
692
699
|
// DDS nodes ID from the unreferenced nodes state.
|
|
693
|
-
const allSweepReadyNodeIds =
|
|
700
|
+
const allSweepReadyNodeIds = [...sweepReadyNodeIds];
|
|
694
701
|
for (const [id] of this.unreferencedNodesState) {
|
|
695
702
|
// Ignore data store nodes since they would already be in the list.
|
|
696
703
|
const pathParts = id.split("/");
|
|
@@ -727,7 +734,7 @@ export class GarbageCollector {
|
|
|
727
734
|
// trackedId will be either DataStore or Blob ID (not sub-DataStore ID, since some of those are unrecognized by GC)
|
|
728
735
|
const trackedId = node.path;
|
|
729
736
|
const isTombstoned = this.tombstones.includes(trackedId);
|
|
730
|
-
const fullPath = request
|
|
737
|
+
const fullPath = request === undefined ? trackedId : urlToGCNodePath(request.url);
|
|
731
738
|
// This will log if appropriate
|
|
732
739
|
this.telemetryTracker.nodeUsed(trackedId, {
|
|
733
740
|
id: fullPath,
|
|
@@ -753,6 +760,7 @@ export class GarbageCollector {
|
|
|
753
760
|
const nodeType = this.runtime.getNodeType(fullPath);
|
|
754
761
|
// Unless this is a Loaded event for a Blob or DataStore, we're done after telemetry tracking
|
|
755
762
|
const loadedBlobOrDataStore = reason === "Loaded" &&
|
|
763
|
+
// eslint-disable-next-line import/no-deprecated
|
|
756
764
|
(nodeType === GCNodeType.Blob || nodeType === GCNodeType.DataStore);
|
|
757
765
|
if (!loadedBlobOrDataStore) {
|
|
758
766
|
return;
|
|
@@ -857,7 +865,9 @@ export class GarbageCollector {
|
|
|
857
865
|
* @param gcResult - The result of the current GC run.
|
|
858
866
|
* @returns the stats of the mark phase run.
|
|
859
867
|
*/
|
|
868
|
+
// eslint-disable-next-line import/no-deprecated
|
|
860
869
|
getMarkPhaseStats(gcResult) {
|
|
870
|
+
// eslint-disable-next-line import/no-deprecated
|
|
861
871
|
const markPhaseStats = {
|
|
862
872
|
nodeCount: 0,
|
|
863
873
|
dataStoreCount: 0,
|
|
@@ -881,6 +891,7 @@ export class GarbageCollector {
|
|
|
881
891
|
if (!isReferenced) {
|
|
882
892
|
markPhaseStats.unrefNodeCount++;
|
|
883
893
|
}
|
|
894
|
+
// eslint-disable-next-line import/no-deprecated
|
|
884
895
|
if (this.runtime.getNodeType(nodeId) === GCNodeType.DataStore) {
|
|
885
896
|
markPhaseStats.dataStoreCount++;
|
|
886
897
|
if (stateUpdated) {
|
|
@@ -890,6 +901,7 @@ export class GarbageCollector {
|
|
|
890
901
|
markPhaseStats.unrefDataStoreCount++;
|
|
891
902
|
}
|
|
892
903
|
}
|
|
904
|
+
// eslint-disable-next-line import/no-deprecated
|
|
893
905
|
if (this.runtime.getNodeType(nodeId) === GCNodeType.Blob) {
|
|
894
906
|
markPhaseStats.attachmentBlobCount++;
|
|
895
907
|
if (stateUpdated) {
|
|
@@ -916,9 +928,12 @@ export class GarbageCollector {
|
|
|
916
928
|
* @param markPhaseStats - The stats of the mark phase run.
|
|
917
929
|
* @returns the stats of the sweep phase run.
|
|
918
930
|
*/
|
|
919
|
-
getSweepPhaseStats(deletedNodes, sweepReadyNodes,
|
|
931
|
+
getSweepPhaseStats(deletedNodes, sweepReadyNodes,
|
|
932
|
+
// eslint-disable-next-line import/no-deprecated
|
|
933
|
+
markPhaseStats) {
|
|
920
934
|
// Initialize the life time node counts to the mark phase node counts. If sweep is not enabled,
|
|
921
935
|
// these will be the life time node count for this container.
|
|
936
|
+
// eslint-disable-next-line import/no-deprecated
|
|
922
937
|
const sweepPhaseStats = {
|
|
923
938
|
lifetimeNodeCount: markPhaseStats.nodeCount,
|
|
924
939
|
lifetimeDataStoreCount: markPhaseStats.dataStoreCount,
|
|
@@ -929,24 +944,31 @@ export class GarbageCollector {
|
|
|
929
944
|
};
|
|
930
945
|
// The runtime can't reliably identify the type of deleted nodes. So, get the type here. This should
|
|
931
946
|
// be good enough because the only types that participate in GC today are data stores, DDSes and blobs.
|
|
947
|
+
// eslint-disable-next-line import/no-deprecated, unicorn/consistent-function-scoping
|
|
932
948
|
const getDeletedNodeType = (nodeId) => {
|
|
933
949
|
const pathParts = nodeId.split("/");
|
|
934
950
|
if (pathParts[1] === blobManagerBasePath) {
|
|
951
|
+
// eslint-disable-next-line import/no-deprecated
|
|
935
952
|
return GCNodeType.Blob;
|
|
936
953
|
}
|
|
937
954
|
if (pathParts.length === 2) {
|
|
955
|
+
// eslint-disable-next-line import/no-deprecated
|
|
938
956
|
return GCNodeType.DataStore;
|
|
939
957
|
}
|
|
940
958
|
if (pathParts.length === 3) {
|
|
959
|
+
// eslint-disable-next-line import/no-deprecated
|
|
941
960
|
return GCNodeType.SubDataStore;
|
|
942
961
|
}
|
|
962
|
+
// eslint-disable-next-line import/no-deprecated
|
|
943
963
|
return GCNodeType.Other;
|
|
944
964
|
};
|
|
945
965
|
for (const nodeId of deletedNodes) {
|
|
946
966
|
sweepPhaseStats.deletedNodeCount++;
|
|
947
967
|
const nodeType = getDeletedNodeType(nodeId);
|
|
968
|
+
// eslint-disable-next-line import/no-deprecated
|
|
948
969
|
if (nodeType === GCNodeType.DataStore) {
|
|
949
970
|
sweepPhaseStats.deletedDataStoreCount++;
|
|
971
|
+
// eslint-disable-next-line import/no-deprecated
|
|
950
972
|
}
|
|
951
973
|
else if (nodeType === GCNodeType.Blob) {
|
|
952
974
|
sweepPhaseStats.deletedAttachmentBlobCount++;
|
|
@@ -966,8 +988,10 @@ export class GarbageCollector {
|
|
|
966
988
|
for (const nodeId of sweepReadyNodes) {
|
|
967
989
|
sweepPhaseStats.deletedNodeCount++;
|
|
968
990
|
const nodeType = this.runtime.getNodeType(nodeId);
|
|
991
|
+
// eslint-disable-next-line import/no-deprecated
|
|
969
992
|
if (nodeType === GCNodeType.DataStore) {
|
|
970
993
|
sweepPhaseStats.deletedDataStoreCount++;
|
|
994
|
+
// eslint-disable-next-line import/no-deprecated
|
|
971
995
|
}
|
|
972
996
|
else if (nodeType === GCNodeType.Blob) {
|
|
973
997
|
sweepPhaseStats.deletedAttachmentBlobCount++;
|