@fluidframework/container-runtime 2.0.0-dev-rc.3.0.0.250606 → 2.0.0-dev-rc.3.0.0.254274
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/api-report/container-runtime.api.md +35 -34
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +4 -4
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +31 -23
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +81 -99
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +4 -2
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +75 -72
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +16 -16
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +64 -36
- package/dist/container-runtime-beta.d.ts +28 -28
- package/dist/container-runtime-public.d.ts +28 -28
- package/dist/container-runtime-untrimmed.d.ts +68 -39
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js +2 -2
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +12 -8
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +197 -162
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +7 -7
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +9 -9
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +72 -62
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +11 -11
- 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 +2 -2
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +6 -6
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.d.ts +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +4 -4
- package/dist/error.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +2 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +20 -20
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +4 -5
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +3 -2
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +5 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +21 -12
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +11 -11
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +2 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +11 -9
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +6 -6
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +2 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/messageTypes.d.ts +2 -2
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +1 -1
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +5 -5
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +12 -12
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +7 -7
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +17 -17
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +2 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +13 -13
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -18
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +24 -24
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.d.ts +2 -2
- package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +2 -2
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +37 -6
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +58 -21
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +7 -7
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +3 -3
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +16 -16
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +2 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +12 -12
- 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.map +1 -1
- package/dist/summary/summarizerHeuristics.js +2 -2
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +28 -28
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -3
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +14 -14
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +4 -2
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.js +7 -7
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +1 -1
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +8 -8
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +3 -2
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +16 -16
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +15 -14
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +31 -23
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +46 -64
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +4 -2
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +10 -7
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +2 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/container-runtime-alpha.d.ts +64 -36
- package/lib/container-runtime-beta.d.ts +28 -28
- package/lib/container-runtime-public.d.ts +28 -28
- package/lib/container-runtime-untrimmed.d.ts +68 -39
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +12 -8
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +76 -39
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +2 -2
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +9 -9
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +18 -8
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +2 -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 +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.js.map +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.d.ts +1 -1
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +2 -2
- package/lib/error.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +2 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +4 -4
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +4 -5
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +3 -2
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +5 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +10 -2
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +2 -2
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +2 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +3 -1
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +2 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/messageTypes.d.ts +2 -2
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +1 -1
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +2 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +2 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +2 -2
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +2 -2
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +2 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +2 -2
- package/lib/opLifecycle/outbox.js.map +1 -1
- 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.map +1 -1
- package/lib/pendingStateManager.js +2 -2
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +3 -3
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts +2 -2
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +37 -6
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +48 -11
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +2 -2
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +2 -2
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +2 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +2 -2
- 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.map +1 -1
- package/lib/summary/summarizerHeuristics.js +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +4 -4
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +4 -2
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.js +1 -1
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +1 -1
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +3 -3
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +3 -2
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +3 -3
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +9 -8
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/tsdoc-metadata.json +11 -0
- package/package.json +25 -37
- package/src/batchTracker.ts +3 -2
- package/src/blobManager.ts +87 -56
- package/src/channelCollection.ts +19 -12
- package/src/connectionTelemetry.ts +4 -4
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +115 -70
- package/src/dataStore.ts +5 -3
- package/src/dataStoreContext.ts +30 -15
- package/src/dataStoreContexts.ts +4 -2
- package/src/dataStoreRegistry.ts +2 -2
- package/src/deltaManagerSummarizerProxy.ts +1 -1
- package/src/deltaScheduler.ts +2 -1
- package/src/error.ts +2 -2
- package/src/gc/garbageCollection.ts +8 -7
- package/src/gc/gcConfigs.ts +5 -8
- package/src/gc/gcDefinitions.ts +4 -4
- package/src/gc/gcHelpers.ts +21 -4
- package/src/gc/gcSummaryStateTracker.ts +5 -3
- package/src/gc/gcTelemetry.ts +7 -1
- package/src/gc/gcUnreferencedStateTracker.ts +3 -2
- package/src/gc/index.ts +1 -0
- package/src/messageTypes.ts +3 -2
- package/src/opLifecycle/batchManager.ts +1 -0
- package/src/opLifecycle/definitions.ts +2 -1
- package/src/opLifecycle/opCompressor.ts +4 -2
- package/src/opLifecycle/opDecompressor.ts +3 -2
- package/src/opLifecycle/opGroupingManager.ts +3 -2
- package/src/opLifecycle/opSplitter.ts +5 -3
- package/src/opLifecycle/outbox.ts +6 -3
- package/src/opLifecycle/remoteMessageProcessor.ts +2 -0
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +4 -4
- package/src/scheduleManager.ts +5 -4
- package/src/storageServiceWithAttachBlobs.ts +2 -2
- package/src/summary/documentSchema.ts +71 -12
- package/src/summary/orderedClientElection.ts +4 -6
- package/src/summary/runWhileConnectedCoordinator.ts +2 -1
- package/src/summary/runningSummarizer.ts +4 -2
- package/src/summary/summarizer.ts +5 -3
- package/src/summary/summarizerClientElection.ts +1 -0
- package/src/summary/summarizerHeuristics.ts +3 -1
- package/src/summary/summarizerNode/summarizerNode.ts +10 -8
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -2
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +14 -6
- package/src/summary/summarizerTypes.ts +6 -2
- package/src/summary/summaryCollection.ts +1 -1
- package/src/summary/summaryFormat.ts +7 -8
- package/src/summary/summaryGenerator.ts +5 -8
- package/src/summary/summaryManager.ts +14 -11
- package/lib/test/batchTracker.spec.js +0 -88
- package/lib/test/batchTracker.spec.js.map +0 -1
- package/lib/test/blobManager.spec.js +0 -835
- package/lib/test/blobManager.spec.js.map +0 -1
- package/lib/test/channelCollection.spec.js +0 -138
- package/lib/test/channelCollection.spec.js.map +0 -1
- package/lib/test/containerRuntime.spec.js +0 -1750
- package/lib/test/containerRuntime.spec.js.map +0 -1
- package/lib/test/dataStoreContext.spec.js +0 -771
- package/lib/test/dataStoreContext.spec.js.map +0 -1
- package/lib/test/dataStoreCreation.spec.js +0 -303
- package/lib/test/dataStoreCreation.spec.js.map +0 -1
- package/lib/test/dataStoreRegistry.spec.js +0 -26
- package/lib/test/dataStoreRegistry.spec.js.map +0 -1
- package/lib/test/documentSchema.spec.js +0 -282
- package/lib/test/documentSchema.spec.js.map +0 -1
- package/lib/test/fuzz/fuzzUtils.js +0 -70
- package/lib/test/fuzz/fuzzUtils.js.map +0 -1
- package/lib/test/fuzz/summarizer.fuzz.spec.js +0 -33
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzMocks.js +0 -180
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzSuite.js +0 -109
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +0 -1
- package/lib/test/gc/garbageCollection.spec.js +0 -1464
- package/lib/test/gc/garbageCollection.spec.js.map +0 -1
- package/lib/test/gc/gcConfigs.spec.js +0 -689
- package/lib/test/gc/gcConfigs.spec.js.map +0 -1
- package/lib/test/gc/gcHelpers.spec.js +0 -110
- package/lib/test/gc/gcHelpers.spec.js.map +0 -1
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +0 -68
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +0 -1
- package/lib/test/gc/gcStats.spec.js +0 -390
- package/lib/test/gc/gcStats.spec.js.map +0 -1
- package/lib/test/gc/gcSummaryStateTracker.spec.js +0 -228
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +0 -1
- package/lib/test/gc/gcTelemetry.spec.js +0 -530
- package/lib/test/gc/gcTelemetry.spec.js.map +0 -1
- package/lib/test/gc/gcUnitTestHelpers.js +0 -29
- package/lib/test/gc/gcUnitTestHelpers.js.map +0 -1
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +0 -192
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +0 -1
- package/lib/test/getPendingBlobs.spec.js +0 -193
- package/lib/test/getPendingBlobs.spec.js.map +0 -1
- package/lib/test/hardwareStats.spec.js +0 -93
- package/lib/test/hardwareStats.spec.js.map +0 -1
- package/lib/test/index.js +0 -6
- package/lib/test/index.js.map +0 -1
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +0 -202
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +0 -1
- package/lib/test/opLifecycle/batchManager.spec.js +0 -189
- package/lib/test/opLifecycle/batchManager.spec.js.map +0 -1
- package/lib/test/opLifecycle/opCompressor.spec.js +0 -73
- package/lib/test/opLifecycle/opCompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opDecompressor.spec.js +0 -223
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opSplitter.spec.js +0 -287
- package/lib/test/opLifecycle/opSplitter.spec.js.map +0 -1
- package/lib/test/opLifecycle/outbox.spec.js +0 -783
- package/lib/test/opLifecycle/outbox.spec.js.map +0 -1
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +0 -220
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +0 -1
- package/lib/test/pendingStateManager.spec.js +0 -329
- package/lib/test/pendingStateManager.spec.js.map +0 -1
- package/lib/test/scheduleManager.spec.js +0 -270
- package/lib/test/scheduleManager.spec.js.map +0 -1
- package/lib/test/summarizerNode.spec.js +0 -326
- package/lib/test/summarizerNode.spec.js.map +0 -1
- package/lib/test/summarizerNodeWithGc.spec.js +0 -318
- package/lib/test/summarizerNodeWithGc.spec.js.map +0 -1
- package/lib/test/summary/orderedClientElection.spec.js +0 -535
- package/lib/test/summary/orderedClientElection.spec.js.map +0 -1
- package/lib/test/summary/runningSummarizer.spec.js +0 -1349
- package/lib/test/summary/runningSummarizer.spec.js.map +0 -1
- package/lib/test/summary/summarizer.spec.js +0 -29
- package/lib/test/summary/summarizer.spec.js.map +0 -1
- package/lib/test/summary/summarizerClientElection.spec.js +0 -436
- package/lib/test/summary/summarizerClientElection.spec.js.map +0 -1
- package/lib/test/summary/summarizerHeuristics.spec.js +0 -289
- package/lib/test/summary/summarizerHeuristics.spec.js.map +0 -1
- package/lib/test/summary/summaryCollection.spec.js +0 -200
- package/lib/test/summary/summaryCollection.spec.js.map +0 -1
- package/lib/test/summary/summaryManager.spec.js +0 -430
- package/lib/test/summary/summaryManager.spec.js.map +0 -1
- package/lib/test/summary/testQuorumClients.js +0 -34
- package/lib/test/summary/testQuorumClients.js.map +0 -1
- package/lib/test/throttler.spec.js +0 -175
- package/lib/test/throttler.spec.js.map +0 -1
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +0 -182
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +0 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.0.0-dev-rc.3.0.0.
|
|
3
|
+
"version": "2.0.0-dev-rc.3.0.0.254274",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -14,16 +14,6 @@
|
|
|
14
14
|
"type": "module",
|
|
15
15
|
"exports": {
|
|
16
16
|
".": {
|
|
17
|
-
"import": {
|
|
18
|
-
"types": "./lib/index.d.ts",
|
|
19
|
-
"default": "./lib/index.js"
|
|
20
|
-
},
|
|
21
|
-
"require": {
|
|
22
|
-
"types": "./dist/index.d.ts",
|
|
23
|
-
"default": "./dist/index.js"
|
|
24
|
-
}
|
|
25
|
-
},
|
|
26
|
-
"./public": {
|
|
27
17
|
"import": {
|
|
28
18
|
"types": "./lib/container-runtime-public.d.ts",
|
|
29
19
|
"default": "./lib/index.js"
|
|
@@ -53,7 +43,7 @@
|
|
|
53
43
|
"default": "./dist/index.js"
|
|
54
44
|
}
|
|
55
45
|
},
|
|
56
|
-
"./test/containerRuntime": {
|
|
46
|
+
"./internal/test/containerRuntime": {
|
|
57
47
|
"import": {
|
|
58
48
|
"types": "./lib/containerRuntime.d.ts",
|
|
59
49
|
"default": "./lib/containerRuntime.js"
|
|
@@ -63,7 +53,7 @@
|
|
|
63
53
|
"default": "./dist/containerRuntime.js"
|
|
64
54
|
}
|
|
65
55
|
},
|
|
66
|
-
"./test/deltaScheduler": {
|
|
56
|
+
"./internal/test/deltaScheduler": {
|
|
67
57
|
"import": {
|
|
68
58
|
"types": "./lib/deltaScheduler.d.ts",
|
|
69
59
|
"default": "./lib/deltaScheduler.js"
|
|
@@ -73,7 +63,7 @@
|
|
|
73
63
|
"default": "./dist/deltaScheduler.js"
|
|
74
64
|
}
|
|
75
65
|
},
|
|
76
|
-
"./test/scheduleManager": {
|
|
66
|
+
"./internal/test/scheduleManager": {
|
|
77
67
|
"import": {
|
|
78
68
|
"types": "./lib/scheduleManager.d.ts",
|
|
79
69
|
"default": "./lib/scheduleManager.js"
|
|
@@ -83,7 +73,7 @@
|
|
|
83
73
|
"default": "./dist/scheduleManager.js"
|
|
84
74
|
}
|
|
85
75
|
},
|
|
86
|
-
"./test/blobManager": {
|
|
76
|
+
"./internal/test/blobManager": {
|
|
87
77
|
"import": {
|
|
88
78
|
"types": "./lib/blobManager.d.ts",
|
|
89
79
|
"default": "./lib/blobManager.js"
|
|
@@ -93,7 +83,7 @@
|
|
|
93
83
|
"default": "./dist/blobManager.js"
|
|
94
84
|
}
|
|
95
85
|
},
|
|
96
|
-
"./test/summary": {
|
|
86
|
+
"./internal/test/summary": {
|
|
97
87
|
"import": {
|
|
98
88
|
"types": "./lib/summary/index.d.ts",
|
|
99
89
|
"default": "./lib/summary/index.js"
|
|
@@ -103,7 +93,7 @@
|
|
|
103
93
|
"default": "./dist/summary/index.js"
|
|
104
94
|
}
|
|
105
95
|
},
|
|
106
|
-
"./test/gc": {
|
|
96
|
+
"./internal/test/gc": {
|
|
107
97
|
"import": {
|
|
108
98
|
"types": "./lib/gc/index.d.ts",
|
|
109
99
|
"default": "./lib/gc/index.js"
|
|
@@ -115,7 +105,7 @@
|
|
|
115
105
|
}
|
|
116
106
|
},
|
|
117
107
|
"main": "dist/index.js",
|
|
118
|
-
"types": "dist/
|
|
108
|
+
"types": "./dist/container-runtime-public.d.ts",
|
|
119
109
|
"c8": {
|
|
120
110
|
"all": true,
|
|
121
111
|
"cache-dir": "nyc/.cache",
|
|
@@ -137,38 +127,38 @@
|
|
|
137
127
|
"temp-directory": "nyc/.nyc_output"
|
|
138
128
|
},
|
|
139
129
|
"dependencies": {
|
|
140
|
-
"@fluid-internal/client-utils": "2.0.0-dev-rc.3.0.0.
|
|
130
|
+
"@fluid-internal/client-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
141
131
|
"@fluidframework/common-definitions": "^1.1.0",
|
|
142
|
-
"@fluidframework/container-definitions": "2.0.0-dev-rc.3.0.0.
|
|
143
|
-
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.3.0.0.
|
|
144
|
-
"@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.
|
|
145
|
-
"@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.
|
|
146
|
-
"@fluidframework/datastore": "2.0.0-dev-rc.3.0.0.
|
|
147
|
-
"@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.
|
|
148
|
-
"@fluidframework/driver-utils": "2.0.0-dev-rc.3.0.0.
|
|
149
|
-
"@fluidframework/id-compressor": "2.0.0-dev-rc.3.0.0.
|
|
132
|
+
"@fluidframework/container-definitions": "2.0.0-dev-rc.3.0.0.254274",
|
|
133
|
+
"@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.3.0.0.254274",
|
|
134
|
+
"@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.254274",
|
|
135
|
+
"@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
136
|
+
"@fluidframework/datastore": "2.0.0-dev-rc.3.0.0.254274",
|
|
137
|
+
"@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.254274",
|
|
138
|
+
"@fluidframework/driver-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
139
|
+
"@fluidframework/id-compressor": "2.0.0-dev-rc.3.0.0.254274",
|
|
150
140
|
"@fluidframework/protocol-definitions": "^3.2.0",
|
|
151
|
-
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.3.0.0.
|
|
152
|
-
"@fluidframework/runtime-utils": "2.0.0-dev-rc.3.0.0.
|
|
153
|
-
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.3.0.0.
|
|
141
|
+
"@fluidframework/runtime-definitions": "2.0.0-dev-rc.3.0.0.254274",
|
|
142
|
+
"@fluidframework/runtime-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
143
|
+
"@fluidframework/telemetry-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
154
144
|
"@tylerbu/sorted-btree-es6": "^1.8.0",
|
|
155
145
|
"double-ended-queue": "^2.1.0-0",
|
|
156
146
|
"lz4js": "^0.2.0",
|
|
157
147
|
"uuid": "^9.0.0"
|
|
158
148
|
},
|
|
159
149
|
"devDependencies": {
|
|
160
|
-
"@arethetypeswrong/cli": "^0.
|
|
150
|
+
"@arethetypeswrong/cli": "^0.15.2",
|
|
161
151
|
"@biomejs/biome": "^1.6.2",
|
|
162
|
-
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.
|
|
163
|
-
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.3.0.0.
|
|
164
|
-
"@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.3.0.0.
|
|
152
|
+
"@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.254274",
|
|
153
|
+
"@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
154
|
+
"@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.3.0.0.254274",
|
|
165
155
|
"@fluid-tools/benchmark": "^0.48.0",
|
|
166
156
|
"@fluid-tools/build-cli": "^0.34.0",
|
|
167
157
|
"@fluidframework/build-common": "^2.0.3",
|
|
168
158
|
"@fluidframework/build-tools": "^0.34.0",
|
|
169
159
|
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-internal.8.0.0",
|
|
170
160
|
"@fluidframework/eslint-config-fluid": "^5.1.0",
|
|
171
|
-
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.3.0.0.
|
|
161
|
+
"@fluidframework/test-runtime-utils": "2.0.0-dev-rc.3.0.0.254274",
|
|
172
162
|
"@microsoft/api-extractor": "^7.42.3",
|
|
173
163
|
"@types/double-ended-queue": "^2.1.0",
|
|
174
164
|
"@types/mocha": "^9.1.1",
|
|
@@ -251,7 +241,6 @@
|
|
|
251
241
|
"build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
|
|
252
242
|
"build:test:esm": "tsc --project ./src/test/tsconfig.json",
|
|
253
243
|
"check:are-the-types-wrong": "attw --pack . --entrypoints .",
|
|
254
|
-
"check:biome": "biome check .",
|
|
255
244
|
"check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
|
|
256
245
|
"check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
|
|
257
246
|
"ci:build:docs": "api-extractor run",
|
|
@@ -259,7 +248,6 @@
|
|
|
259
248
|
"eslint": "eslint --format stylish src",
|
|
260
249
|
"eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
|
|
261
250
|
"format": "fluid-build --task format .",
|
|
262
|
-
"format:biome": "biome check --apply .",
|
|
263
251
|
"format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
|
|
264
252
|
"lint": "fluid-build . --task lint",
|
|
265
253
|
"lint:fix": "fluid-build . --task eslint:fix --task format",
|
package/src/batchTracker.ts
CHANGED
|
@@ -6,9 +6,10 @@
|
|
|
6
6
|
import type { EventEmitter } from "@fluid-internal/client-utils";
|
|
7
7
|
import { performance } from "@fluid-internal/client-utils";
|
|
8
8
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
9
|
-
import { assert } from "@fluidframework/core-utils";
|
|
9
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
10
10
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
11
|
-
import { ITelemetryLoggerExt
|
|
11
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
12
|
+
import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
12
13
|
|
|
13
14
|
export class BatchTracker {
|
|
14
15
|
private readonly logger: ITelemetryLoggerExt;
|
package/src/blobManager.ts
CHANGED
|
@@ -8,10 +8,11 @@ import { AttachState, ICriticalContainerError } from "@fluidframework/container-
|
|
|
8
8
|
import {
|
|
9
9
|
IContainerRuntime,
|
|
10
10
|
IContainerRuntimeEvents,
|
|
11
|
-
} from "@fluidframework/container-runtime-definitions";
|
|
11
|
+
} from "@fluidframework/container-runtime-definitions/internal";
|
|
12
12
|
import { IFluidHandle, IFluidHandleContext } from "@fluidframework/core-interfaces";
|
|
13
|
-
import { assert, Deferred } from "@fluidframework/core-utils";
|
|
14
|
-
import { IDocumentStorageService } from "@fluidframework/driver-definitions";
|
|
13
|
+
import { assert, Deferred } from "@fluidframework/core-utils/internal";
|
|
14
|
+
import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
|
|
15
|
+
import { canRetryOnError, runWithRetry } from "@fluidframework/driver-utils/internal";
|
|
15
16
|
import {
|
|
16
17
|
ICreateBlobResponse,
|
|
17
18
|
ISequencedDocumentMessage,
|
|
@@ -27,7 +28,7 @@ import {
|
|
|
27
28
|
createResponseError,
|
|
28
29
|
generateHandleContextPath,
|
|
29
30
|
responseToException,
|
|
30
|
-
} from "@fluidframework/runtime-utils";
|
|
31
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
31
32
|
import {
|
|
32
33
|
GenericError,
|
|
33
34
|
LoggingError,
|
|
@@ -35,10 +36,9 @@ import {
|
|
|
35
36
|
PerformanceEvent,
|
|
36
37
|
createChildMonitoringContext,
|
|
37
38
|
wrapError,
|
|
38
|
-
} from "@fluidframework/telemetry-utils";
|
|
39
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
39
40
|
import { v4 as uuid } from "uuid";
|
|
40
41
|
|
|
41
|
-
import { canRetryOnError, runWithRetry } from "@fluidframework/driver-utils";
|
|
42
42
|
import { IBlobMetadata } from "./metadata.js";
|
|
43
43
|
|
|
44
44
|
/**
|
|
@@ -103,7 +103,6 @@ type ICreateBlobResponseWithTTL = ICreateBlobResponse & Partial<Record<"minTTLIn
|
|
|
103
103
|
|
|
104
104
|
interface PendingBlob {
|
|
105
105
|
blob: ArrayBufferLike;
|
|
106
|
-
uploading?: boolean;
|
|
107
106
|
opsent?: boolean;
|
|
108
107
|
storageId?: string;
|
|
109
108
|
handleP: Deferred<BlobHandle>;
|
|
@@ -113,7 +112,7 @@ interface PendingBlob {
|
|
|
113
112
|
attached?: boolean;
|
|
114
113
|
acked?: boolean;
|
|
115
114
|
abortSignal?: AbortSignal;
|
|
116
|
-
|
|
115
|
+
stashedUpload?: boolean;
|
|
117
116
|
}
|
|
118
117
|
|
|
119
118
|
export interface IPendingBlobs {
|
|
@@ -122,7 +121,6 @@ export interface IPendingBlobs {
|
|
|
122
121
|
storageId?: string;
|
|
123
122
|
uploadTime?: number;
|
|
124
123
|
minTTLInSeconds?: number;
|
|
125
|
-
attached?: boolean;
|
|
126
124
|
acked?: boolean;
|
|
127
125
|
};
|
|
128
126
|
}
|
|
@@ -131,6 +129,16 @@ export interface IBlobManagerEvents {
|
|
|
131
129
|
(event: "noPendingBlobs", listener: () => void);
|
|
132
130
|
}
|
|
133
131
|
|
|
132
|
+
const stashedPendingBlobOverrides: Pick<
|
|
133
|
+
PendingBlob,
|
|
134
|
+
"stashedUpload" | "storageId" | "minTTLInSeconds" | "uploadTime"
|
|
135
|
+
> = {
|
|
136
|
+
stashedUpload: true,
|
|
137
|
+
storageId: undefined,
|
|
138
|
+
minTTLInSeconds: undefined,
|
|
139
|
+
uploadTime: undefined,
|
|
140
|
+
} as const;
|
|
141
|
+
|
|
134
142
|
export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
135
143
|
public static readonly basePath = "_blobs";
|
|
136
144
|
private static readonly redirectTableBlobName = ".redirectTable";
|
|
@@ -168,10 +176,21 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
168
176
|
private readonly sendBlobAttachOp: (localId: string, storageId?: string) => void;
|
|
169
177
|
private stopAttaching: boolean = false;
|
|
170
178
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
179
|
+
private readonly routeContext: IFluidHandleContext;
|
|
180
|
+
private readonly getStorage: () => IDocumentStorageService;
|
|
181
|
+
// Called when a blob node is requested. blobPath is the path of the blob's node in GC's graph.
|
|
182
|
+
// blobPath's format - `/<BlobManager.basePath>/<blobId>`.
|
|
183
|
+
private readonly blobRequested: (blobPath: string) => void;
|
|
184
|
+
// Called to check if a blob has been deleted by GC.
|
|
185
|
+
// blobPath's format - `/<BlobManager.basePath>/<blobId>`.
|
|
186
|
+
private readonly isBlobDeleted: (blobPath: string) => boolean;
|
|
187
|
+
private readonly runtime: IBlobManagerRuntime;
|
|
188
|
+
private readonly closeContainer: (error?: ICriticalContainerError) => void;
|
|
189
|
+
|
|
190
|
+
constructor(props: {
|
|
191
|
+
readonly routeContext: IFluidHandleContext;
|
|
192
|
+
snapshot: IBlobManagerLoadInfo;
|
|
193
|
+
readonly getStorage: () => IDocumentStorageService;
|
|
175
194
|
/**
|
|
176
195
|
* Submit a BlobAttach op. When a blob is uploaded, there is a short grace period before which the blob is
|
|
177
196
|
* deleted. The BlobAttach op notifies the server that blob is in use. The server will then not delete the
|
|
@@ -182,18 +201,36 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
182
201
|
* knowledge of which they cannot request the blob from storage. It's important that this op is sequenced
|
|
183
202
|
* before any ops that reference the local ID, otherwise, an invalid handle could be added to the document.
|
|
184
203
|
*/
|
|
185
|
-
sendBlobAttachOp: (localId: string, storageId?: string) => void
|
|
204
|
+
sendBlobAttachOp: (localId: string, storageId?: string) => void;
|
|
186
205
|
// Called when a blob node is requested. blobPath is the path of the blob's node in GC's graph.
|
|
187
206
|
// blobPath's format - `/<BlobManager.basePath>/<blobId>`.
|
|
188
|
-
|
|
207
|
+
readonly blobRequested: (blobPath: string) => void;
|
|
189
208
|
// Called to check if a blob has been deleted by GC.
|
|
190
209
|
// blobPath's format - `/<BlobManager.basePath>/<blobId>`.
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
stashedBlobs: IPendingBlobs
|
|
194
|
-
|
|
195
|
-
) {
|
|
210
|
+
readonly isBlobDeleted: (blobPath: string) => boolean;
|
|
211
|
+
readonly runtime: IBlobManagerRuntime;
|
|
212
|
+
stashedBlobs: IPendingBlobs | undefined;
|
|
213
|
+
readonly closeContainer: (error?: ICriticalContainerError) => void;
|
|
214
|
+
}) {
|
|
196
215
|
super();
|
|
216
|
+
const {
|
|
217
|
+
routeContext,
|
|
218
|
+
snapshot,
|
|
219
|
+
getStorage,
|
|
220
|
+
sendBlobAttachOp,
|
|
221
|
+
blobRequested,
|
|
222
|
+
isBlobDeleted,
|
|
223
|
+
runtime,
|
|
224
|
+
stashedBlobs,
|
|
225
|
+
closeContainer,
|
|
226
|
+
} = props;
|
|
227
|
+
this.routeContext = routeContext;
|
|
228
|
+
this.getStorage = getStorage;
|
|
229
|
+
this.blobRequested = blobRequested;
|
|
230
|
+
this.isBlobDeleted = isBlobDeleted;
|
|
231
|
+
this.runtime = runtime;
|
|
232
|
+
this.closeContainer = closeContainer;
|
|
233
|
+
|
|
197
234
|
this.mc = createChildMonitoringContext({
|
|
198
235
|
logger: this.runtime.logger,
|
|
199
236
|
namespace: "BlobManager",
|
|
@@ -202,39 +239,34 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
202
239
|
this.redirectTable = this.load(snapshot);
|
|
203
240
|
|
|
204
241
|
// Begin uploading stashed blobs from previous container instance
|
|
205
|
-
Object.entries(stashedBlobs).forEach(([localId, entry]) => {
|
|
242
|
+
Object.entries(stashedBlobs ?? {}).forEach(([localId, entry]) => {
|
|
243
|
+
const { acked, storageId, minTTLInSeconds, uploadTime } = entry;
|
|
206
244
|
const blob = stringToBuffer(entry.blob, "base64");
|
|
207
|
-
const
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
245
|
+
const pendingEntry: PendingBlob = {
|
|
246
|
+
blob,
|
|
247
|
+
opsent: true,
|
|
248
|
+
handleP: new Deferred(),
|
|
249
|
+
storageId,
|
|
250
|
+
uploadP: undefined,
|
|
251
|
+
uploadTime,
|
|
252
|
+
minTTLInSeconds,
|
|
253
|
+
attached: true,
|
|
254
|
+
acked,
|
|
255
|
+
};
|
|
256
|
+
this.pendingBlobs.set(localId, pendingEntry);
|
|
257
|
+
|
|
258
|
+
if (storageId !== undefined && minTTLInSeconds && uploadTime) {
|
|
259
|
+
const timeLapseSinceLocalUpload = (Date.now() - uploadTime) / 1000;
|
|
212
260
|
// stashed entries with more than half-life in storage will not be reuploaded
|
|
213
|
-
if (
|
|
214
|
-
this.pendingBlobs.set(localId, {
|
|
215
|
-
blob,
|
|
216
|
-
uploading: false,
|
|
217
|
-
opsent: true,
|
|
218
|
-
handleP: new Deferred(),
|
|
219
|
-
storageId,
|
|
220
|
-
uploadP: undefined,
|
|
221
|
-
uploadTime: entry.uploadTime,
|
|
222
|
-
minTTLInSeconds: entry.minTTLInSeconds,
|
|
223
|
-
attached,
|
|
224
|
-
acked,
|
|
225
|
-
});
|
|
261
|
+
if (minTTLInSeconds - timeLapseSinceLocalUpload > minTTLInSeconds / 2) {
|
|
226
262
|
return;
|
|
227
263
|
}
|
|
228
264
|
}
|
|
265
|
+
|
|
229
266
|
this.pendingBlobs.set(localId, {
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
handleP: new Deferred(),
|
|
267
|
+
...pendingEntry,
|
|
268
|
+
...stashedPendingBlobOverrides,
|
|
233
269
|
uploadP: this.uploadBlob(localId, blob),
|
|
234
|
-
attached,
|
|
235
|
-
acked,
|
|
236
|
-
opsent: true,
|
|
237
|
-
pendingStashed: true,
|
|
238
270
|
});
|
|
239
271
|
});
|
|
240
272
|
|
|
@@ -296,16 +328,19 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
296
328
|
});
|
|
297
329
|
}
|
|
298
330
|
|
|
299
|
-
public
|
|
300
|
-
return Array.from(this.pendingBlobs.values()).some((e) => e.
|
|
331
|
+
public hasPendingStashedUploads(): boolean {
|
|
332
|
+
return Array.from(this.pendingBlobs.values()).some((e) => e.stashedUpload === true);
|
|
301
333
|
}
|
|
302
334
|
/**
|
|
303
335
|
* Upload blobs added while offline. This must be completed before connecting and resubmitting ops.
|
|
304
336
|
*/
|
|
305
|
-
public async
|
|
337
|
+
public async trackPendingStashedUploads(): Promise<void> {
|
|
306
338
|
const pendingUploads = Array.from(this.pendingBlobs.values())
|
|
307
|
-
.filter((e) => e.
|
|
339
|
+
.filter((e) => e.stashedUpload === true)
|
|
308
340
|
.map(async (e) => e.uploadP);
|
|
341
|
+
if (pendingUploads.length === 0) {
|
|
342
|
+
return;
|
|
343
|
+
}
|
|
309
344
|
await PerformanceEvent.timedExecAsync(
|
|
310
345
|
this.mc.logger,
|
|
311
346
|
{
|
|
@@ -432,7 +467,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
432
467
|
const localId = uuid();
|
|
433
468
|
const pendingEntry: PendingBlob = {
|
|
434
469
|
blob,
|
|
435
|
-
uploading: true,
|
|
436
470
|
handleP: new Deferred(),
|
|
437
471
|
uploadP: this.uploadBlob(localId, blob),
|
|
438
472
|
attached: false,
|
|
@@ -525,9 +559,10 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
525
559
|
return;
|
|
526
560
|
}
|
|
527
561
|
assert(
|
|
528
|
-
entry.
|
|
562
|
+
entry.storageId === undefined,
|
|
529
563
|
0x386 /* Must have pending blob entry for uploaded blob */,
|
|
530
564
|
);
|
|
565
|
+
entry.stashedUpload = undefined;
|
|
531
566
|
entry.storageId = response.id;
|
|
532
567
|
entry.uploadTime = Date.now();
|
|
533
568
|
entry.minTTLInSeconds = response.minTTLInSeconds;
|
|
@@ -590,9 +625,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
590
625
|
this.deletePendingBlob(localId);
|
|
591
626
|
return;
|
|
592
627
|
}
|
|
593
|
-
if (pendingEntry?.pendingStashed) {
|
|
594
|
-
pendingEntry.pendingStashed = false;
|
|
595
|
-
}
|
|
596
628
|
}
|
|
597
629
|
assert(blobId !== undefined, 0x12a /* "Missing blob id on metadata" */);
|
|
598
630
|
|
|
@@ -930,7 +962,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
|
|
|
930
962
|
blobs[id] = {
|
|
931
963
|
blob: bufferToString(entry.blob, "base64"),
|
|
932
964
|
storageId: entry.storageId,
|
|
933
|
-
attached: entry.attached,
|
|
934
965
|
acked: entry.acked,
|
|
935
966
|
minTTLInSeconds: entry.minTTLInSeconds,
|
|
936
967
|
uploadTime: entry.uploadTime,
|
package/src/channelCollection.ts
CHANGED
|
@@ -12,10 +12,16 @@ import {
|
|
|
12
12
|
IResponse,
|
|
13
13
|
ITelemetryBaseLogger,
|
|
14
14
|
} from "@fluidframework/core-interfaces";
|
|
15
|
-
import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils";
|
|
16
|
-
import { FluidObjectHandle } from "@fluidframework/datastore";
|
|
17
|
-
import { buildSnapshotTree } from "@fluidframework/driver-utils";
|
|
15
|
+
import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils/internal";
|
|
16
|
+
import { FluidObjectHandle } from "@fluidframework/datastore/internal";
|
|
17
|
+
import { buildSnapshotTree } from "@fluidframework/driver-utils/internal";
|
|
18
18
|
import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
19
|
+
import {
|
|
20
|
+
IGarbageCollectionData,
|
|
21
|
+
IInboundSignalMessage,
|
|
22
|
+
ISummaryTreeWithStats,
|
|
23
|
+
ITelemetryContext,
|
|
24
|
+
} from "@fluidframework/runtime-definitions";
|
|
19
25
|
import {
|
|
20
26
|
AliasResult,
|
|
21
27
|
CreateSummarizerNodeSource,
|
|
@@ -27,15 +33,11 @@ import {
|
|
|
27
33
|
IFluidDataStoreFactory,
|
|
28
34
|
IFluidDataStoreRegistry,
|
|
29
35
|
IFluidParentContext,
|
|
30
|
-
IGarbageCollectionData,
|
|
31
|
-
IInboundSignalMessage,
|
|
32
36
|
ISummarizeResult,
|
|
33
|
-
ISummaryTreeWithStats,
|
|
34
|
-
ITelemetryContext,
|
|
35
37
|
InboundAttachMessage,
|
|
36
38
|
NamedFluidDataStoreRegistryEntries,
|
|
37
39
|
channelsTreeName,
|
|
38
|
-
} from "@fluidframework/runtime-definitions";
|
|
40
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
39
41
|
import {
|
|
40
42
|
GCDataBuilder,
|
|
41
43
|
RequestParser,
|
|
@@ -49,7 +51,7 @@ import {
|
|
|
49
51
|
processAttachMessageGCData,
|
|
50
52
|
responseToException,
|
|
51
53
|
unpackChildNodesUsedRoutes,
|
|
52
|
-
} from "@fluidframework/runtime-utils";
|
|
54
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
53
55
|
import {
|
|
54
56
|
DataCorruptionError,
|
|
55
57
|
DataProcessingError,
|
|
@@ -59,7 +61,8 @@ import {
|
|
|
59
61
|
createChildMonitoringContext,
|
|
60
62
|
extractSafePropertiesFromMessage,
|
|
61
63
|
tagCodeArtifacts,
|
|
62
|
-
} from "@fluidframework/telemetry-utils";
|
|
64
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
65
|
+
|
|
63
66
|
import { RuntimeHeaderData, defaultRuntimeHeaderData } from "./containerRuntime.js";
|
|
64
67
|
import {
|
|
65
68
|
IDataStoreAliasMessage,
|
|
@@ -220,7 +223,7 @@ export function wrapContextForInnerChannel(
|
|
|
220
223
|
);
|
|
221
224
|
};
|
|
222
225
|
|
|
223
|
-
context.submitSignal = (type: string, contents:
|
|
226
|
+
context.submitSignal = (type: string, contents: unknown, targetClientId?: string) => {
|
|
224
227
|
const envelope: IEnvelope = {
|
|
225
228
|
address: id,
|
|
226
229
|
contents,
|
|
@@ -267,6 +270,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
267
270
|
>();
|
|
268
271
|
|
|
269
272
|
protected readonly contexts: DataStoreContexts;
|
|
273
|
+
private readonly aliasedDataStores: Set<string>;
|
|
270
274
|
|
|
271
275
|
constructor(
|
|
272
276
|
protected readonly baseSnapshot: ISnapshotTree | undefined,
|
|
@@ -296,6 +300,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
296
300
|
"",
|
|
297
301
|
this.parentContext.IFluidHandleContext,
|
|
298
302
|
);
|
|
303
|
+
this.aliasedDataStores = new Set(aliasMap.values());
|
|
299
304
|
|
|
300
305
|
// Extract stores stored inside the snapshot
|
|
301
306
|
const fluidDataStores = new Map<string, ISnapshotTree>();
|
|
@@ -520,6 +525,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
520
525
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
521
526
|
|
|
522
527
|
this.aliasMap.set(alias, context.id);
|
|
528
|
+
this.aliasedDataStores.add(context.id);
|
|
523
529
|
context.setInMemoryRoot();
|
|
524
530
|
return true;
|
|
525
531
|
}
|
|
@@ -1286,8 +1292,9 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
|
1286
1292
|
*/
|
|
1287
1293
|
private async getOutboundRoutes(): Promise<string[]> {
|
|
1288
1294
|
const outboundRoutes: string[] = [];
|
|
1295
|
+
// Getting this information is a performance optimization that reduces network calls for virtualized datastores
|
|
1289
1296
|
for (const [contextId, context] of this.contexts) {
|
|
1290
|
-
const isRootDataStore = await context.isRoot();
|
|
1297
|
+
const isRootDataStore = await context.isRoot(this.aliasedDataStores);
|
|
1291
1298
|
if (isRootDataStore) {
|
|
1292
1299
|
outboundRoutes.push(`/${contextId}`);
|
|
1293
1300
|
}
|
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
|
|
6
6
|
import { performance } from "@fluid-internal/client-utils";
|
|
7
7
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
8
|
-
import { IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions";
|
|
8
|
+
import { IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions/internal";
|
|
9
9
|
import { IEventProvider } from "@fluidframework/core-interfaces";
|
|
10
|
-
import { assert } from "@fluidframework/core-utils";
|
|
10
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
11
11
|
import {
|
|
12
12
|
IDocumentMessage,
|
|
13
13
|
ISequencedDocumentMessage,
|
|
14
14
|
MessageType,
|
|
15
15
|
} from "@fluidframework/protocol-definitions";
|
|
16
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
16
17
|
import {
|
|
17
18
|
IEventSampler,
|
|
18
19
|
ISampledTelemetryLogger,
|
|
19
|
-
ITelemetryLoggerExt,
|
|
20
20
|
createChildLogger,
|
|
21
21
|
createSampledLogger,
|
|
22
22
|
formatTick,
|
|
23
|
-
} from "@fluidframework/telemetry-utils";
|
|
23
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* We report various latency-related errors when waiting for op roundtrip takes longer than that amout of time.
|
|
@@ -5,7 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
7
7
|
import { IFluidHandleContext, IRequest, IResponse } from "@fluidframework/core-interfaces";
|
|
8
|
-
import { generateHandleContextPath } from "@fluidframework/runtime-utils";
|
|
8
|
+
import { generateHandleContextPath } from "@fluidframework/runtime-utils/internal";
|
|
9
|
+
|
|
9
10
|
import { ContainerRuntime } from "./containerRuntime.js";
|
|
10
11
|
|
|
11
12
|
export class ContainerFluidHandleContext implements IFluidHandleContext {
|