@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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.20.0",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -63,16 +63,6 @@
|
|
|
63
63
|
"default": "./dist/deltaScheduler.js"
|
|
64
64
|
}
|
|
65
65
|
},
|
|
66
|
-
"./internal/test/scheduleManager": {
|
|
67
|
-
"import": {
|
|
68
|
-
"types": "./lib/scheduleManager.d.ts",
|
|
69
|
-
"default": "./lib/scheduleManager.js"
|
|
70
|
-
},
|
|
71
|
-
"require": {
|
|
72
|
-
"types": "./dist/scheduleManager.d.ts",
|
|
73
|
-
"default": "./dist/scheduleManager.js"
|
|
74
|
-
}
|
|
75
|
-
},
|
|
76
66
|
"./internal/test/blobManager": {
|
|
77
67
|
"import": {
|
|
78
68
|
"types": "./lib/blobManager/index.d.ts",
|
|
@@ -129,18 +119,18 @@
|
|
|
129
119
|
"temp-directory": "nyc/.nyc_output"
|
|
130
120
|
},
|
|
131
121
|
"dependencies": {
|
|
132
|
-
"@fluid-internal/client-utils": "~2.
|
|
133
|
-
"@fluidframework/container-definitions": "~2.
|
|
134
|
-
"@fluidframework/container-runtime-definitions": "~2.
|
|
135
|
-
"@fluidframework/core-interfaces": "~2.
|
|
136
|
-
"@fluidframework/core-utils": "~2.
|
|
137
|
-
"@fluidframework/datastore": "~2.
|
|
138
|
-
"@fluidframework/driver-definitions": "~2.
|
|
139
|
-
"@fluidframework/driver-utils": "~2.
|
|
140
|
-
"@fluidframework/id-compressor": "~2.
|
|
141
|
-
"@fluidframework/runtime-definitions": "~2.
|
|
142
|
-
"@fluidframework/runtime-utils": "~2.
|
|
143
|
-
"@fluidframework/telemetry-utils": "~2.
|
|
122
|
+
"@fluid-internal/client-utils": "~2.20.0",
|
|
123
|
+
"@fluidframework/container-definitions": "~2.20.0",
|
|
124
|
+
"@fluidframework/container-runtime-definitions": "~2.20.0",
|
|
125
|
+
"@fluidframework/core-interfaces": "~2.20.0",
|
|
126
|
+
"@fluidframework/core-utils": "~2.20.0",
|
|
127
|
+
"@fluidframework/datastore": "~2.20.0",
|
|
128
|
+
"@fluidframework/driver-definitions": "~2.20.0",
|
|
129
|
+
"@fluidframework/driver-utils": "~2.20.0",
|
|
130
|
+
"@fluidframework/id-compressor": "~2.20.0",
|
|
131
|
+
"@fluidframework/runtime-definitions": "~2.20.0",
|
|
132
|
+
"@fluidframework/runtime-utils": "~2.20.0",
|
|
133
|
+
"@fluidframework/telemetry-utils": "~2.20.0",
|
|
144
134
|
"@tylerbu/sorted-btree-es6": "^1.8.0",
|
|
145
135
|
"double-ended-queue": "^2.1.0-0",
|
|
146
136
|
"lz4js": "^0.2.0",
|
|
@@ -149,18 +139,19 @@
|
|
|
149
139
|
"devDependencies": {
|
|
150
140
|
"@arethetypeswrong/cli": "^0.17.1",
|
|
151
141
|
"@biomejs/biome": "~1.9.3",
|
|
152
|
-
"@fluid-internal/mocha-test-setup": "~2.
|
|
153
|
-
"@fluid-private/stochastic-test-utils": "~2.
|
|
154
|
-
"@fluid-private/test-pairwise-generator": "~2.
|
|
142
|
+
"@fluid-internal/mocha-test-setup": "~2.20.0",
|
|
143
|
+
"@fluid-private/stochastic-test-utils": "~2.20.0",
|
|
144
|
+
"@fluid-private/test-pairwise-generator": "~2.20.0",
|
|
155
145
|
"@fluid-tools/benchmark": "^0.50.0",
|
|
156
146
|
"@fluid-tools/build-cli": "^0.51.0",
|
|
157
147
|
"@fluidframework/build-common": "^2.0.3",
|
|
158
148
|
"@fluidframework/build-tools": "^0.51.0",
|
|
159
|
-
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.
|
|
149
|
+
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.13.0",
|
|
160
150
|
"@fluidframework/eslint-config-fluid": "^5.6.0",
|
|
161
|
-
"@fluidframework/test-runtime-utils": "~2.
|
|
151
|
+
"@fluidframework/test-runtime-utils": "~2.20.0",
|
|
162
152
|
"@microsoft/api-extractor": "7.47.8",
|
|
163
153
|
"@types/double-ended-queue": "^2.1.0",
|
|
154
|
+
"@types/lz4js": "^0.2.0",
|
|
164
155
|
"@types/mocha": "^10.0.10",
|
|
165
156
|
"@types/node": "^18.19.0",
|
|
166
157
|
"@types/sinon": "^17.0.3",
|
|
@@ -179,7 +170,29 @@
|
|
|
179
170
|
"typescript": "~5.4.5"
|
|
180
171
|
},
|
|
181
172
|
"typeValidation": {
|
|
182
|
-
"broken": {
|
|
173
|
+
"broken": {
|
|
174
|
+
"Class_ContainerRuntime": {
|
|
175
|
+
"backCompat": false
|
|
176
|
+
},
|
|
177
|
+
"Class_DocumentsSchemaController": {
|
|
178
|
+
"forwardCompat": false
|
|
179
|
+
},
|
|
180
|
+
"ClassStatics_ContainerRuntime": {
|
|
181
|
+
"backCompat": false
|
|
182
|
+
},
|
|
183
|
+
"TypeAlias_SummarizerStopReason": {
|
|
184
|
+
"backCompat": false,
|
|
185
|
+
"forwardCompat": false
|
|
186
|
+
},
|
|
187
|
+
"Interface_ISummarizeEventProps": {
|
|
188
|
+
"backCompat": false,
|
|
189
|
+
"forwardCompat": false
|
|
190
|
+
},
|
|
191
|
+
"Interface_ISummarizerEvents": {
|
|
192
|
+
"backCompat": false,
|
|
193
|
+
"forwardCompat": false
|
|
194
|
+
}
|
|
195
|
+
},
|
|
183
196
|
"entrypoint": "legacy"
|
|
184
197
|
},
|
|
185
198
|
"scripts": {
|
|
@@ -198,7 +211,7 @@
|
|
|
198
211
|
"build:test": "npm run build:test:esm && npm run build:test:cjs",
|
|
199
212
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
200
213
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
201
|
-
"check:are-the-types-wrong": "attw --pack . --exclude-entrypoints ./internal/test/containerRuntime ./internal/test/deltaScheduler ./internal/test/
|
|
214
|
+
"check:are-the-types-wrong": "attw --pack . --exclude-entrypoints ./internal/test/containerRuntime ./internal/test/deltaScheduler ./internal/test/blobManager ./internal/test/summary ./internal/test/gc",
|
|
202
215
|
"check:biome": "biome check .",
|
|
203
216
|
"check:exports": "concurrently \"npm:check:exports:*\"",
|
|
204
217
|
"check:exports:bundle-release-tags": "api-extractor run --config api-extractor/api-extractor-lint-bundle.json",
|
package/src/batchTracker.ts
CHANGED
|
@@ -36,41 +36,38 @@ export class BatchTracker {
|
|
|
36
36
|
this.trackedBatchCount++;
|
|
37
37
|
});
|
|
38
38
|
|
|
39
|
-
this.batchEventEmitter.on(
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
0x2ba /* "batchBegin must fire before batchEnd" */,
|
|
46
|
-
);
|
|
39
|
+
this.batchEventEmitter.on("batchEnd", (error: unknown, message: BatchTrackerMessage) => {
|
|
40
|
+
assert(
|
|
41
|
+
this.startBatchSequenceNumber !== undefined &&
|
|
42
|
+
this.batchProcessingStartTimeStamp !== undefined,
|
|
43
|
+
0x2ba /* "batchBegin must fire before batchEnd" */,
|
|
44
|
+
);
|
|
47
45
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
46
|
+
const length = message.sequenceNumber - this.startBatchSequenceNumber + 1;
|
|
47
|
+
if (length >= batchLengthThreshold) {
|
|
48
|
+
this.logger.sendPerformanceEvent({
|
|
49
|
+
eventName: "LengthTooBig",
|
|
50
|
+
length,
|
|
51
|
+
threshold: batchLengthThreshold,
|
|
52
|
+
batchEndSequenceNumber: message.sequenceNumber,
|
|
53
|
+
duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
|
|
54
|
+
batchError: error !== undefined,
|
|
55
|
+
});
|
|
56
|
+
}
|
|
59
57
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
58
|
+
if (this.trackedBatchCount % batchCountSamplingRate === 0) {
|
|
59
|
+
this.logger.sendPerformanceEvent({
|
|
60
|
+
eventName: "Length",
|
|
61
|
+
length,
|
|
62
|
+
samplingRate: batchCountSamplingRate,
|
|
63
|
+
batchEndSequenceNumber: message.sequenceNumber,
|
|
64
|
+
duration: dateTimeProvider() - this.batchProcessingStartTimeStamp,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
69
67
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
);
|
|
68
|
+
this.startBatchSequenceNumber = undefined;
|
|
69
|
+
this.batchProcessingStartTimeStamp = undefined;
|
|
70
|
+
});
|
|
74
71
|
}
|
|
75
72
|
}
|
|
76
73
|
|
|
@@ -87,4 +84,5 @@ export const BindBatchTracker = (
|
|
|
87
84
|
logger: ITelemetryLoggerExt,
|
|
88
85
|
batchLengthThreshold: number = 1000,
|
|
89
86
|
batchCountSamplingRate: number = 1000,
|
|
90
|
-
)
|
|
87
|
+
): BatchTracker =>
|
|
88
|
+
new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);
|
|
@@ -80,14 +80,14 @@ export class BlobHandle extends FluidHandleBase<ArrayBufferLike> {
|
|
|
80
80
|
this.absolutePath = generateHandleContextPath(path, this.routeContext);
|
|
81
81
|
}
|
|
82
82
|
|
|
83
|
-
public attachGraph() {
|
|
83
|
+
public attachGraph(): void {
|
|
84
84
|
if (!this.attached) {
|
|
85
85
|
this.attached = true;
|
|
86
86
|
this.onAttachGraph?.();
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
-
public bind(handle: IFluidHandleInternal) {
|
|
90
|
+
public bind(handle: IFluidHandleInternal): void {
|
|
91
91
|
throw new Error("Cannot bind to blob handle");
|
|
92
92
|
}
|
|
93
93
|
}
|
|
@@ -96,7 +96,7 @@ export class BlobHandle extends FluidHandleBase<ArrayBufferLike> {
|
|
|
96
96
|
// the contract explicit and reduces the amount of mocking required for tests.
|
|
97
97
|
export type IBlobManagerRuntime = Pick<
|
|
98
98
|
IContainerRuntime,
|
|
99
|
-
"attachState" | "connected" | "baseLogger" | "clientDetails"
|
|
99
|
+
"attachState" | "connected" | "baseLogger" | "clientDetails" | "disposed"
|
|
100
100
|
> &
|
|
101
101
|
TypedEventEmitter<IContainerRuntimeEvents>;
|
|
102
102
|
|
|
@@ -329,7 +329,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
329
329
|
);
|
|
330
330
|
}
|
|
331
331
|
|
|
332
|
-
private createAbortError(pending?: PendingBlob) {
|
|
332
|
+
private createAbortError(pending?: PendingBlob): LoggingError {
|
|
333
333
|
return new LoggingError("uploadBlob aborted", {
|
|
334
334
|
acked: pending?.acked,
|
|
335
335
|
uploadTime: pending?.uploadTime,
|
|
@@ -370,8 +370,17 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
370
370
|
return PerformanceEvent.timedExecAsync(
|
|
371
371
|
this.mc.logger,
|
|
372
372
|
{ eventName: "AttachmentReadBlob", id: storageId },
|
|
373
|
-
async () => {
|
|
374
|
-
return this.getStorage()
|
|
373
|
+
async (event) => {
|
|
374
|
+
return this.getStorage()
|
|
375
|
+
.readBlob(storageId)
|
|
376
|
+
.catch((error) => {
|
|
377
|
+
if (this.runtime.disposed) {
|
|
378
|
+
// If the runtime is disposed, this is not an error we care to track, it's expected behavior.
|
|
379
|
+
event.cancel({ category: "generic" });
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
throw error;
|
|
383
|
+
});
|
|
375
384
|
},
|
|
376
385
|
{ end: true, cancel: "error" },
|
|
377
386
|
);
|
|
@@ -445,7 +454,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
445
454
|
};
|
|
446
455
|
this.pendingBlobs.set(localId, pendingEntry);
|
|
447
456
|
|
|
448
|
-
const abortListener = () => {
|
|
457
|
+
const abortListener = (): void => {
|
|
449
458
|
if (!pendingEntry.acked) {
|
|
450
459
|
pendingEntry.handleP.reject(this.createAbortError(pendingEntry));
|
|
451
460
|
}
|
|
@@ -490,6 +499,8 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
490
499
|
(error) => {
|
|
491
500
|
this.mc.logger.sendTelemetryEvent({
|
|
492
501
|
eventName: "UploadBlobReject",
|
|
502
|
+
// TODO: better typing
|
|
503
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
493
504
|
error,
|
|
494
505
|
localId,
|
|
495
506
|
});
|
|
@@ -506,11 +517,11 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
506
517
|
* Set up a mapping in the redirect table from fromId to toId. Also, notify the runtime that a reference is added
|
|
507
518
|
* which is required for GC.
|
|
508
519
|
*/
|
|
509
|
-
private setRedirection(fromId: string, toId: string | undefined) {
|
|
520
|
+
private setRedirection(fromId: string, toId: string | undefined): void {
|
|
510
521
|
this.redirectTable.set(fromId, toId);
|
|
511
522
|
}
|
|
512
523
|
|
|
513
|
-
private deletePendingBlobMaybe(id: string) {
|
|
524
|
+
private deletePendingBlobMaybe(id: string): void {
|
|
514
525
|
if (this.pendingBlobs.has(id)) {
|
|
515
526
|
const entry = this.pendingBlobs.get(id);
|
|
516
527
|
if (entry?.attached && entry?.acked) {
|
|
@@ -519,13 +530,16 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
519
530
|
}
|
|
520
531
|
}
|
|
521
532
|
|
|
522
|
-
private deletePendingBlob(id: string) {
|
|
533
|
+
private deletePendingBlob(id: string): void {
|
|
523
534
|
if (this.pendingBlobs.delete(id) && !this.hasPendingBlobs) {
|
|
524
535
|
this.emit("noPendingBlobs");
|
|
525
536
|
}
|
|
526
537
|
}
|
|
527
538
|
|
|
528
|
-
private onUploadResolve(
|
|
539
|
+
private onUploadResolve(
|
|
540
|
+
localId: string,
|
|
541
|
+
response: ICreateBlobResponseWithTTL,
|
|
542
|
+
): ICreateBlobResponseWithTTL | undefined {
|
|
529
543
|
const entry = this.pendingBlobs.get(localId);
|
|
530
544
|
if (entry === undefined && this.pendingStashedBlobs.has(localId)) {
|
|
531
545
|
// The blob was already processed and deleted. This can happen if the blob was reuploaded by
|
|
@@ -587,7 +601,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
587
601
|
* submitted to runtime while disconnected.
|
|
588
602
|
* @param metadata - op metadata containing storage and/or local IDs
|
|
589
603
|
*/
|
|
590
|
-
public reSubmit(metadata: Record<string, unknown> | undefined) {
|
|
604
|
+
public reSubmit(metadata: Record<string, unknown> | undefined): void {
|
|
591
605
|
assert(!!metadata, 0x38b /* Resubmitted ops must have metadata */);
|
|
592
606
|
const { localId, blobId }: { localId?: string; blobId?: string } = metadata;
|
|
593
607
|
assert(localId !== undefined, 0x50d /* local ID not available on reSubmit */);
|
|
@@ -604,7 +618,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
604
618
|
return this.sendBlobAttachOp(localId, blobId);
|
|
605
619
|
}
|
|
606
620
|
|
|
607
|
-
public processBlobAttachMessage(message: ISequencedMessageEnvelope, local: boolean) {
|
|
621
|
+
public processBlobAttachMessage(message: ISequencedMessageEnvelope, local: boolean): void {
|
|
608
622
|
const localId = (message.metadata as IBlobMetadata | undefined)?.localId;
|
|
609
623
|
const blobId = (message.metadata as IBlobMetadata | undefined)?.blobId;
|
|
610
624
|
|
|
@@ -694,16 +708,20 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
694
708
|
|
|
695
709
|
/**
|
|
696
710
|
* Delete blobs with the given routes from the redirect table.
|
|
711
|
+
*
|
|
712
|
+
* @remarks
|
|
697
713
|
* The routes are GC nodes paths of format -`/<blobManagerBasePath>/<blobId>`. The blob ids are all local ids.
|
|
698
714
|
* Deleting the blobs involves 2 steps:
|
|
715
|
+
*
|
|
699
716
|
* 1. The redirect table entry for the local ids are deleted.
|
|
717
|
+
*
|
|
700
718
|
* 2. If the storage ids corresponding to the deleted local ids are not in-use anymore, the redirect table entries
|
|
701
719
|
* for the storage ids are deleted as well.
|
|
702
720
|
*
|
|
703
721
|
* Note that this does not delete the blobs from storage service immediately. Deleting the blobs from redirect table
|
|
704
722
|
* will remove them the next summary. The service would them delete them some time in the future.
|
|
705
723
|
*/
|
|
706
|
-
private deleteBlobsFromRedirectTable(blobRoutes: readonly string[]) {
|
|
724
|
+
private deleteBlobsFromRedirectTable(blobRoutes: readonly string[]): void {
|
|
707
725
|
if (blobRoutes.length === 0) {
|
|
708
726
|
return;
|
|
709
727
|
}
|
|
@@ -753,7 +771,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
753
771
|
* Verifies that the blob with given id is not deleted, i.e., it has not been garbage collected. If the blob is GC'd,
|
|
754
772
|
* log an error and throw if necessary.
|
|
755
773
|
*/
|
|
756
|
-
private verifyBlobNotDeleted(blobId: string) {
|
|
774
|
+
private verifyBlobNotDeleted(blobId: string): void {
|
|
757
775
|
if (!this.isBlobDeleted(getGCNodePathFromBlobId(blobId))) {
|
|
758
776
|
return;
|
|
759
777
|
}
|
|
@@ -774,7 +792,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
774
792
|
throw error;
|
|
775
793
|
}
|
|
776
794
|
|
|
777
|
-
public setRedirectTable(table: Map<string, string>) {
|
|
795
|
+
public setRedirectTable(table: Map<string, string>): void {
|
|
778
796
|
assert(
|
|
779
797
|
this.runtime.attachState === AttachState.Detached,
|
|
780
798
|
0x252 /* "redirect table can only be set in detached container" */,
|
|
@@ -841,7 +859,7 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
841
859
|
},
|
|
842
860
|
{ once: true },
|
|
843
861
|
);
|
|
844
|
-
const onBlobAttached = (attachedEntry) => {
|
|
862
|
+
const onBlobAttached = (attachedEntry): void => {
|
|
845
863
|
if (attachedEntry === entry) {
|
|
846
864
|
this.off("blobAttached", onBlobAttached);
|
|
847
865
|
resolve();
|
|
@@ -891,12 +909,13 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
891
909
|
* This path must match the path of the blob handle returned by the createBlob API because blobs are marked
|
|
892
910
|
* referenced by storing these handles in a referenced DDS.
|
|
893
911
|
*/
|
|
894
|
-
const getGCNodePathFromBlobId = (blobId: string) =>
|
|
912
|
+
const getGCNodePathFromBlobId = (blobId: string): string =>
|
|
913
|
+
`/${blobManagerBasePath}/${blobId}`;
|
|
895
914
|
|
|
896
915
|
/**
|
|
897
916
|
* For a given GC node path, return the blobId. The node path is of the format `/<basePath>/<blobId>`.
|
|
898
917
|
*/
|
|
899
|
-
const getBlobIdFromGCNodePath = (nodePath: string) => {
|
|
918
|
+
const getBlobIdFromGCNodePath = (nodePath: string): string => {
|
|
900
919
|
const pathParts = nodePath.split("/");
|
|
901
920
|
assert(areBlobPathParts(pathParts), 0x5bd /* Invalid blob node path */);
|
|
902
921
|
return pathParts[2];
|
|
@@ -47,7 +47,7 @@ const loadV1 = async (
|
|
|
47
47
|
return {};
|
|
48
48
|
}
|
|
49
49
|
let redirectTableEntries: [string, string][] = [];
|
|
50
|
-
const tableId
|
|
50
|
+
const tableId = blobsTree.blobs[redirectTableBlobName];
|
|
51
51
|
if (tableId) {
|
|
52
52
|
redirectTableEntries = await readAndParse(context.storage, tableId);
|
|
53
53
|
}
|
|
@@ -116,7 +116,7 @@ const summarizeV1 = (
|
|
|
116
116
|
export const getStorageIds = (
|
|
117
117
|
redirectTable: Map<string, string | undefined>,
|
|
118
118
|
attachState: AttachState,
|
|
119
|
-
) => {
|
|
119
|
+
): Set<string> => {
|
|
120
120
|
const ids = new Set<string | undefined>(redirectTable.values());
|
|
121
121
|
|
|
122
122
|
// If we are detached, we will not have storage IDs, only undefined
|