@fluidframework/container-runtime 2.13.0 → 2.20.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 -0
- package/CHANGELOG.md +46 -0
- package/api-report/container-runtime.legacy.alpha.api.md +9 -203
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts.map +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 +16 -2
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- 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 +22 -12
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +6 -2
- 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 +74 -65
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +53 -37
- 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 +2 -1
- 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 +31 -18
- 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 +6 -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 +12 -5
- 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 +3 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +210 -70
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +39 -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 +6 -2
- 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.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 +6 -2
- 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/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 +9 -3
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +3 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +12 -7
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +0 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +5 -4
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +2 -0
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +1 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +6 -1
- 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.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 +19 -7
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +13 -5
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -0
- 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 +93 -31
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +15 -5
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- 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 +12 -4
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +9 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +9 -3
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- 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 +12 -4
- package/dist/summary/summarizerHeuristics.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 +15 -5
- 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 +12 -4
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +246 -135
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +1 -2
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +24 -8
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- 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 +3 -1
- 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 +12 -4
- 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.map +1 -1
- 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 +16 -2
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- 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 +22 -12
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +6 -2
- 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 +74 -65
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +53 -37
- 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 +2 -1
- 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 +31 -18
- 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 +6 -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 +95 -89
- 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 +12 -5
- 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 +2 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +210 -70
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +39 -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 +6 -2
- 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.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 +6 -2
- 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/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 +9 -3
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +1 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +3 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +13 -8
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +0 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +6 -5
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +2 -0
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +1 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +6 -1
- 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.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 +19 -7
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +13 -5
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -0
- 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 +93 -31
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +15 -5
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- 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 +12 -4
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +9 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +9 -3
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- 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 +12 -4
- package/lib/summary/summarizerHeuristics.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 +15 -5
- 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 +12 -4
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +246 -135
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +1 -2
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +24 -8
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- 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 +3 -1
- 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 +12 -4
- 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 +43 -30
- package/src/batchTracker.ts +31 -33
- package/src/blobManager/blobManager.ts +38 -19
- package/src/blobManager/blobManagerSnapSum.ts +2 -2
- package/src/channelCollection.ts +45 -38
- package/src/connectionTelemetry.ts +31 -13
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +199 -142
- package/src/dataStore.ts +11 -6
- package/src/dataStoreContext.ts +80 -59
- package/src/dataStoreContexts.ts +16 -12
- package/src/dataStoreRegistry.ts +1 -1
- package/src/deltaManagerProxies.ts +5 -5
- package/src/deltaScheduler.ts +19 -13
- package/src/gc/garbageCollection.ts +42 -20
- package/src/gc/gcConfigs.ts +4 -4
- package/src/gc/gcDefinitions.ts +212 -70
- package/src/gc/gcHelpers.ts +13 -7
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +18 -6
- package/src/gc/gcSummaryStateTracker.ts +4 -2
- package/src/gc/gcTelemetry.ts +47 -19
- package/src/gc/gcUnreferencedStateTracker.ts +40 -16
- package/src/gc/index.ts +1 -0
- package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +53 -120
- package/src/index.ts +0 -3
- package/src/messageTypes.ts +14 -5
- package/src/metadata.ts +12 -4
- package/src/opLifecycle/batchManager.ts +12 -6
- package/src/opLifecycle/duplicateBatchDetector.ts +10 -4
- package/src/opLifecycle/opCompressor.ts +8 -4
- package/src/opLifecycle/opDecompressor.ts +19 -10
- package/src/opLifecycle/opGroupingManager.ts +12 -8
- package/src/opLifecycle/opSplitter.ts +10 -7
- package/src/opLifecycle/outbox.ts +22 -13
- package/src/opLifecycle/remoteMessageProcessor.ts +10 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +34 -16
- package/src/summary/documentSchema.ts +30 -18
- package/src/summary/index.ts +0 -3
- package/src/summary/orderedClientElection.ts +100 -38
- package/src/summary/runWhileConnectedCoordinator.ts +6 -3
- package/src/summary/runningSummarizer.ts +38 -19
- package/src/summary/summarizer.ts +29 -16
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +22 -11
- package/src/summary/summarizerNode/summarizerNode.ts +22 -12
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +21 -11
- package/src/summary/summarizerTypes.ts +246 -139
- package/src/summary/summaryCollection.ts +22 -23
- package/src/summary/summaryFormat.ts +24 -8
- package/src/summary/summaryGenerator.ts +14 -8
- package/src/summary/summaryManager.ts +28 -18
- package/src/throttler.ts +23 -11
- 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
package/src/deltaScheduler.ts
CHANGED
|
@@ -3,9 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { performance } from "@fluid-internal/client-utils";
|
|
6
|
+
import { performance, type TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
7
|
import { IDeltaManagerFull } from "@fluidframework/container-definitions/internal";
|
|
8
8
|
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
9
|
+
import type { IContainerRuntimeBaseEvents } from "@fluidframework/runtime-definitions/internal";
|
|
9
10
|
import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils/internal";
|
|
10
11
|
|
|
11
12
|
/**
|
|
@@ -22,7 +23,6 @@ import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils
|
|
|
22
23
|
* processed, the time and number of turns it took to process the ops.
|
|
23
24
|
*/
|
|
24
25
|
export class DeltaScheduler {
|
|
25
|
-
private readonly deltaManager: IDeltaManagerFull;
|
|
26
26
|
// The time for processing ops in a single turn.
|
|
27
27
|
public static readonly processingTime = 50;
|
|
28
28
|
|
|
@@ -50,16 +50,22 @@ export class DeltaScheduler {
|
|
|
50
50
|
| undefined;
|
|
51
51
|
|
|
52
52
|
constructor(
|
|
53
|
-
deltaManager: IDeltaManagerFull,
|
|
53
|
+
private readonly deltaManager: IDeltaManagerFull,
|
|
54
|
+
private readonly runtimeEventsEmitter: TypedEventEmitter<IContainerRuntimeBaseEvents>,
|
|
54
55
|
private readonly logger: ITelemetryLoggerExt,
|
|
55
56
|
) {
|
|
56
|
-
this.deltaManager
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
});
|
|
57
|
+
this.deltaManager.inbound.on("idle", this.inboundQueueIdle);
|
|
58
|
+
runtimeEventsEmitter.on("batchBegin", this.batchBegin);
|
|
59
|
+
runtimeEventsEmitter.on("batchEnd", this.batchEnd);
|
|
60
60
|
}
|
|
61
61
|
|
|
62
|
-
public
|
|
62
|
+
public dispose(): void {
|
|
63
|
+
this.deltaManager.inbound.off("idle", this.inboundQueueIdle);
|
|
64
|
+
this.runtimeEventsEmitter.off("batchBegin", this.batchBegin);
|
|
65
|
+
this.runtimeEventsEmitter.off("batchEnd", this.batchEnd);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
private readonly batchBegin = (message: ISequencedDocumentMessage): void => {
|
|
63
69
|
if (!this.processingStartTime) {
|
|
64
70
|
this.processingStartTime = performance.now();
|
|
65
71
|
}
|
|
@@ -76,9 +82,9 @@ export class DeltaScheduler {
|
|
|
76
82
|
startTime: performance.now(),
|
|
77
83
|
};
|
|
78
84
|
}
|
|
79
|
-
}
|
|
85
|
+
};
|
|
80
86
|
|
|
81
|
-
|
|
87
|
+
private readonly batchEnd = (error: unknown, message: ISequencedDocumentMessage): void => {
|
|
82
88
|
if (this.schedulingLog) {
|
|
83
89
|
this.schedulingLog.numberOfBatchesProcessed++;
|
|
84
90
|
this.schedulingLog.lastSequenceNumber = message.sequenceNumber;
|
|
@@ -129,9 +135,9 @@ export class DeltaScheduler {
|
|
|
129
135
|
this.processingStartTime = undefined;
|
|
130
136
|
}
|
|
131
137
|
}
|
|
132
|
-
}
|
|
138
|
+
};
|
|
133
139
|
|
|
134
|
-
private inboundQueueIdle() {
|
|
140
|
+
private readonly inboundQueueIdle = (): void => {
|
|
135
141
|
if (this.schedulingLog) {
|
|
136
142
|
// Add the time taken for processing the final ops to the total processing time in the
|
|
137
143
|
// telemetry log object.
|
|
@@ -161,7 +167,7 @@ export class DeltaScheduler {
|
|
|
161
167
|
// Reset the processing times.
|
|
162
168
|
this.processingStartTime = undefined;
|
|
163
169
|
this.currentAllowedProcessingTimeForTurn = DeltaScheduler.processingTime;
|
|
164
|
-
}
|
|
170
|
+
};
|
|
165
171
|
|
|
166
172
|
/**
|
|
167
173
|
* This function tells whether we should run the scheduler.
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
|
|
6
6
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
7
7
|
import { assert, LazyPromise, Timer } from "@fluidframework/core-utils/internal";
|
|
8
|
-
import type { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
|
|
9
8
|
import {
|
|
10
9
|
IGarbageCollectionDetailsBase,
|
|
11
10
|
ISummarizeResult,
|
|
@@ -142,16 +141,22 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
142
141
|
private readonly summaryStateTracker: GCSummaryStateTracker;
|
|
143
142
|
private readonly telemetryTracker: GCTelemetryTracker;
|
|
144
143
|
|
|
145
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
* For a given node path, returns the node's package path.
|
|
146
|
+
*/
|
|
146
147
|
private readonly getNodePackagePath: (
|
|
147
148
|
nodePath: string,
|
|
148
149
|
) => Promise<readonly string[] | undefined>;
|
|
149
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Returns the timestamp of the last summary generated for this container.
|
|
152
|
+
*/
|
|
150
153
|
private readonly getLastSummaryTimestampMs: () => number | undefined;
|
|
151
154
|
|
|
152
155
|
private readonly submitMessage: (message: ContainerRuntimeGCMessage) => void;
|
|
153
156
|
|
|
154
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Returns the count of data stores whose GC state updated since the last summary.
|
|
159
|
+
*/
|
|
155
160
|
public get updatedDSCountSinceLastSummary(): number {
|
|
156
161
|
return this.summaryStateTracker.updatedDSCountSinceLastSummary;
|
|
157
162
|
}
|
|
@@ -227,7 +232,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
227
232
|
|
|
228
233
|
try {
|
|
229
234
|
// For newer documents, GC data should be present in the GC tree in the root of the snapshot.
|
|
230
|
-
const gcSnapshotTree
|
|
235
|
+
const gcSnapshotTree = baseSnapshot.trees[gcTreeKey];
|
|
231
236
|
if (gcSnapshotTree === undefined) {
|
|
232
237
|
// back-compat - Older documents get their gc data reset for simplicity as there are few of them
|
|
233
238
|
// incremental gc summary will not work with older gc data as well
|
|
@@ -339,7 +344,9 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
339
344
|
});
|
|
340
345
|
}
|
|
341
346
|
|
|
342
|
-
/**
|
|
347
|
+
/**
|
|
348
|
+
* API for ensuring the correct auto-recovery mitigations
|
|
349
|
+
*/
|
|
343
350
|
private readonly autoRecovery = (() => {
|
|
344
351
|
// This uses a hidden state machine for forcing fullGC as part of autorecovery,
|
|
345
352
|
// to regenerate the GC data for each node.
|
|
@@ -414,7 +421,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
414
421
|
* Initialize the GC state if not already initialized. If GC state is already initialized, update the unreferenced
|
|
415
422
|
* state tracking as per the current reference timestamp.
|
|
416
423
|
*/
|
|
417
|
-
private async initializeOrUpdateGCState() {
|
|
424
|
+
private async initializeOrUpdateGCState(): Promise<void> {
|
|
418
425
|
const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();
|
|
419
426
|
if (currentReferenceTimestampMs === undefined) {
|
|
420
427
|
return;
|
|
@@ -488,11 +495,17 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
488
495
|
*/
|
|
489
496
|
public async collectGarbage(
|
|
490
497
|
options: {
|
|
491
|
-
/**
|
|
498
|
+
/**
|
|
499
|
+
* Logger to use for logging GC events
|
|
500
|
+
*/
|
|
492
501
|
logger?: ITelemetryLoggerExt;
|
|
493
|
-
/**
|
|
502
|
+
/**
|
|
503
|
+
* True to run GC sweep phase after the mark phase
|
|
504
|
+
*/
|
|
494
505
|
runSweep?: boolean;
|
|
495
|
-
/**
|
|
506
|
+
/**
|
|
507
|
+
* True to generate full GC data
|
|
508
|
+
*/
|
|
496
509
|
fullGC?: boolean;
|
|
497
510
|
},
|
|
498
511
|
telemetryContext?: ITelemetryContext,
|
|
@@ -535,11 +548,15 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
535
548
|
logger,
|
|
536
549
|
{ eventName: "GarbageCollection" },
|
|
537
550
|
async (event) => {
|
|
538
|
-
|
|
551
|
+
// #region Pre-GC steps
|
|
552
|
+
|
|
539
553
|
// Ensure that state has been initialized from the base snapshot data.
|
|
540
554
|
await this.initializeGCStateFromBaseSnapshotP;
|
|
541
555
|
|
|
542
|
-
|
|
556
|
+
// #endregion
|
|
557
|
+
|
|
558
|
+
// #region GC step
|
|
559
|
+
|
|
543
560
|
const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
|
|
544
561
|
event.end({
|
|
545
562
|
...gcStats,
|
|
@@ -550,7 +567,10 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
550
567
|
},
|
|
551
568
|
});
|
|
552
569
|
|
|
553
|
-
|
|
570
|
+
// #endregion
|
|
571
|
+
|
|
572
|
+
// #region Post-GC steps
|
|
573
|
+
|
|
554
574
|
// Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and
|
|
555
575
|
// updates its state so that we don't send false positives based on intermediate state. For example, we may get
|
|
556
576
|
// reference to an unreferenced node from another unreferenced node which means the node wasn't revived.
|
|
@@ -561,6 +581,8 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
561
581
|
this.newReferencesSinceLastRun.clear();
|
|
562
582
|
this.completedRuns++;
|
|
563
583
|
|
|
584
|
+
// #endregion
|
|
585
|
+
|
|
564
586
|
return gcStats;
|
|
565
587
|
},
|
|
566
588
|
{ end: true, cancel: "error" },
|
|
@@ -700,7 +722,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
700
722
|
gcResult: IGCResult,
|
|
701
723
|
tombstoneReadyNodes: Set<string>,
|
|
702
724
|
sweepReadyNodes: Set<string>,
|
|
703
|
-
) {
|
|
725
|
+
): void {
|
|
704
726
|
/**
|
|
705
727
|
* Under "Test Mode", unreferenced nodes are immediately deleted without waiting for them to be sweep-ready.
|
|
706
728
|
*
|
|
@@ -904,7 +926,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
904
926
|
messageContents: GarbageCollectionMessage[],
|
|
905
927
|
messageTimestampMs: number,
|
|
906
928
|
local: boolean,
|
|
907
|
-
) {
|
|
929
|
+
): void {
|
|
908
930
|
for (const gcMessage of messageContents) {
|
|
909
931
|
const gcMessageType = gcMessage.type;
|
|
910
932
|
switch (gcMessageType) {
|
|
@@ -946,7 +968,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
946
968
|
*
|
|
947
969
|
* @param sweepReadyNodeIds - The ids of nodes that are ready to be deleted.
|
|
948
970
|
*/
|
|
949
|
-
private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]) {
|
|
971
|
+
private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]): void {
|
|
950
972
|
// Use a set for lookup because its much faster than array or map.
|
|
951
973
|
const sweepReadyNodesSet: Set<string> = new Set(sweepReadyNodeIds);
|
|
952
974
|
|
|
@@ -992,7 +1014,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
992
1014
|
request,
|
|
993
1015
|
headerData,
|
|
994
1016
|
additionalProps,
|
|
995
|
-
}: IGCNodeUpdatedProps) {
|
|
1017
|
+
}: IGCNodeUpdatedProps): void {
|
|
996
1018
|
// If there is no reference timestamp to work with, no ops have been processed after creation. If so, skip
|
|
997
1019
|
// logging as nothing interesting would have happened worth logging.
|
|
998
1020
|
if (!this.shouldRunGC || timestampMs === undefined) {
|
|
@@ -1063,7 +1085,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1063
1085
|
* Broadcasting this information in the op stream allows the Summarizer to reset unreferenced state
|
|
1064
1086
|
* before running GC next.
|
|
1065
1087
|
*/
|
|
1066
|
-
private triggerAutoRecovery(nodePath: string) {
|
|
1088
|
+
private triggerAutoRecovery(nodePath: string): void {
|
|
1067
1089
|
// If sweep isn't enabled, auto-recovery isn't needed since its purpose is to prevent this object from being
|
|
1068
1090
|
// deleted. It also would end up sending a GC op which can break clients running FF version 1.x.
|
|
1069
1091
|
if (!this.configs.sweepEnabled) {
|
|
@@ -1094,7 +1116,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1094
1116
|
toNodePath: string,
|
|
1095
1117
|
timestampMs: number,
|
|
1096
1118
|
autorecovery?: true,
|
|
1097
|
-
) {
|
|
1119
|
+
): void {
|
|
1098
1120
|
if (!this.shouldRunGC) {
|
|
1099
1121
|
return;
|
|
1100
1122
|
}
|
|
@@ -1173,7 +1195,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1173
1195
|
updatedAttachmentBlobCount: 0,
|
|
1174
1196
|
};
|
|
1175
1197
|
|
|
1176
|
-
const updateNodeStats = (nodeId: string, isReferenced: boolean) => {
|
|
1198
|
+
const updateNodeStats = (nodeId: string, isReferenced: boolean): void => {
|
|
1177
1199
|
markPhaseStats.nodeCount++;
|
|
1178
1200
|
// If there is no previous GC data, every node's state is generated and is considered as updated.
|
|
1179
1201
|
// Otherwise, find out if any node went from referenced to unreferenced or vice-versa.
|
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -87,7 +87,7 @@ export function generateGCConfigs(
|
|
|
87
87
|
tombstoneTimeoutMs =
|
|
88
88
|
testOverrideTombstoneTimeoutMs ?? computeTombstoneTimeout(sessionExpiryTimeoutMs);
|
|
89
89
|
|
|
90
|
-
const gcGeneration = createParams.gcOptions
|
|
90
|
+
const gcGeneration = createParams.gcOptions[gcGenerationOptionName] as number;
|
|
91
91
|
if (gcGeneration !== undefined) {
|
|
92
92
|
persistedGcFeatureMatrix = { gcGeneration };
|
|
93
93
|
}
|
|
@@ -116,9 +116,9 @@ export function generateGCConfigs(
|
|
|
116
116
|
: sweepAllowed && createParams.gcOptions.enableGCSweep === true;
|
|
117
117
|
|
|
118
118
|
// Override inactive timeout if test config or gc options to override it is set.
|
|
119
|
-
const inactiveTimeoutMs =
|
|
119
|
+
const inactiveTimeoutMs: number =
|
|
120
120
|
mc.config.getNumber("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs") ??
|
|
121
|
-
createParams.gcOptions.inactiveTimeoutMs ??
|
|
121
|
+
(createParams.gcOptions.inactiveTimeoutMs as number) ??
|
|
122
122
|
defaultInactiveTimeoutMs;
|
|
123
123
|
|
|
124
124
|
// Inactive timeout must be greater than tombstone timeout since a node goes from active -> inactive -> sweep ready.
|
|
@@ -169,7 +169,7 @@ export function generateGCConfigs(
|
|
|
169
169
|
*
|
|
170
170
|
* If there is no Session Expiry timeout, GC can never guarantee an object won't be revived, so return undefined.
|
|
171
171
|
*/
|
|
172
|
-
function computeTombstoneTimeout(
|
|
172
|
+
export function computeTombstoneTimeout(
|
|
173
173
|
sessionExpiryTimeoutMs: number | undefined,
|
|
174
174
|
): number | undefined {
|
|
175
175
|
const bufferMs = oneDayMs;
|