@fluidframework/container-runtime 2.12.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 +50 -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 +2 -1
- 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/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 -8
- 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 -1
- 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 +22 -6
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +43 -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 -4
- 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 +1 -1
- 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/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 -9
- 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 -1
- 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 +22 -6
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +41 -4
- 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 -4
- 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 +44 -31
- package/src/batchTracker.ts +31 -33
- package/src/blobManager/blobManager.ts +38 -19
- package/src/blobManager/blobManagerSnapSum.ts +1 -1
- package/src/channelCollection.ts +44 -37
- package/src/connectionTelemetry.ts +31 -13
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +198 -140
- 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 +41 -18
- package/src/gc/gcConfigs.ts +4 -4
- package/src/gc/gcDefinitions.ts +212 -70
- package/src/gc/gcHelpers.ts +11 -5
- 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} +54 -121
- 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 +20 -11
- package/src/opLifecycle/opGroupingManager.ts +12 -8
- package/src/opLifecycle/opSplitter.ts +11 -8
- package/src/opLifecycle/outbox.ts +22 -13
- package/src/opLifecycle/remoteMessageProcessor.ts +10 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +71 -15
- 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 +24 -25
- 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 -235
- 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 -231
- 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.
|
|
@@ -141,16 +141,22 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
141
141
|
private readonly summaryStateTracker: GCSummaryStateTracker;
|
|
142
142
|
private readonly telemetryTracker: GCTelemetryTracker;
|
|
143
143
|
|
|
144
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
* For a given node path, returns the node's package path.
|
|
146
|
+
*/
|
|
145
147
|
private readonly getNodePackagePath: (
|
|
146
148
|
nodePath: string,
|
|
147
149
|
) => Promise<readonly string[] | undefined>;
|
|
148
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Returns the timestamp of the last summary generated for this container.
|
|
152
|
+
*/
|
|
149
153
|
private readonly getLastSummaryTimestampMs: () => number | undefined;
|
|
150
154
|
|
|
151
155
|
private readonly submitMessage: (message: ContainerRuntimeGCMessage) => void;
|
|
152
156
|
|
|
153
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Returns the count of data stores whose GC state updated since the last summary.
|
|
159
|
+
*/
|
|
154
160
|
public get updatedDSCountSinceLastSummary(): number {
|
|
155
161
|
return this.summaryStateTracker.updatedDSCountSinceLastSummary;
|
|
156
162
|
}
|
|
@@ -338,7 +344,9 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
338
344
|
});
|
|
339
345
|
}
|
|
340
346
|
|
|
341
|
-
/**
|
|
347
|
+
/**
|
|
348
|
+
* API for ensuring the correct auto-recovery mitigations
|
|
349
|
+
*/
|
|
342
350
|
private readonly autoRecovery = (() => {
|
|
343
351
|
// This uses a hidden state machine for forcing fullGC as part of autorecovery,
|
|
344
352
|
// to regenerate the GC data for each node.
|
|
@@ -413,7 +421,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
413
421
|
* Initialize the GC state if not already initialized. If GC state is already initialized, update the unreferenced
|
|
414
422
|
* state tracking as per the current reference timestamp.
|
|
415
423
|
*/
|
|
416
|
-
private async initializeOrUpdateGCState() {
|
|
424
|
+
private async initializeOrUpdateGCState(): Promise<void> {
|
|
417
425
|
const currentReferenceTimestampMs = this.runtime.getCurrentReferenceTimestampMs();
|
|
418
426
|
if (currentReferenceTimestampMs === undefined) {
|
|
419
427
|
return;
|
|
@@ -487,11 +495,17 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
487
495
|
*/
|
|
488
496
|
public async collectGarbage(
|
|
489
497
|
options: {
|
|
490
|
-
/**
|
|
498
|
+
/**
|
|
499
|
+
* Logger to use for logging GC events
|
|
500
|
+
*/
|
|
491
501
|
logger?: ITelemetryLoggerExt;
|
|
492
|
-
/**
|
|
502
|
+
/**
|
|
503
|
+
* True to run GC sweep phase after the mark phase
|
|
504
|
+
*/
|
|
493
505
|
runSweep?: boolean;
|
|
494
|
-
/**
|
|
506
|
+
/**
|
|
507
|
+
* True to generate full GC data
|
|
508
|
+
*/
|
|
495
509
|
fullGC?: boolean;
|
|
496
510
|
},
|
|
497
511
|
telemetryContext?: ITelemetryContext,
|
|
@@ -534,11 +548,15 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
534
548
|
logger,
|
|
535
549
|
{ eventName: "GarbageCollection" },
|
|
536
550
|
async (event) => {
|
|
537
|
-
|
|
551
|
+
// #region Pre-GC steps
|
|
552
|
+
|
|
538
553
|
// Ensure that state has been initialized from the base snapshot data.
|
|
539
554
|
await this.initializeGCStateFromBaseSnapshotP;
|
|
540
555
|
|
|
541
|
-
|
|
556
|
+
// #endregion
|
|
557
|
+
|
|
558
|
+
// #region GC step
|
|
559
|
+
|
|
542
560
|
const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
|
|
543
561
|
event.end({
|
|
544
562
|
...gcStats,
|
|
@@ -549,7 +567,10 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
549
567
|
},
|
|
550
568
|
});
|
|
551
569
|
|
|
552
|
-
|
|
570
|
+
// #endregion
|
|
571
|
+
|
|
572
|
+
// #region Post-GC steps
|
|
573
|
+
|
|
553
574
|
// Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and
|
|
554
575
|
// updates its state so that we don't send false positives based on intermediate state. For example, we may get
|
|
555
576
|
// reference to an unreferenced node from another unreferenced node which means the node wasn't revived.
|
|
@@ -560,6 +581,8 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
560
581
|
this.newReferencesSinceLastRun.clear();
|
|
561
582
|
this.completedRuns++;
|
|
562
583
|
|
|
584
|
+
// #endregion
|
|
585
|
+
|
|
563
586
|
return gcStats;
|
|
564
587
|
},
|
|
565
588
|
{ end: true, cancel: "error" },
|
|
@@ -699,7 +722,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
699
722
|
gcResult: IGCResult,
|
|
700
723
|
tombstoneReadyNodes: Set<string>,
|
|
701
724
|
sweepReadyNodes: Set<string>,
|
|
702
|
-
) {
|
|
725
|
+
): void {
|
|
703
726
|
/**
|
|
704
727
|
* Under "Test Mode", unreferenced nodes are immediately deleted without waiting for them to be sweep-ready.
|
|
705
728
|
*
|
|
@@ -903,7 +926,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
903
926
|
messageContents: GarbageCollectionMessage[],
|
|
904
927
|
messageTimestampMs: number,
|
|
905
928
|
local: boolean,
|
|
906
|
-
) {
|
|
929
|
+
): void {
|
|
907
930
|
for (const gcMessage of messageContents) {
|
|
908
931
|
const gcMessageType = gcMessage.type;
|
|
909
932
|
switch (gcMessageType) {
|
|
@@ -945,7 +968,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
945
968
|
*
|
|
946
969
|
* @param sweepReadyNodeIds - The ids of nodes that are ready to be deleted.
|
|
947
970
|
*/
|
|
948
|
-
private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]) {
|
|
971
|
+
private deleteSweepReadyNodes(sweepReadyNodeIds: readonly string[]): void {
|
|
949
972
|
// Use a set for lookup because its much faster than array or map.
|
|
950
973
|
const sweepReadyNodesSet: Set<string> = new Set(sweepReadyNodeIds);
|
|
951
974
|
|
|
@@ -991,7 +1014,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
991
1014
|
request,
|
|
992
1015
|
headerData,
|
|
993
1016
|
additionalProps,
|
|
994
|
-
}: IGCNodeUpdatedProps) {
|
|
1017
|
+
}: IGCNodeUpdatedProps): void {
|
|
995
1018
|
// If there is no reference timestamp to work with, no ops have been processed after creation. If so, skip
|
|
996
1019
|
// logging as nothing interesting would have happened worth logging.
|
|
997
1020
|
if (!this.shouldRunGC || timestampMs === undefined) {
|
|
@@ -1062,7 +1085,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1062
1085
|
* Broadcasting this information in the op stream allows the Summarizer to reset unreferenced state
|
|
1063
1086
|
* before running GC next.
|
|
1064
1087
|
*/
|
|
1065
|
-
private triggerAutoRecovery(nodePath: string) {
|
|
1088
|
+
private triggerAutoRecovery(nodePath: string): void {
|
|
1066
1089
|
// If sweep isn't enabled, auto-recovery isn't needed since its purpose is to prevent this object from being
|
|
1067
1090
|
// deleted. It also would end up sending a GC op which can break clients running FF version 1.x.
|
|
1068
1091
|
if (!this.configs.sweepEnabled) {
|
|
@@ -1093,7 +1116,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1093
1116
|
toNodePath: string,
|
|
1094
1117
|
timestampMs: number,
|
|
1095
1118
|
autorecovery?: true,
|
|
1096
|
-
) {
|
|
1119
|
+
): void {
|
|
1097
1120
|
if (!this.shouldRunGC) {
|
|
1098
1121
|
return;
|
|
1099
1122
|
}
|
|
@@ -1172,7 +1195,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
1172
1195
|
updatedAttachmentBlobCount: 0,
|
|
1173
1196
|
};
|
|
1174
1197
|
|
|
1175
|
-
const updateNodeStats = (nodeId: string, isReferenced: boolean) => {
|
|
1198
|
+
const updateNodeStats = (nodeId: string, isReferenced: boolean): void => {
|
|
1176
1199
|
markPhaseStats.nodeCount++;
|
|
1177
1200
|
// If there is no previous GC data, every node's state is generated and is considered as updated.
|
|
1178
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[gcGenerationOptionName];
|
|
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;
|