@fluidframework/container-runtime 2.13.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 +71 -5
- package/CHANGELOG.md +84 -0
- package/api-report/container-runtime.legacy.alpha.api.md +38 -232
- 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 +5 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +30 -13
- 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 +23 -12
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +85 -53
- 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 +10 -6
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +87 -94
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +312 -226
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +7 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +8 -4
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +41 -25
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +47 -29
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +6 -2
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +7 -2
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +1 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +1 -17
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +9 -6
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +95 -89
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +21 -7
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +48 -19
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +11 -0
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +5 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +218 -70
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +40 -13
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +6 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +14 -7
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.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 +33 -11
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +35 -17
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +27 -9
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -0
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +3 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/inboundBatchAggregator.d.ts +34 -0
- package/dist/inboundBatchAggregator.d.ts.map +1 -0
- package/dist/inboundBatchAggregator.js +185 -0
- package/dist/inboundBatchAggregator.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.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/legacy.d.ts +0 -4
- package/dist/messageTypes.d.ts +14 -5
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/metadata.d.ts +12 -4
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +6 -2
- package/dist/metadata.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +9 -3
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +3 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +11 -5
- 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 +6 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +16 -8
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -2
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +9 -6
- 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 +16 -11
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +17 -16
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- 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/package.json +2 -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 +22 -11
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +24 -15
- 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 +8 -4
- package/dist/summary/documentSchema.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 +94 -31
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +28 -16
- 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 +17 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +48 -19
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +10 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +26 -11
- 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.d.ts +6 -2
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js +13 -5
- 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 +24 -8
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -36
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +253 -135
- 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 +10 -8
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +28 -9
- 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 +9 -3
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +22 -9
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +8 -4
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +20 -9
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts +26 -10
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +12 -4
- package/dist/throttler.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 +5 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +30 -13
- 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 +23 -12
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +88 -54
- 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 +11 -7
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +87 -94
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +319 -228
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +7 -3
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +8 -4
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +41 -25
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +47 -29
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +6 -2
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +7 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +1 -17
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +9 -6
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +96 -90
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +21 -7
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +51 -20
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +11 -0
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +4 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +218 -70
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +40 -13
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +6 -2
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +14 -7
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.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 +33 -11
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +38 -18
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +27 -9
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -0
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -0
- package/lib/gc/index.js.map +1 -1
- package/lib/inboundBatchAggregator.d.ts +34 -0
- package/lib/inboundBatchAggregator.d.ts.map +1 -0
- package/lib/inboundBatchAggregator.js +181 -0
- package/lib/inboundBatchAggregator.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.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/legacy.d.ts +0 -4
- package/lib/messageTypes.d.ts +14 -5
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/metadata.d.ts +12 -4
- package/lib/metadata.d.ts.map +1 -1
- package/lib/metadata.js +6 -2
- package/lib/metadata.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +9 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +3 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +11 -5
- 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 +14 -20
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +6 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +17 -9
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +10 -7
- 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 +16 -11
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +4 -4
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +17 -16
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- 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 +22 -11
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +25 -16
- 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 +8 -4
- package/lib/summary/documentSchema.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 +94 -31
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +28 -16
- 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 +17 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +48 -19
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +10 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +26 -11
- 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.d.ts +6 -2
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js +13 -5
- 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 +24 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +45 -36
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +13 -5
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +253 -135
- 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 +10 -8
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +28 -9
- 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 +9 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +22 -9
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +8 -4
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +20 -9
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts +26 -10
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +12 -4
- package/lib/throttler.js.map +1 -1
- package/package.json +22 -31
- package/src/batchTracker.ts +34 -36
- package/src/blobManager/blobManager.ts +54 -33
- package/src/blobManager/blobManagerSnapSum.ts +10 -10
- package/src/channelCollection.ts +108 -82
- package/src/connectionTelemetry.ts +43 -19
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +492 -364
- package/src/dataStore.ts +17 -9
- package/src/dataStoreContext.ts +94 -73
- package/src/dataStoreContexts.ts +17 -12
- package/src/dataStoreRegistry.ts +1 -1
- package/src/deltaManagerProxies.ts +5 -5
- package/src/deltaScheduler.ts +24 -18
- package/src/gc/garbageCollection.ts +89 -40
- package/src/gc/gcConfigs.ts +13 -5
- package/src/gc/gcDefinitions.ts +224 -70
- package/src/gc/gcHelpers.ts +22 -11
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +18 -6
- package/src/gc/gcSummaryStateTracker.ts +7 -3
- package/src/gc/gcTelemetry.ts +73 -30
- package/src/gc/gcUnreferencedStateTracker.ts +40 -16
- package/src/gc/index.ts +1 -0
- package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +55 -122
- package/src/index.ts +0 -3
- package/src/layerCompatState.ts +75 -0
- package/src/messageTypes.ts +16 -5
- package/src/metadata.ts +12 -4
- package/src/opLifecycle/README.md +43 -34
- package/src/opLifecycle/batchManager.ts +12 -6
- package/src/opLifecycle/duplicateBatchDetector.ts +12 -6
- package/src/opLifecycle/opCompressor.ts +22 -25
- package/src/opLifecycle/opDecompressor.ts +23 -11
- package/src/opLifecycle/opGroupingManager.ts +16 -11
- package/src/opLifecycle/opSplitter.ts +24 -18
- package/src/opLifecycle/outbox.ts +35 -33
- package/src/opLifecycle/remoteMessageProcessor.ts +13 -5
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +49 -26
- package/src/summary/documentSchema.ts +41 -22
- package/src/summary/index.ts +0 -3
- package/src/summary/orderedClientElection.ts +114 -49
- package/src/summary/runWhileConnectedCoordinator.ts +12 -3
- package/src/summary/runningSummarizer.ts +79 -36
- package/src/summary/summarizer.ts +51 -25
- package/src/summary/summarizerClientElection.ts +4 -2
- package/src/summary/summarizerHeuristics.ts +23 -12
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +54 -43
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +25 -15
- package/src/summary/summarizerTypes.ts +253 -139
- package/src/summary/summaryCollection.ts +41 -31
- package/src/summary/summaryFormat.ts +34 -13
- package/src/summary/summaryGenerator.ts +39 -18
- package/src/summary/summaryManager.ts +36 -24
- package/src/throttler.ts +23 -11
- package/container-runtime.test-files.tar +0 -0
- package/dist/scheduleManager.d.ts +0 -28
- package/dist/scheduleManager.d.ts.map +0 -1
- package/dist/scheduleManager.js +0 -233
- package/dist/scheduleManager.js.map +0 -1
- package/lib/scheduleManager.d.ts +0 -28
- package/lib/scheduleManager.d.ts.map +0 -1
- package/lib/scheduleManager.js +0 -229
- package/lib/scheduleManager.js.map +0 -1
|
@@ -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";
|
|
@@ -46,7 +48,9 @@ export class GarbageCollector {
|
|
|
46
48
|
get shouldRunGC() {
|
|
47
49
|
return this.configs.gcAllowed;
|
|
48
50
|
}
|
|
49
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Returns the count of data stores whose GC state updated since the last summary.
|
|
53
|
+
*/
|
|
50
54
|
get updatedDSCountSinceLastSummary() {
|
|
51
55
|
return this.summaryStateTracker.updatedDSCountSinceLastSummary;
|
|
52
56
|
}
|
|
@@ -66,9 +70,13 @@ export class GarbageCollector {
|
|
|
66
70
|
this.unreferencedNodesState = new UnreferencedStateTrackerMap();
|
|
67
71
|
// The number of times GC has successfully completed on this instance of GarbageCollector.
|
|
68
72
|
this.completedRuns = 0;
|
|
69
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* API for ensuring the correct auto-recovery mitigations
|
|
75
|
+
*/
|
|
76
|
+
// TODO: consider hoisting this to an outer scope as an optimization
|
|
77
|
+
// eslint-disable-next-line unicorn/consistent-function-scoping
|
|
70
78
|
this.autoRecovery = (() => {
|
|
71
|
-
// 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,
|
|
72
80
|
// to regenerate the GC data for each node.
|
|
73
81
|
//
|
|
74
82
|
// Once fullGC has been requested, we need to wait until GC has run and the summary has been acked before clearing the state.
|
|
@@ -203,7 +211,7 @@ export class GarbageCollector {
|
|
|
203
211
|
if (nodeData.unreferencedTimestampMs !== undefined) {
|
|
204
212
|
this.unreferencedNodesState.set(nodeId, new UnreferencedStateTracker(nodeData.unreferencedTimestampMs, this.configs.inactiveTimeoutMs, currentReferenceTimestampMs, this.configs.tombstoneTimeoutMs, this.configs.sweepGracePeriodMs));
|
|
205
213
|
}
|
|
206
|
-
gcNodes[nodeId] =
|
|
214
|
+
gcNodes[nodeId] = [...nodeData.outboundRoutes];
|
|
207
215
|
}
|
|
208
216
|
this.gcDataFromLastRun = { gcNodes };
|
|
209
217
|
});
|
|
@@ -219,7 +227,7 @@ export class GarbageCollector {
|
|
|
219
227
|
// state will re-summarize to reset any GC specific state in their summaries (like unreferenced flag).
|
|
220
228
|
const gcNodes = {};
|
|
221
229
|
for (const [nodeId, nodeData] of Object.entries(baseSnapshotData.gcState.gcNodes)) {
|
|
222
|
-
gcNodes[nodeId] =
|
|
230
|
+
gcNodes[nodeId] = [...nodeData.outboundRoutes];
|
|
223
231
|
}
|
|
224
232
|
// Run GC on the nodes in the base summary to get the routes used in each node in the container.
|
|
225
233
|
// This is an optimization for space (vs performance) wherein we don't need to store the used routes of
|
|
@@ -261,7 +269,7 @@ export class GarbageCollector {
|
|
|
261
269
|
// Initialize the tombstone state from the snapshot. Also, notify the runtime of tombstone routes.
|
|
262
270
|
if (baseSnapshotData.tombstones !== undefined) {
|
|
263
271
|
// Create a copy since we are writing from a source we don't control
|
|
264
|
-
this.tombstones =
|
|
272
|
+
this.tombstones = [...baseSnapshotData.tombstones];
|
|
265
273
|
this.runtime.updateTombstonedRoutes(this.tombstones);
|
|
266
274
|
}
|
|
267
275
|
await this.initializeOrUpdateGCState();
|
|
@@ -280,16 +288,16 @@ export class GarbageCollector {
|
|
|
280
288
|
eventName: "InitializeOrUpdateGCState",
|
|
281
289
|
}, async (event) => {
|
|
282
290
|
// If the GC state hasn't been initialized yet, initialize it and return.
|
|
283
|
-
if (
|
|
284
|
-
await this.initializeGCStateFromBaseSnapshotP;
|
|
285
|
-
}
|
|
286
|
-
else {
|
|
291
|
+
if (initialized) {
|
|
287
292
|
// If the GC state has been initialized, update the tracking of unreferenced nodes as per the current
|
|
288
293
|
// reference timestamp.
|
|
289
294
|
for (const [, nodeStateTracker] of this.unreferencedNodesState) {
|
|
290
295
|
nodeStateTracker.updateTracking(currentReferenceTimestampMs);
|
|
291
296
|
}
|
|
292
297
|
}
|
|
298
|
+
else {
|
|
299
|
+
await this.initializeGCStateFromBaseSnapshotP;
|
|
300
|
+
}
|
|
293
301
|
event.end({
|
|
294
302
|
details: { initialized, unrefNodeCount: this.unreferencedNodesState.size },
|
|
295
303
|
});
|
|
@@ -363,10 +371,11 @@ export class GarbageCollector {
|
|
|
363
371
|
return undefined;
|
|
364
372
|
}
|
|
365
373
|
return PerformanceEvent.timedExecAsync(logger, { eventName: "GarbageCollection" }, async (event) => {
|
|
366
|
-
|
|
374
|
+
// #region Pre-GC steps
|
|
367
375
|
// Ensure that state has been initialized from the base snapshot data.
|
|
368
376
|
await this.initializeGCStateFromBaseSnapshotP;
|
|
369
|
-
|
|
377
|
+
// #endregion
|
|
378
|
+
// #region GC step
|
|
370
379
|
const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
|
|
371
380
|
event.end({
|
|
372
381
|
...gcStats,
|
|
@@ -376,7 +385,8 @@ export class GarbageCollector {
|
|
|
376
385
|
tombstone: this.configs.throwOnTombstoneLoad,
|
|
377
386
|
},
|
|
378
387
|
});
|
|
379
|
-
|
|
388
|
+
// #endregion
|
|
389
|
+
// #region Post-GC steps
|
|
380
390
|
// Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and
|
|
381
391
|
// updates its state so that we don't send false positives based on intermediate state. For example, we may get
|
|
382
392
|
// reference to an unreferenced node from another unreferenced node which means the node wasn't revived.
|
|
@@ -386,6 +396,7 @@ export class GarbageCollector {
|
|
|
386
396
|
this.autoRecovery.onCompletedGCRun();
|
|
387
397
|
this.newReferencesSinceLastRun.clear();
|
|
388
398
|
this.completedRuns++;
|
|
399
|
+
// #endregion
|
|
389
400
|
return gcStats;
|
|
390
401
|
}, { end: true, cancel: "error" });
|
|
391
402
|
}
|
|
@@ -516,6 +527,7 @@ export class GarbageCollector {
|
|
|
516
527
|
// local state when processing the op.
|
|
517
528
|
const sweepReadyDSAndBlobs = nodesToDelete.filter((nodeId) => {
|
|
518
529
|
const nodeType = this.runtime.getNodeType(nodeId);
|
|
530
|
+
// eslint-disable-next-line import/no-deprecated
|
|
519
531
|
return nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob;
|
|
520
532
|
});
|
|
521
533
|
const contents = {
|
|
@@ -579,7 +591,7 @@ export class GarbageCollector {
|
|
|
579
591
|
*/
|
|
580
592
|
const gcDataSuperSet = concatGarbageCollectionData(previousGCData, currentGCData);
|
|
581
593
|
const newOutboundRoutesSinceLastRun = [];
|
|
582
|
-
this.newReferencesSinceLastRun
|
|
594
|
+
for (const [sourceNodeId, outboundRoutes] of this.newReferencesSinceLastRun) {
|
|
583
595
|
if (gcDataSuperSet.gcNodes[sourceNodeId] === undefined) {
|
|
584
596
|
gcDataSuperSet.gcNodes[sourceNodeId] = outboundRoutes;
|
|
585
597
|
}
|
|
@@ -587,7 +599,7 @@ export class GarbageCollector {
|
|
|
587
599
|
gcDataSuperSet.gcNodes[sourceNodeId].push(...outboundRoutes);
|
|
588
600
|
}
|
|
589
601
|
newOutboundRoutesSinceLastRun.push(...outboundRoutes);
|
|
590
|
-
}
|
|
602
|
+
}
|
|
591
603
|
/**
|
|
592
604
|
* Run GC on the above reference graph starting with root and all new outbound routes. This will generate a
|
|
593
605
|
* list of all nodes that could have been referenced since the last run. If any of these nodes are unreferenced,
|
|
@@ -619,6 +631,7 @@ export class GarbageCollector {
|
|
|
619
631
|
}
|
|
620
632
|
return this.summaryStateTracker.summarize(trackState && !fullTree, gcState, this.deletedNodes, this.tombstones);
|
|
621
633
|
}
|
|
634
|
+
// eslint-disable-next-line import/no-deprecated
|
|
622
635
|
getMetadata() {
|
|
623
636
|
return {
|
|
624
637
|
/**
|
|
@@ -663,8 +676,9 @@ export class GarbageCollector {
|
|
|
663
676
|
this.autoRecovery.requestFullGCOnNextRun();
|
|
664
677
|
break;
|
|
665
678
|
}
|
|
666
|
-
default:
|
|
679
|
+
default: {
|
|
667
680
|
throw DataProcessingError.create(`Garbage collection message of unknown type ${gcMessageType}`, "processMessage");
|
|
681
|
+
}
|
|
668
682
|
}
|
|
669
683
|
}
|
|
670
684
|
}
|
|
@@ -683,7 +697,7 @@ export class GarbageCollector {
|
|
|
683
697
|
// The ids in the sweep-ready nodes do not contain DDS node ids. This is an optimization to reduce the size
|
|
684
698
|
// of the GC op. Since GC applies to data store only, all its DDSes are deleted along with it. So, get the
|
|
685
699
|
// DDS nodes ID from the unreferenced nodes state.
|
|
686
|
-
const allSweepReadyNodeIds =
|
|
700
|
+
const allSweepReadyNodeIds = [...sweepReadyNodeIds];
|
|
687
701
|
for (const [id] of this.unreferencedNodesState) {
|
|
688
702
|
// Ignore data store nodes since they would already be in the list.
|
|
689
703
|
const pathParts = id.split("/");
|
|
@@ -720,7 +734,7 @@ export class GarbageCollector {
|
|
|
720
734
|
// trackedId will be either DataStore or Blob ID (not sub-DataStore ID, since some of those are unrecognized by GC)
|
|
721
735
|
const trackedId = node.path;
|
|
722
736
|
const isTombstoned = this.tombstones.includes(trackedId);
|
|
723
|
-
const fullPath = request
|
|
737
|
+
const fullPath = request === undefined ? trackedId : urlToGCNodePath(request.url);
|
|
724
738
|
// This will log if appropriate
|
|
725
739
|
this.telemetryTracker.nodeUsed(trackedId, {
|
|
726
740
|
id: fullPath,
|
|
@@ -746,6 +760,7 @@ export class GarbageCollector {
|
|
|
746
760
|
const nodeType = this.runtime.getNodeType(fullPath);
|
|
747
761
|
// Unless this is a Loaded event for a Blob or DataStore, we're done after telemetry tracking
|
|
748
762
|
const loadedBlobOrDataStore = reason === "Loaded" &&
|
|
763
|
+
// eslint-disable-next-line import/no-deprecated
|
|
749
764
|
(nodeType === GCNodeType.Blob || nodeType === GCNodeType.DataStore);
|
|
750
765
|
if (!loadedBlobOrDataStore) {
|
|
751
766
|
return;
|
|
@@ -850,7 +865,9 @@ export class GarbageCollector {
|
|
|
850
865
|
* @param gcResult - The result of the current GC run.
|
|
851
866
|
* @returns the stats of the mark phase run.
|
|
852
867
|
*/
|
|
868
|
+
// eslint-disable-next-line import/no-deprecated
|
|
853
869
|
getMarkPhaseStats(gcResult) {
|
|
870
|
+
// eslint-disable-next-line import/no-deprecated
|
|
854
871
|
const markPhaseStats = {
|
|
855
872
|
nodeCount: 0,
|
|
856
873
|
dataStoreCount: 0,
|
|
@@ -874,6 +891,7 @@ export class GarbageCollector {
|
|
|
874
891
|
if (!isReferenced) {
|
|
875
892
|
markPhaseStats.unrefNodeCount++;
|
|
876
893
|
}
|
|
894
|
+
// eslint-disable-next-line import/no-deprecated
|
|
877
895
|
if (this.runtime.getNodeType(nodeId) === GCNodeType.DataStore) {
|
|
878
896
|
markPhaseStats.dataStoreCount++;
|
|
879
897
|
if (stateUpdated) {
|
|
@@ -883,6 +901,7 @@ export class GarbageCollector {
|
|
|
883
901
|
markPhaseStats.unrefDataStoreCount++;
|
|
884
902
|
}
|
|
885
903
|
}
|
|
904
|
+
// eslint-disable-next-line import/no-deprecated
|
|
886
905
|
if (this.runtime.getNodeType(nodeId) === GCNodeType.Blob) {
|
|
887
906
|
markPhaseStats.attachmentBlobCount++;
|
|
888
907
|
if (stateUpdated) {
|
|
@@ -909,9 +928,12 @@ export class GarbageCollector {
|
|
|
909
928
|
* @param markPhaseStats - The stats of the mark phase run.
|
|
910
929
|
* @returns the stats of the sweep phase run.
|
|
911
930
|
*/
|
|
912
|
-
getSweepPhaseStats(deletedNodes, sweepReadyNodes,
|
|
931
|
+
getSweepPhaseStats(deletedNodes, sweepReadyNodes,
|
|
932
|
+
// eslint-disable-next-line import/no-deprecated
|
|
933
|
+
markPhaseStats) {
|
|
913
934
|
// Initialize the life time node counts to the mark phase node counts. If sweep is not enabled,
|
|
914
935
|
// these will be the life time node count for this container.
|
|
936
|
+
// eslint-disable-next-line import/no-deprecated
|
|
915
937
|
const sweepPhaseStats = {
|
|
916
938
|
lifetimeNodeCount: markPhaseStats.nodeCount,
|
|
917
939
|
lifetimeDataStoreCount: markPhaseStats.dataStoreCount,
|
|
@@ -922,24 +944,31 @@ export class GarbageCollector {
|
|
|
922
944
|
};
|
|
923
945
|
// The runtime can't reliably identify the type of deleted nodes. So, get the type here. This should
|
|
924
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
|
|
925
948
|
const getDeletedNodeType = (nodeId) => {
|
|
926
949
|
const pathParts = nodeId.split("/");
|
|
927
950
|
if (pathParts[1] === blobManagerBasePath) {
|
|
951
|
+
// eslint-disable-next-line import/no-deprecated
|
|
928
952
|
return GCNodeType.Blob;
|
|
929
953
|
}
|
|
930
954
|
if (pathParts.length === 2) {
|
|
955
|
+
// eslint-disable-next-line import/no-deprecated
|
|
931
956
|
return GCNodeType.DataStore;
|
|
932
957
|
}
|
|
933
958
|
if (pathParts.length === 3) {
|
|
959
|
+
// eslint-disable-next-line import/no-deprecated
|
|
934
960
|
return GCNodeType.SubDataStore;
|
|
935
961
|
}
|
|
962
|
+
// eslint-disable-next-line import/no-deprecated
|
|
936
963
|
return GCNodeType.Other;
|
|
937
964
|
};
|
|
938
965
|
for (const nodeId of deletedNodes) {
|
|
939
966
|
sweepPhaseStats.deletedNodeCount++;
|
|
940
967
|
const nodeType = getDeletedNodeType(nodeId);
|
|
968
|
+
// eslint-disable-next-line import/no-deprecated
|
|
941
969
|
if (nodeType === GCNodeType.DataStore) {
|
|
942
970
|
sweepPhaseStats.deletedDataStoreCount++;
|
|
971
|
+
// eslint-disable-next-line import/no-deprecated
|
|
943
972
|
}
|
|
944
973
|
else if (nodeType === GCNodeType.Blob) {
|
|
945
974
|
sweepPhaseStats.deletedAttachmentBlobCount++;
|
|
@@ -959,8 +988,10 @@ export class GarbageCollector {
|
|
|
959
988
|
for (const nodeId of sweepReadyNodes) {
|
|
960
989
|
sweepPhaseStats.deletedNodeCount++;
|
|
961
990
|
const nodeType = this.runtime.getNodeType(nodeId);
|
|
991
|
+
// eslint-disable-next-line import/no-deprecated
|
|
962
992
|
if (nodeType === GCNodeType.DataStore) {
|
|
963
993
|
sweepPhaseStats.deletedDataStoreCount++;
|
|
994
|
+
// eslint-disable-next-line import/no-deprecated
|
|
964
995
|
}
|
|
965
996
|
else if (nodeType === GCNodeType.Blob) {
|
|
966
997
|
sweepPhaseStats.deletedAttachmentBlobCount++;
|