@fluidframework/container-runtime 2.0.0-dev-rc.3.0.0.250606 → 2.0.0-dev-rc.3.0.0.253463
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 +34 -33
- 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 +3 -2
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +71 -71
- 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 +66 -38
- 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 +177 -150
- 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 +8 -8
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +60 -60
- 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 +3 -2
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +6 -6
- 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 +66 -38
- 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 +56 -27
- 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 +8 -8
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +6 -6
- 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 +18 -30
- package/src/batchTracker.ts +3 -2
- package/src/blobManager.ts +87 -56
- package/src/channelCollection.ts +14 -11
- package/src/connectionTelemetry.ts +4 -4
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +90 -58
- package/src/dataStore.ts +5 -3
- package/src/dataStoreContext.ts +16 -13
- 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/src/containerRuntime.ts
CHANGED
|
@@ -7,19 +7,21 @@ import { Trace, TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
|
7
7
|
import {
|
|
8
8
|
AttachState,
|
|
9
9
|
IAudience,
|
|
10
|
-
IBatchMessage,
|
|
11
|
-
IContainerContext,
|
|
12
10
|
ICriticalContainerError,
|
|
13
11
|
IDeltaManager,
|
|
12
|
+
} from "@fluidframework/container-definitions";
|
|
13
|
+
import {
|
|
14
|
+
IBatchMessage,
|
|
15
|
+
IContainerContext,
|
|
14
16
|
IGetPendingLocalStateProps,
|
|
15
17
|
ILoader,
|
|
16
18
|
IRuntime,
|
|
17
19
|
LoaderHeader,
|
|
18
|
-
} from "@fluidframework/container-definitions";
|
|
20
|
+
} from "@fluidframework/container-definitions/internal";
|
|
19
21
|
import {
|
|
20
22
|
IContainerRuntime,
|
|
21
23
|
IContainerRuntimeEvents,
|
|
22
|
-
} from "@fluidframework/container-runtime-definitions";
|
|
24
|
+
} from "@fluidframework/container-runtime-definitions/internal";
|
|
23
25
|
import {
|
|
24
26
|
FluidObject,
|
|
25
27
|
IFluidHandle,
|
|
@@ -27,24 +29,30 @@ import {
|
|
|
27
29
|
IProvideFluidHandleContext,
|
|
28
30
|
IRequest,
|
|
29
31
|
IResponse,
|
|
30
|
-
ISignalEnvelope,
|
|
31
32
|
ITelemetryBaseLogger,
|
|
32
33
|
} from "@fluidframework/core-interfaces";
|
|
33
|
-
import {
|
|
34
|
+
import { ISignalEnvelope } from "@fluidframework/core-interfaces/internal";
|
|
35
|
+
import {
|
|
36
|
+
assert,
|
|
37
|
+
Deferred,
|
|
38
|
+
LazyPromise,
|
|
39
|
+
PromiseCache,
|
|
40
|
+
delay,
|
|
41
|
+
} from "@fluidframework/core-utils/internal";
|
|
34
42
|
import {
|
|
35
43
|
DriverHeader,
|
|
36
44
|
FetchSource,
|
|
37
45
|
IDocumentStorageService,
|
|
38
46
|
type ISnapshot,
|
|
39
|
-
} from "@fluidframework/driver-definitions";
|
|
40
|
-
import { readAndParse } from "@fluidframework/driver-utils";
|
|
47
|
+
} from "@fluidframework/driver-definitions/internal";
|
|
48
|
+
import { readAndParse } from "@fluidframework/driver-utils/internal";
|
|
49
|
+
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
41
50
|
import type {
|
|
42
|
-
IIdCompressor,
|
|
43
51
|
IIdCompressorCore,
|
|
44
52
|
IdCreationRange,
|
|
45
53
|
SerializedIdCompressorWithNoSession,
|
|
46
54
|
SerializedIdCompressorWithOngoingSession,
|
|
47
|
-
} from "@fluidframework/id-compressor";
|
|
55
|
+
} from "@fluidframework/id-compressor/internal";
|
|
48
56
|
import {
|
|
49
57
|
IClientDetails,
|
|
50
58
|
IDocumentMessage,
|
|
@@ -57,6 +65,12 @@ import {
|
|
|
57
65
|
MessageType,
|
|
58
66
|
SummaryType,
|
|
59
67
|
} from "@fluidframework/protocol-definitions";
|
|
68
|
+
import {
|
|
69
|
+
IGarbageCollectionData,
|
|
70
|
+
IInboundSignalMessage,
|
|
71
|
+
ISummaryTreeWithStats,
|
|
72
|
+
ITelemetryContext,
|
|
73
|
+
} from "@fluidframework/runtime-definitions";
|
|
60
74
|
import {
|
|
61
75
|
CreateChildSummarizerNodeParam,
|
|
62
76
|
FlushMode,
|
|
@@ -65,17 +79,13 @@ import {
|
|
|
65
79
|
IEnvelope,
|
|
66
80
|
IFluidDataStoreContextDetached,
|
|
67
81
|
IFluidDataStoreRegistry,
|
|
68
|
-
IGarbageCollectionData,
|
|
69
|
-
IInboundSignalMessage,
|
|
70
82
|
ISummarizeInternalResult,
|
|
71
|
-
ISummaryTreeWithStats,
|
|
72
|
-
ITelemetryContext,
|
|
73
83
|
InboundAttachMessage,
|
|
74
84
|
NamedFluidDataStoreRegistryEntries,
|
|
75
85
|
SummarizeInternalFn,
|
|
76
86
|
channelsTreeName,
|
|
77
87
|
gcTreeKey,
|
|
78
|
-
} from "@fluidframework/runtime-definitions";
|
|
88
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
79
89
|
import {
|
|
80
90
|
GCDataBuilder,
|
|
81
91
|
ReadAndParseBlob,
|
|
@@ -88,17 +98,20 @@ import {
|
|
|
88
98
|
exceptionToResponse,
|
|
89
99
|
responseToException,
|
|
90
100
|
seqFromTree,
|
|
91
|
-
} from "@fluidframework/runtime-utils";
|
|
101
|
+
} from "@fluidframework/runtime-utils/internal";
|
|
102
|
+
import {
|
|
103
|
+
type ITelemetryGenericEventExt,
|
|
104
|
+
ITelemetryLoggerExt,
|
|
105
|
+
} from "@fluidframework/telemetry-utils";
|
|
92
106
|
import {
|
|
93
107
|
DataCorruptionError,
|
|
94
108
|
DataProcessingError,
|
|
95
109
|
GenericError,
|
|
96
110
|
IEventSampler,
|
|
97
|
-
type ITelemetryGenericEventExt,
|
|
98
|
-
ITelemetryLoggerExt,
|
|
99
111
|
LoggingError,
|
|
100
112
|
MonitoringContext,
|
|
101
113
|
PerformanceEvent,
|
|
114
|
+
// eslint-disable-next-line import/no-deprecated
|
|
102
115
|
TaggedLoggerAdapter,
|
|
103
116
|
UsageError,
|
|
104
117
|
createChildLogger,
|
|
@@ -107,8 +120,9 @@ import {
|
|
|
107
120
|
loggerToMonitoringContext,
|
|
108
121
|
raiseConnectedEvent,
|
|
109
122
|
wrapError,
|
|
110
|
-
} from "@fluidframework/telemetry-utils";
|
|
123
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
111
124
|
import { v4 as uuid } from "uuid";
|
|
125
|
+
|
|
112
126
|
import { BindBatchTracker } from "./batchTracker.js";
|
|
113
127
|
import { BlobManager, IBlobManagerLoadInfo, IPendingBlobs } from "./blobManager.js";
|
|
114
128
|
import { ChannelCollection, getSummaryForDatastores, wrapContext } from "./channelCollection.js";
|
|
@@ -163,7 +177,6 @@ import {
|
|
|
163
177
|
IConnectableRuntime,
|
|
164
178
|
IContainerRuntimeMetadata,
|
|
165
179
|
ICreateContainerMetadata,
|
|
166
|
-
IDocumentSchemaChangeMessage,
|
|
167
180
|
type IDocumentSchemaCurrent,
|
|
168
181
|
IEnqueueSummarizeOptions,
|
|
169
182
|
IGenerateSummaryTreeResult,
|
|
@@ -770,6 +783,7 @@ export class ContainerRuntime
|
|
|
770
783
|
const backCompatContext: IContainerContext | OldContainerContextWithLogger = context;
|
|
771
784
|
const passLogger =
|
|
772
785
|
backCompatContext.taggedLogger ??
|
|
786
|
+
// eslint-disable-next-line import/no-deprecated
|
|
773
787
|
new TaggedLoggerAdapter((backCompatContext as OldContainerContextWithLogger).logger);
|
|
774
788
|
const logger = createChildLogger({
|
|
775
789
|
logger: passLogger,
|
|
@@ -900,7 +914,7 @@ export class ContainerRuntime
|
|
|
900
914
|
|
|
901
915
|
const createIdCompressorFn = async () => {
|
|
902
916
|
const { createIdCompressor, deserializeIdCompressor, createSessionId } = await import(
|
|
903
|
-
"@fluidframework/id-compressor"
|
|
917
|
+
"@fluidframework/id-compressor/internal"
|
|
904
918
|
);
|
|
905
919
|
|
|
906
920
|
/**
|
|
@@ -956,6 +970,7 @@ export class ContainerRuntime
|
|
|
956
970
|
compressionLz4,
|
|
957
971
|
idCompressorMode,
|
|
958
972
|
opGroupingEnabled,
|
|
973
|
+
disallowedVersions: [],
|
|
959
974
|
},
|
|
960
975
|
(schema) => {
|
|
961
976
|
runtime.onSchemaChange(schema);
|
|
@@ -1001,6 +1016,17 @@ export class ContainerRuntime
|
|
|
1001
1016
|
undefined, // summaryConfiguration
|
|
1002
1017
|
);
|
|
1003
1018
|
|
|
1019
|
+
runtime.blobManager.trackPendingStashedUploads().then(
|
|
1020
|
+
() => {
|
|
1021
|
+
// make sure we didn't reconnect before the promise resolved
|
|
1022
|
+
if (runtime.delayConnectClientId !== undefined && !runtime.disposed) {
|
|
1023
|
+
runtime.delayConnectClientId = undefined;
|
|
1024
|
+
runtime.setConnectionStateCore(true, runtime.delayConnectClientId);
|
|
1025
|
+
}
|
|
1026
|
+
},
|
|
1027
|
+
(error) => runtime.closeFn(error),
|
|
1028
|
+
);
|
|
1029
|
+
|
|
1004
1030
|
// Apply stashed ops with a reference sequence number equal to the sequence number of the snapshot,
|
|
1005
1031
|
// or zero. This must be done before Container replays saved ops.
|
|
1006
1032
|
await runtime.pendingStateManager.applyStashedOpsAt(runtimeSequenceNumber ?? 0);
|
|
@@ -1581,7 +1607,7 @@ export class ContainerRuntime
|
|
|
1581
1607
|
// Due to a mismatch between different layers in terms of
|
|
1582
1608
|
// what is the interface of passing signals, we need the
|
|
1583
1609
|
// downstream stores to wrap the signal.
|
|
1584
|
-
parentContext.submitSignal = (type: string, content:
|
|
1610
|
+
parentContext.submitSignal = (type: string, content: unknown, targetClientId?: string) => {
|
|
1585
1611
|
const envelope1 = content as IEnvelope;
|
|
1586
1612
|
const envelope2 = this.createNewSignalEnvelope(
|
|
1587
1613
|
envelope1.address,
|
|
@@ -1616,11 +1642,11 @@ export class ContainerRuntime
|
|
|
1616
1642
|
async (runtime: ChannelCollection) => provideEntryPoint,
|
|
1617
1643
|
);
|
|
1618
1644
|
|
|
1619
|
-
this.blobManager = new BlobManager(
|
|
1620
|
-
this.handleContext,
|
|
1621
|
-
blobManagerSnapshot,
|
|
1622
|
-
() => this.storage,
|
|
1623
|
-
(localId: string, blobId?: string) => {
|
|
1645
|
+
this.blobManager = new BlobManager({
|
|
1646
|
+
routeContext: this.handleContext,
|
|
1647
|
+
snapshot: blobManagerSnapshot,
|
|
1648
|
+
getStorage: () => this.storage,
|
|
1649
|
+
sendBlobAttachOp: (localId: string, blobId?: string) => {
|
|
1624
1650
|
if (!this.disposed) {
|
|
1625
1651
|
this.submit(
|
|
1626
1652
|
{ type: ContainerMessageType.BlobAttach, contents: undefined },
|
|
@@ -1632,12 +1658,13 @@ export class ContainerRuntime
|
|
|
1632
1658
|
);
|
|
1633
1659
|
}
|
|
1634
1660
|
},
|
|
1635
|
-
(blobPath: string) =>
|
|
1636
|
-
|
|
1637
|
-
this,
|
|
1638
|
-
|
|
1639
|
-
|
|
1640
|
-
|
|
1661
|
+
blobRequested: (blobPath: string) =>
|
|
1662
|
+
this.garbageCollector.nodeUpdated(blobPath, "Loaded"),
|
|
1663
|
+
isBlobDeleted: (blobPath: string) => this.garbageCollector.isNodeDeleted(blobPath),
|
|
1664
|
+
runtime: this,
|
|
1665
|
+
stashedBlobs: pendingRuntimeState?.pendingAttachmentBlobs,
|
|
1666
|
+
closeContainer: (error?: ICriticalContainerError) => this.closeFn(error),
|
|
1667
|
+
});
|
|
1641
1668
|
|
|
1642
1669
|
this.scheduleManager = new ScheduleManager(
|
|
1643
1670
|
this.innerDeltaManager,
|
|
@@ -2314,6 +2341,15 @@ export class ContainerRuntime
|
|
|
2314
2341
|
case ContainerMessageType.Alias:
|
|
2315
2342
|
return this.channelCollection.applyStashedOp(opContents);
|
|
2316
2343
|
case ContainerMessageType.IdAllocation:
|
|
2344
|
+
// IDs allocation ops in stashed state are ignored because the tip state of the compressor
|
|
2345
|
+
// is serialized into the pending state. This is done because generation of new IDs during
|
|
2346
|
+
// stashed op application (or, later, resubmit) must generate new IDs and if the compressor
|
|
2347
|
+
// was loaded from a state serialized at the same time as the summary tree in the stashed state
|
|
2348
|
+
// then it would generate IDs that collide with any in later stashed ops.
|
|
2349
|
+
// In the future, IdCompressor could be extended to have an "applyStashedOp" or similar method
|
|
2350
|
+
// and the runtime could filter out all ID allocation ops from the stashed state and apply them
|
|
2351
|
+
// before applying the rest of the stashed ops. This would accomplish the same thing but with
|
|
2352
|
+
// better performance in future incremental stashed state creation.
|
|
2317
2353
|
assert(
|
|
2318
2354
|
this.idCompressorMode !== undefined,
|
|
2319
2355
|
0x8f1 /* ID compressor should be in use */,
|
|
@@ -2365,6 +2401,7 @@ export class ContainerRuntime
|
|
|
2365
2401
|
this._loadIdCompressor = this.createIdCompressor()
|
|
2366
2402
|
.then((compressor) => {
|
|
2367
2403
|
this._idCompressor = compressor;
|
|
2404
|
+
// Finalize any ranges we received while the compressor was turned off.
|
|
2368
2405
|
for (const range of this.pendingIdCompressorOps) {
|
|
2369
2406
|
this._idCompressor.finalizeCreationRange(range);
|
|
2370
2407
|
}
|
|
@@ -2400,23 +2437,13 @@ export class ContainerRuntime
|
|
|
2400
2437
|
// propagation of the "connected" event until we have uploaded them to
|
|
2401
2438
|
// ensure we don't submit ops referencing a blob that has not been uploaded
|
|
2402
2439
|
const connecting = connected && !this._connected;
|
|
2403
|
-
if (connecting && this.blobManager.
|
|
2440
|
+
if (connecting && this.blobManager.hasPendingStashedUploads()) {
|
|
2404
2441
|
assert(
|
|
2405
2442
|
!this.delayConnectClientId,
|
|
2406
2443
|
0x791 /* Connect event delay must be canceled before subsequent connect event */,
|
|
2407
2444
|
);
|
|
2408
2445
|
assert(!!clientId, 0x792 /* Must have clientId when connecting */);
|
|
2409
2446
|
this.delayConnectClientId = clientId;
|
|
2410
|
-
this.blobManager.processStashedChanges().then(
|
|
2411
|
-
() => {
|
|
2412
|
-
// make sure we didn't reconnect before the promise resolved
|
|
2413
|
-
if (this.delayConnectClientId === clientId && !this.disposed) {
|
|
2414
|
-
this.delayConnectClientId = undefined;
|
|
2415
|
-
this.setConnectionStateCore(connected, clientId);
|
|
2416
|
-
}
|
|
2417
|
-
},
|
|
2418
|
-
(error) => this.closeFn(error),
|
|
2419
|
-
);
|
|
2420
2447
|
return;
|
|
2421
2448
|
}
|
|
2422
2449
|
|
|
@@ -2612,6 +2639,8 @@ export class ContainerRuntime
|
|
|
2612
2639
|
)
|
|
2613
2640
|
) {
|
|
2614
2641
|
const range = messageWithContext.message.contents;
|
|
2642
|
+
// Some other client turned on the id compressor. If we have not turned it on,
|
|
2643
|
+
// put it in a pending queue and delay finalization.
|
|
2615
2644
|
if (this._idCompressor === undefined) {
|
|
2616
2645
|
this.pendingIdCompressorOps.push(range);
|
|
2617
2646
|
} else {
|
|
@@ -2991,10 +3020,10 @@ export class ContainerRuntime
|
|
|
2991
3020
|
/**
|
|
2992
3021
|
* Submits the signal to be sent to other clients.
|
|
2993
3022
|
* @param type - Type of the signal.
|
|
2994
|
-
* @param content - Content of the signal.
|
|
3023
|
+
* @param content - Content of the signal. Should be a JSON serializable object or primitive.
|
|
2995
3024
|
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
2996
3025
|
*/
|
|
2997
|
-
public submitSignal(type: string, content:
|
|
3026
|
+
public submitSignal(type: string, content: unknown, targetClientId?: string) {
|
|
2998
3027
|
this.verifyNotClosed();
|
|
2999
3028
|
const envelope = this.createNewSignalEnvelope(undefined /* address */, type, content);
|
|
3000
3029
|
return this.submitSignalFn(envelope, targetClientId);
|
|
@@ -3039,6 +3068,10 @@ export class ContainerRuntime
|
|
|
3039
3068
|
// We can finalize any allocated IDs since we're the only client
|
|
3040
3069
|
const idRange = this._idCompressor?.takeNextCreationRange();
|
|
3041
3070
|
if (idRange !== undefined) {
|
|
3071
|
+
assert(
|
|
3072
|
+
idRange.ids === undefined || idRange.ids.firstGenCount === 1,
|
|
3073
|
+
"No other ranges should be taken while container is detached.",
|
|
3074
|
+
);
|
|
3042
3075
|
this._idCompressor?.finalizeCreationRange(idRange);
|
|
3043
3076
|
}
|
|
3044
3077
|
|
|
@@ -3866,18 +3899,17 @@ export class ContainerRuntime
|
|
|
3866
3899
|
// Allow document schema controller to send a message if it needs to propose change in document schema.
|
|
3867
3900
|
// If it needs to send a message, it will call provided callback with payload of such message and rely
|
|
3868
3901
|
// on this callback to do actual sending.
|
|
3869
|
-
this.documentsSchemaController.
|
|
3870
|
-
|
|
3871
|
-
|
|
3872
|
-
|
|
3873
|
-
|
|
3874
|
-
|
|
3875
|
-
|
|
3876
|
-
|
|
3877
|
-
|
|
3878
|
-
|
|
3879
|
-
|
|
3880
|
-
);
|
|
3902
|
+
const contents = this.documentsSchemaController.maybeSendSchemaMessage();
|
|
3903
|
+
if (contents) {
|
|
3904
|
+
const msg: ContainerRuntimeDocumentSchemaMessage = {
|
|
3905
|
+
type: ContainerMessageType.DocumentSchemaChange,
|
|
3906
|
+
contents,
|
|
3907
|
+
};
|
|
3908
|
+
this.outbox.submit({
|
|
3909
|
+
contents: JSON.stringify(msg),
|
|
3910
|
+
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
3911
|
+
});
|
|
3912
|
+
}
|
|
3881
3913
|
|
|
3882
3914
|
// If this is attach message for new data store, and we are in a batch, send this op out of order
|
|
3883
3915
|
// Is it safe:
|
package/src/dataStore.ts
CHANGED
|
@@ -5,13 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
7
7
|
import { FluidObject, IFluidHandle } from "@fluidframework/core-interfaces";
|
|
8
|
-
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
8
|
+
import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
9
9
|
import {
|
|
10
10
|
AliasResult,
|
|
11
11
|
IDataStore,
|
|
12
12
|
IFluidDataStoreChannel,
|
|
13
|
-
} from "@fluidframework/runtime-definitions";
|
|
14
|
-
import { ITelemetryLoggerExt
|
|
13
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
14
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
15
|
+
import { TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
16
|
+
|
|
15
17
|
import { ChannelCollection } from "./channelCollection.js";
|
|
16
18
|
import { ContainerMessageType } from "./messageTypes.js";
|
|
17
19
|
|
package/src/dataStoreContext.ts
CHANGED
|
@@ -12,11 +12,11 @@ import {
|
|
|
12
12
|
IRequest,
|
|
13
13
|
IResponse,
|
|
14
14
|
ITelemetryBaseProperties,
|
|
15
|
+
IEvent,
|
|
15
16
|
} from "@fluidframework/core-interfaces";
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
|
|
17
|
+
import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils/internal";
|
|
18
|
+
import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
|
|
19
|
+
import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils/internal";
|
|
20
20
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
21
21
|
import {
|
|
22
22
|
IClientDetails,
|
|
@@ -26,6 +26,12 @@ import {
|
|
|
26
26
|
ISnapshotTree,
|
|
27
27
|
ITreeEntry,
|
|
28
28
|
} from "@fluidframework/protocol-definitions";
|
|
29
|
+
import {
|
|
30
|
+
IGarbageCollectionData,
|
|
31
|
+
IInboundSignalMessage,
|
|
32
|
+
ISummaryTreeWithStats,
|
|
33
|
+
ITelemetryContext,
|
|
34
|
+
} from "@fluidframework/runtime-definitions";
|
|
29
35
|
import {
|
|
30
36
|
CreateChildSummarizerNodeFn,
|
|
31
37
|
CreateChildSummarizerNodeParam,
|
|
@@ -37,20 +43,16 @@ import {
|
|
|
37
43
|
IFluidDataStoreContextDetached,
|
|
38
44
|
IFluidDataStoreRegistry,
|
|
39
45
|
IFluidParentContext,
|
|
40
|
-
IGarbageCollectionData,
|
|
41
46
|
IGarbageCollectionDetailsBase,
|
|
42
|
-
IInboundSignalMessage,
|
|
43
47
|
IProvideFluidDataStoreFactory,
|
|
44
48
|
ISummarizeInternalResult,
|
|
45
49
|
ISummarizeResult,
|
|
46
50
|
ISummarizerNodeWithGC,
|
|
47
|
-
ISummaryTreeWithStats,
|
|
48
|
-
ITelemetryContext,
|
|
49
51
|
SummarizeInternalFn,
|
|
50
52
|
channelsTreeName,
|
|
51
53
|
gcDataBlobKey,
|
|
52
|
-
} from "@fluidframework/runtime-definitions";
|
|
53
|
-
import { addBlobToSummary } from "@fluidframework/runtime-utils";
|
|
54
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
55
|
+
import { addBlobToSummary } from "@fluidframework/runtime-utils/internal";
|
|
54
56
|
import {
|
|
55
57
|
DataCorruptionError,
|
|
56
58
|
DataProcessingError,
|
|
@@ -61,7 +63,8 @@ import {
|
|
|
61
63
|
extractSafePropertiesFromMessage,
|
|
62
64
|
generateStack,
|
|
63
65
|
tagCodeArtifacts,
|
|
64
|
-
} from "@fluidframework/telemetry-utils";
|
|
66
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
67
|
+
|
|
65
68
|
import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
|
|
66
69
|
import {
|
|
67
70
|
ReadFluidDataStoreAttributes,
|
|
@@ -799,10 +802,10 @@ export abstract class FluidDataStoreContext
|
|
|
799
802
|
/**
|
|
800
803
|
* Submits the signal to be sent to other clients.
|
|
801
804
|
* @param type - Type of the signal.
|
|
802
|
-
* @param content - Content of the signal.
|
|
805
|
+
* @param content - Content of the signal. Should be a JSON serializable object or primitive.
|
|
803
806
|
* @param targetClientId - When specified, the signal is only sent to the provided client id.
|
|
804
807
|
*/
|
|
805
|
-
public submitSignal(type: string, content:
|
|
808
|
+
public submitSignal(type: string, content: unknown, targetClientId?: string) {
|
|
806
809
|
this.verifyNotClosed("submitSignal");
|
|
807
810
|
|
|
808
811
|
assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
|
package/src/dataStoreContexts.ts
CHANGED
|
@@ -4,8 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
|
-
import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
|
|
8
|
-
import { ITelemetryLoggerExt
|
|
7
|
+
import { assert, Deferred, Lazy } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
9
|
+
import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
10
|
+
|
|
9
11
|
import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext.js";
|
|
10
12
|
|
|
11
13
|
/** @internal */
|
package/src/dataStoreRegistry.ts
CHANGED
|
@@ -7,8 +7,8 @@ import {
|
|
|
7
7
|
FluidDataStoreRegistryEntry,
|
|
8
8
|
IFluidDataStoreRegistry,
|
|
9
9
|
NamedFluidDataStoreRegistryEntries,
|
|
10
|
-
} from "@fluidframework/runtime-definitions";
|
|
11
|
-
import { UsageError } from "@fluidframework/telemetry-utils";
|
|
10
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
11
|
+
import { UsageError } from "@fluidframework/telemetry-utils/internal";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* @internal
|
|
@@ -139,7 +139,7 @@ export class DeltaManagerSummarizerProxy
|
|
|
139
139
|
this.deltaManager.off("readonly", this.onReadonly);
|
|
140
140
|
}
|
|
141
141
|
|
|
142
|
-
public submitSignal(content:
|
|
142
|
+
public submitSignal(content: string, targetClientId?: string): void {
|
|
143
143
|
return this.deltaManager.submitSignal(content, targetClientId);
|
|
144
144
|
}
|
|
145
145
|
|
package/src/deltaScheduler.ts
CHANGED
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
import { performance } from "@fluid-internal/client-utils";
|
|
7
7
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
8
8
|
import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
9
|
-
import { ITelemetryLoggerExt
|
|
9
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
10
|
+
import { formatTick } from "@fluidframework/telemetry-utils/internal";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
|
package/src/error.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ContainerErrorTypes } from "@fluidframework/container-definitions";
|
|
7
|
-
import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils";
|
|
6
|
+
import { ContainerErrorTypes } from "@fluidframework/container-definitions/internal";
|
|
7
|
+
import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils/internal";
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* Error indicating that a client's session has reached its time limit and is closed.
|
|
@@ -4,24 +4,24 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
7
|
-
import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
|
|
7
|
+
import { assert, LazyPromise, Timer } from "@fluidframework/core-utils/internal";
|
|
8
|
+
import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
8
9
|
import {
|
|
9
|
-
IGarbageCollectionData,
|
|
10
10
|
IGarbageCollectionDetailsBase,
|
|
11
11
|
ISummarizeResult,
|
|
12
|
-
ITelemetryContext,
|
|
13
12
|
gcTreeKey,
|
|
14
|
-
} from "@fluidframework/runtime-definitions";
|
|
15
|
-
import { createResponseError, responseToException } from "@fluidframework/runtime-utils";
|
|
13
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
14
|
+
import { createResponseError, responseToException } from "@fluidframework/runtime-utils/internal";
|
|
15
|
+
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
16
16
|
import {
|
|
17
17
|
DataProcessingError,
|
|
18
|
-
ITelemetryLoggerExt,
|
|
19
18
|
MonitoringContext,
|
|
20
19
|
PerformanceEvent,
|
|
21
20
|
createChildLogger,
|
|
22
21
|
createChildMonitoringContext,
|
|
23
22
|
tagCodeArtifacts,
|
|
24
|
-
} from "@fluidframework/telemetry-utils";
|
|
23
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
24
|
+
|
|
25
25
|
import { BlobManager } from "../blobManager.js";
|
|
26
26
|
import {
|
|
27
27
|
InactiveResponseHeaderKey,
|
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
import { ClientSessionExpiredError } from "../error.js";
|
|
32
32
|
import { ContainerMessageType, ContainerRuntimeGCMessage } from "../messageTypes.js";
|
|
33
33
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
34
|
+
|
|
34
35
|
import { generateGCConfigs } from "./gcConfigs.js";
|
|
35
36
|
import {
|
|
36
37
|
GCNodeType,
|
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -7,8 +7,10 @@ import {
|
|
|
7
7
|
MonitoringContext,
|
|
8
8
|
UsageError,
|
|
9
9
|
validatePrecondition,
|
|
10
|
-
} from "@fluidframework/telemetry-utils";
|
|
10
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
11
|
+
|
|
11
12
|
import { IContainerRuntimeMetadata } from "../summary/index.js";
|
|
13
|
+
|
|
12
14
|
import {
|
|
13
15
|
GCFeatureMatrix,
|
|
14
16
|
GCVersion,
|
|
@@ -24,18 +26,15 @@ import {
|
|
|
24
26
|
gcDisableThrowOnTombstoneLoadOptionName,
|
|
25
27
|
gcGenerationOptionName,
|
|
26
28
|
gcTestModeKey,
|
|
27
|
-
gcVersionUpgradeToV4Key,
|
|
28
29
|
maxSnapshotCacheExpiryMs,
|
|
29
|
-
nextGCVersion,
|
|
30
30
|
oneDayMs,
|
|
31
31
|
runGCKey,
|
|
32
32
|
runSessionExpiryKey,
|
|
33
33
|
runSweepKey,
|
|
34
|
-
stableGCVersion,
|
|
35
34
|
throwOnTombstoneLoadOverrideKey,
|
|
36
35
|
throwOnTombstoneUsageKey,
|
|
37
36
|
} from "./gcDefinitions.js";
|
|
38
|
-
import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
37
|
+
import { getGCVersion, getGCVersionInEffect, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
39
38
|
|
|
40
39
|
/**
|
|
41
40
|
* Generates configurations for the Garbage Collector that it uses to determine what to run and how.
|
|
@@ -113,9 +112,7 @@ export function generateGCConfigs(
|
|
|
113
112
|
createParams.gcOptions[gcGenerationOptionName] /* currentGeneration */,
|
|
114
113
|
);
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
const gcVersionInEffect =
|
|
118
|
-
mc.config.getBoolean(gcVersionUpgradeToV4Key) === true ? nextGCVersion : stableGCVersion;
|
|
115
|
+
const gcVersionInEffect = getGCVersionInEffect(mc.config);
|
|
119
116
|
|
|
120
117
|
// The GC version is up-to-date if the GC version in effect is at least equal to the GC version in base snapshot.
|
|
121
118
|
// If it is not up-to-date, there is a newer version of GC out there which is more reliable than this. So, GC
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
import { ICriticalContainerError } from "@fluidframework/container-definitions";
|
|
7
7
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
8
8
|
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
9
|
+
import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
9
10
|
import {
|
|
10
|
-
IGarbageCollectionData,
|
|
11
11
|
IGarbageCollectionDetailsBase,
|
|
12
12
|
ISummarizeResult,
|
|
13
|
-
|
|
14
|
-
} from "@fluidframework/runtime-
|
|
15
|
-
import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
|
|
13
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
14
|
+
import { ReadAndParseBlob } from "@fluidframework/runtime-utils/internal";
|
|
16
15
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
16
|
+
|
|
17
17
|
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
18
18
|
import { ContainerRuntimeGCMessage } from "../messageTypes.js";
|
|
19
19
|
import {
|
package/src/gc/gcHelpers.ts
CHANGED
|
@@ -3,16 +3,25 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert } from "@fluidframework/core-utils";
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
8
|
+
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
8
9
|
import {
|
|
9
|
-
IGarbageCollectionData,
|
|
10
10
|
IGarbageCollectionDetailsBase,
|
|
11
11
|
gcBlobPrefix,
|
|
12
12
|
gcDeletedBlobKey,
|
|
13
13
|
gcTombstoneBlobKey,
|
|
14
|
-
} from "@fluidframework/runtime-definitions";
|
|
15
|
-
import {
|
|
14
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
15
|
+
import type { IConfigProvider } from "@fluidframework/telemetry-utils/internal";
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
GCFeatureMatrix,
|
|
19
|
+
GCVersion,
|
|
20
|
+
IGCMetadata,
|
|
21
|
+
gcVersionUpgradeToV4Key,
|
|
22
|
+
nextGCVersion,
|
|
23
|
+
stableGCVersion,
|
|
24
|
+
} from "./gcDefinitions.js";
|
|
16
25
|
import {
|
|
17
26
|
IGarbageCollectionNodeData,
|
|
18
27
|
IGarbageCollectionSnapshotData,
|
|
@@ -27,6 +36,14 @@ export function getGCVersion(metadata?: IGCMetadata): GCVersion {
|
|
|
27
36
|
return metadata.gcFeature ?? 0;
|
|
28
37
|
}
|
|
29
38
|
|
|
39
|
+
/** Indicates what GC version is in effect for new GC data being written in this session */
|
|
40
|
+
export function getGCVersionInEffect(configProvider: IConfigProvider): number {
|
|
41
|
+
// If version upgrade is not enabled, fall back to the stable GC version.
|
|
42
|
+
return configProvider.getBoolean(gcVersionUpgradeToV4Key) === true
|
|
43
|
+
? nextGCVersion
|
|
44
|
+
: stableGCVersion;
|
|
45
|
+
}
|
|
46
|
+
|
|
30
47
|
/**
|
|
31
48
|
* Indicates whether Sweep is allowed for this document based on the persisted GC Feature Matrix and current gcGeneration.
|
|
32
49
|
* This applies to the entire Sweep Phase the same - both Tombstone Enforcement (i.e. should loading a Tombstone fail?) and Deletion.
|
|
@@ -4,16 +4,18 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { SummaryType } from "@fluidframework/protocol-definitions";
|
|
7
|
+
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
7
8
|
import {
|
|
8
9
|
ISummarizeResult,
|
|
9
|
-
ISummaryTreeWithStats,
|
|
10
10
|
gcBlobPrefix,
|
|
11
11
|
gcDeletedBlobKey,
|
|
12
12
|
gcTombstoneBlobKey,
|
|
13
13
|
gcTreeKey,
|
|
14
|
-
} from "@fluidframework/runtime-definitions";
|
|
15
|
-
import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils";
|
|
14
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
15
|
+
import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/internal";
|
|
16
|
+
|
|
16
17
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
18
|
+
|
|
17
19
|
import { GCVersion, IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
|
|
18
20
|
import { generateSortedGCState } from "./gcHelpers.js";
|
|
19
21
|
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
|