@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
|
@@ -6,12 +6,12 @@
|
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
|
|
8
8
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
9
|
+
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
10
|
+
const internal_2 = require("@fluidframework/datastore/internal");
|
|
11
|
+
const internal_3 = require("@fluidframework/driver-utils/internal");
|
|
12
|
+
const internal_4 = require("@fluidframework/runtime-definitions/internal");
|
|
13
|
+
const internal_5 = require("@fluidframework/runtime-utils/internal");
|
|
14
|
+
const internal_6 = require("@fluidframework/telemetry-utils/internal");
|
|
15
15
|
const containerRuntime_js_1 = require("./containerRuntime.js");
|
|
16
16
|
const dataStore_js_1 = require("./dataStore.js");
|
|
17
17
|
const dataStoreContext_js_1 = require("./dataStoreContext.js");
|
|
@@ -160,7 +160,7 @@ class ChannelCollection {
|
|
|
160
160
|
this.pendingAttach = new Map();
|
|
161
161
|
// 0.24 back-compat attachingBeforeSummary
|
|
162
162
|
this.attachOpFiredForDataStore = new Set();
|
|
163
|
-
this.disposeOnce = new
|
|
163
|
+
this.disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
|
|
164
164
|
// Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
|
|
165
165
|
// root data stores that are added.
|
|
166
166
|
this.dataStoresSinceLastGC = [];
|
|
@@ -168,10 +168,11 @@ class ChannelCollection {
|
|
|
168
168
|
/** For sampling. Only log once per container */
|
|
169
169
|
this.shouldSendAttachLog = true;
|
|
170
170
|
this.dispose = () => this.disposeOnce.value;
|
|
171
|
-
this.mc = (0,
|
|
171
|
+
this.mc = (0, internal_6.createChildMonitoringContext)({ logger: baseLogger });
|
|
172
172
|
this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
|
|
173
|
-
this.containerRuntimeHandle = new
|
|
174
|
-
this.entryPoint = new
|
|
173
|
+
this.containerRuntimeHandle = new internal_2.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
|
|
174
|
+
this.entryPoint = new internal_2.FluidObjectHandle(new internal_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
|
|
175
|
+
this.aliasedDataStores = new Set(aliasMap.values());
|
|
175
176
|
// Extract stores stored inside the snapshot
|
|
176
177
|
const fluidDataStores = new Map();
|
|
177
178
|
if (baseSnapshot) {
|
|
@@ -196,14 +197,14 @@ class ChannelCollection {
|
|
|
196
197
|
storage: this.parentContext.storage,
|
|
197
198
|
scope: this.parentContext.scope,
|
|
198
199
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
199
|
-
type:
|
|
200
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
200
201
|
}),
|
|
201
202
|
loadingGroupId: value.groupId,
|
|
202
203
|
});
|
|
203
204
|
}
|
|
204
205
|
else {
|
|
205
206
|
if (typeof value !== "object") {
|
|
206
|
-
throw new
|
|
207
|
+
throw new internal_6.LoggingError("Snapshot should be there to load from!!");
|
|
207
208
|
}
|
|
208
209
|
const snapshotTree = value;
|
|
209
210
|
dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
|
|
@@ -213,7 +214,7 @@ class ChannelCollection {
|
|
|
213
214
|
storage: this.parentContext.storage,
|
|
214
215
|
scope: this.parentContext.scope,
|
|
215
216
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
216
|
-
type:
|
|
217
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
217
218
|
}),
|
|
218
219
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
|
|
219
220
|
snapshotTree,
|
|
@@ -251,7 +252,7 @@ class ChannelCollection {
|
|
|
251
252
|
const attachMessage = message.contents;
|
|
252
253
|
this.dataStoresSinceLastGC.push(attachMessage.id);
|
|
253
254
|
// We need to process the GC Data for both local and remote attach messages
|
|
254
|
-
const foundGCData = (0,
|
|
255
|
+
const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
|
|
255
256
|
// nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
|
|
256
257
|
const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
|
|
257
258
|
this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
|
|
@@ -262,18 +263,18 @@ class ChannelCollection {
|
|
|
262
263
|
this.shouldSendAttachLog = false;
|
|
263
264
|
this.mc.logger.sendTelemetryEvent({
|
|
264
265
|
eventName: "dataStoreAttachMessage_sampled",
|
|
265
|
-
...(0,
|
|
266
|
+
...(0, internal_6.tagCodeArtifacts)({ id: attachMessage.id, pkg: attachMessage.type }),
|
|
266
267
|
details: {
|
|
267
268
|
local,
|
|
268
269
|
snapshot: !!attachMessage.snapshot,
|
|
269
270
|
foundGCData,
|
|
270
271
|
},
|
|
271
|
-
...(0,
|
|
272
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
272
273
|
});
|
|
273
274
|
}
|
|
274
275
|
// The local object has already been attached
|
|
275
276
|
if (local) {
|
|
276
|
-
(0,
|
|
277
|
+
(0, internal_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
|
|
277
278
|
this.contexts.get(attachMessage.id)?.setAttachState(container_definitions_1.AttachState.Attached);
|
|
278
279
|
this.pendingAttach.delete(attachMessage.id);
|
|
279
280
|
return;
|
|
@@ -281,18 +282,18 @@ class ChannelCollection {
|
|
|
281
282
|
// If a non-local operation then go and create the object, otherwise mark it as officially attached.
|
|
282
283
|
if (this.alreadyProcessed(attachMessage.id)) {
|
|
283
284
|
// TODO: dataStoreId may require a different tag from PackageData #7488
|
|
284
|
-
const error = new
|
|
285
|
+
const error = new internal_6.DataCorruptionError(
|
|
285
286
|
// pre-0.58 error message: duplicateDataStoreCreatedWithExistingId
|
|
286
287
|
"Duplicate DataStore created with existing id", {
|
|
287
|
-
...(0,
|
|
288
|
-
...(0,
|
|
288
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
289
|
+
...(0, internal_6.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
|
|
289
290
|
});
|
|
290
291
|
throw error;
|
|
291
292
|
}
|
|
292
293
|
const flatAttachBlobs = new Map();
|
|
293
294
|
let snapshotTree;
|
|
294
295
|
if (attachMessage.snapshot) {
|
|
295
|
-
snapshotTree = (0,
|
|
296
|
+
snapshotTree = (0, internal_3.buildSnapshotTree)(attachMessage.snapshot.entries, flatAttachBlobs);
|
|
296
297
|
}
|
|
297
298
|
// Include the type of attach message which is the pkg of the store to be
|
|
298
299
|
// used by RemoteFluidDataStoreContext in case it is not in the snapshot.
|
|
@@ -305,7 +306,7 @@ class ChannelCollection {
|
|
|
305
306
|
scope: this.parentContext.scope,
|
|
306
307
|
loadingGroupId: attachMessage.snapshot?.groupId,
|
|
307
308
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
|
|
308
|
-
type:
|
|
309
|
+
type: internal_4.CreateSummarizerNodeSource.FromAttach,
|
|
309
310
|
sequenceNumber: message.sequenceNumber,
|
|
310
311
|
snapshot: attachMessage.snapshot ?? {
|
|
311
312
|
entries: [(0, dataStoreContext_js_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
|
|
@@ -318,8 +319,8 @@ class ChannelCollection {
|
|
|
318
319
|
processAliasMessage(message, localOpMetadata, local) {
|
|
319
320
|
const aliasMessage = message.contents;
|
|
320
321
|
if (!(0, dataStore_js_1.isDataStoreAliasMessage)(aliasMessage)) {
|
|
321
|
-
throw new
|
|
322
|
-
...(0,
|
|
322
|
+
throw new internal_6.DataCorruptionError("malformedDataStoreAliasMessage", {
|
|
323
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
323
324
|
});
|
|
324
325
|
}
|
|
325
326
|
const resolve = localOpMetadata;
|
|
@@ -345,9 +346,10 @@ class ChannelCollection {
|
|
|
345
346
|
});
|
|
346
347
|
return false;
|
|
347
348
|
}
|
|
348
|
-
const handle = new
|
|
349
|
+
const handle = new internal_2.FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
|
|
349
350
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
350
351
|
this.aliasMap.set(alias, context.id);
|
|
352
|
+
this.aliasedDataStores.add(context.id);
|
|
351
353
|
context.setInMemoryRoot();
|
|
352
354
|
return true;
|
|
353
355
|
}
|
|
@@ -359,7 +361,7 @@ class ChannelCollection {
|
|
|
359
361
|
const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
|
|
360
362
|
const type = localContext.packagePath[localContext.packagePath.length - 1];
|
|
361
363
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
362
|
-
const snapshot = (0,
|
|
364
|
+
const snapshot = (0, internal_5.convertSummaryTreeToITree)(attachSummary.summary);
|
|
363
365
|
return {
|
|
364
366
|
id: localContext.id,
|
|
365
367
|
snapshot,
|
|
@@ -373,7 +375,7 @@ class ChannelCollection {
|
|
|
373
375
|
*/
|
|
374
376
|
makeDataStoreLocallyVisible(id) {
|
|
375
377
|
const localContext = this.contexts.getUnbound(id);
|
|
376
|
-
(0,
|
|
378
|
+
(0, internal_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
|
|
377
379
|
/**
|
|
378
380
|
* If the container is not detached, it is globally visible to all clients. This data store should also be
|
|
379
381
|
* globally visible. Move it to attaching state and send an "attach" op for it.
|
|
@@ -415,11 +417,11 @@ class ChannelCollection {
|
|
|
415
417
|
// In first two cases we will encode result as strings in more compact form.
|
|
416
418
|
if (this.parentContext.attachState === container_definitions_1.AttachState.Detached) {
|
|
417
419
|
// container is detached, only one client observes content, no way to hit collisions with other clients.
|
|
418
|
-
return (0,
|
|
420
|
+
return (0, internal_5.encodeCompactIdToString)(2 * this.contexts.size);
|
|
419
421
|
}
|
|
420
422
|
const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
|
|
421
423
|
if (typeof id === "number") {
|
|
422
|
-
return (0,
|
|
424
|
+
return (0, internal_5.encodeCompactIdToString)(2 * id + 1);
|
|
423
425
|
}
|
|
424
426
|
return id;
|
|
425
427
|
}
|
|
@@ -438,13 +440,13 @@ class ChannelCollection {
|
|
|
438
440
|
storage: this.parentContext.storage,
|
|
439
441
|
scope: this.parentContext.scope,
|
|
440
442
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
441
|
-
type:
|
|
443
|
+
type: internal_4.CreateSummarizerNodeSource.Local,
|
|
442
444
|
}),
|
|
443
445
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
444
446
|
snapshotTree: undefined,
|
|
445
447
|
createProps,
|
|
446
448
|
loadingGroupId,
|
|
447
|
-
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0,
|
|
449
|
+
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, internal_6.createChildLogger)({ logger: this.parentContext.logger })),
|
|
448
450
|
});
|
|
449
451
|
this.contexts.addUnbound(context);
|
|
450
452
|
return context;
|
|
@@ -461,7 +463,7 @@ class ChannelCollection {
|
|
|
461
463
|
case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
|
|
462
464
|
return this.reSubmitChannelOp(type, content, localOpMetadata);
|
|
463
465
|
default:
|
|
464
|
-
(0,
|
|
466
|
+
(0, internal_1.assert)(false, 0x907 /* unknown op type */);
|
|
465
467
|
}
|
|
466
468
|
}
|
|
467
469
|
reSubmitChannelOp(type, content, localOpMetadata) {
|
|
@@ -470,28 +472,28 @@ class ChannelCollection {
|
|
|
470
472
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
471
473
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
472
474
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "resubmitDataStoreOp")) {
|
|
473
|
-
throw new
|
|
475
|
+
throw new internal_6.DataCorruptionError("Context is deleted!", {
|
|
474
476
|
callSite: "resubmitDataStoreOp",
|
|
475
|
-
...(0,
|
|
477
|
+
...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
|
|
476
478
|
});
|
|
477
479
|
}
|
|
478
|
-
(0,
|
|
480
|
+
(0, internal_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
|
|
479
481
|
const innerContents = envelope.contents;
|
|
480
482
|
context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
|
|
481
483
|
}
|
|
482
484
|
rollback(type, content, localOpMetadata) {
|
|
483
|
-
(0,
|
|
485
|
+
(0, internal_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
|
|
484
486
|
const envelope = content;
|
|
485
487
|
const context = this.contexts.get(envelope.address);
|
|
486
488
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
487
489
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
488
490
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "rollbackDataStoreOp")) {
|
|
489
|
-
throw new
|
|
491
|
+
throw new internal_6.DataCorruptionError("Context is deleted!", {
|
|
490
492
|
callSite: "rollbackDataStoreOp",
|
|
491
|
-
...(0,
|
|
493
|
+
...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
|
|
492
494
|
});
|
|
493
495
|
}
|
|
494
|
-
(0,
|
|
496
|
+
(0, internal_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
|
|
495
497
|
const innerContents = envelope.contents;
|
|
496
498
|
context.rollback(innerContents.type, innerContents.content, localOpMetadata);
|
|
497
499
|
}
|
|
@@ -505,7 +507,7 @@ class ChannelCollection {
|
|
|
505
507
|
case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
|
|
506
508
|
return this.applyStashedChannelChannelOp(opContents.contents);
|
|
507
509
|
default:
|
|
508
|
-
(0,
|
|
510
|
+
(0, internal_1.assert)(false, 0x908 /* unknon type of op */);
|
|
509
511
|
}
|
|
510
512
|
}
|
|
511
513
|
async applyStashedChannelChannelOp(envelope) {
|
|
@@ -515,14 +517,14 @@ class ChannelCollection {
|
|
|
515
517
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "applyStashedOp")) {
|
|
516
518
|
return undefined;
|
|
517
519
|
}
|
|
518
|
-
(0,
|
|
520
|
+
(0, internal_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
|
|
519
521
|
return context.applyStashedOp(envelope.contents);
|
|
520
522
|
}
|
|
521
523
|
async applyStashedAttachOp(message) {
|
|
522
524
|
const { id, snapshot } = message;
|
|
523
525
|
// build the snapshot from the summary in the attach message
|
|
524
526
|
const flatAttachBlobs = new Map();
|
|
525
|
-
const snapshotTree = (0,
|
|
527
|
+
const snapshotTree = (0, internal_3.buildSnapshotTree)(snapshot.entries, flatAttachBlobs);
|
|
526
528
|
const storage = new storageServiceWithAttachBlobs_js_1.StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs);
|
|
527
529
|
// create a local datastore context for the data store context,
|
|
528
530
|
// which this message represents. All newly created data store
|
|
@@ -536,7 +538,7 @@ class ChannelCollection {
|
|
|
536
538
|
storage,
|
|
537
539
|
scope: this.parentContext.scope,
|
|
538
540
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
539
|
-
type:
|
|
541
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
540
542
|
}),
|
|
541
543
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
542
544
|
snapshotTree,
|
|
@@ -583,7 +585,7 @@ class ChannelCollection {
|
|
|
583
585
|
break;
|
|
584
586
|
}
|
|
585
587
|
default:
|
|
586
|
-
(0,
|
|
588
|
+
(0, internal_1.assert)(false, 0x8e9 /* unreached */);
|
|
587
589
|
}
|
|
588
590
|
}
|
|
589
591
|
processChannelOp(address, message, local, localMessageMetadata) {
|
|
@@ -595,13 +597,13 @@ class ChannelCollection {
|
|
|
595
597
|
}
|
|
596
598
|
if (context === undefined) {
|
|
597
599
|
// Former assert 0x162
|
|
598
|
-
throw
|
|
600
|
+
throw internal_6.DataProcessingError.create("No context for op", "processFluidDataStoreOp", message, {
|
|
599
601
|
local,
|
|
600
602
|
messageDetails: JSON.stringify({
|
|
601
603
|
type: message.type,
|
|
602
604
|
contentType: typeof message.contents,
|
|
603
605
|
}),
|
|
604
|
-
...(0,
|
|
606
|
+
...(0, internal_6.tagCodeArtifacts)({ address }),
|
|
605
607
|
});
|
|
606
608
|
}
|
|
607
609
|
context.process(message, local, localMessageMetadata);
|
|
@@ -614,13 +616,13 @@ class ChannelCollection {
|
|
|
614
616
|
if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
|
|
615
617
|
// The requested data store has been deleted by gc. Create a 404 response exception.
|
|
616
618
|
const request = { url: id };
|
|
617
|
-
throw (0,
|
|
619
|
+
throw (0, internal_5.responseToException)((0, internal_5.createResponseError)(404, "DataStore was deleted", request), request);
|
|
618
620
|
}
|
|
619
621
|
const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
|
|
620
622
|
if (context === undefined) {
|
|
621
623
|
// The requested data store does not exits. Throw a 404 response exception.
|
|
622
624
|
const request = { url: id };
|
|
623
|
-
throw (0,
|
|
625
|
+
throw (0, internal_5.responseToException)((0, internal_5.create404Response)(request), request);
|
|
624
626
|
}
|
|
625
627
|
return context;
|
|
626
628
|
}
|
|
@@ -654,7 +656,7 @@ class ChannelCollection {
|
|
|
654
656
|
}
|
|
655
657
|
this.mc.logger.sendErrorEvent({
|
|
656
658
|
eventName: `GC_Deleted_DataStore_${deletedLogSuffix}`,
|
|
657
|
-
...(0,
|
|
659
|
+
...(0, internal_6.tagCodeArtifacts)({ id }),
|
|
658
660
|
callSite,
|
|
659
661
|
headers: JSON.stringify(requestHeaderData),
|
|
660
662
|
exists: context !== undefined,
|
|
@@ -673,10 +675,10 @@ class ChannelCollection {
|
|
|
673
675
|
}
|
|
674
676
|
if (!context) {
|
|
675
677
|
// Attach message may not have been processed yet
|
|
676
|
-
(0,
|
|
678
|
+
(0, internal_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
|
|
677
679
|
this.mc.logger.sendTelemetryEvent({
|
|
678
680
|
eventName: "SignalFluidDataStoreNotFound",
|
|
679
|
-
...(0,
|
|
681
|
+
...(0, internal_6.tagCodeArtifacts)({
|
|
680
682
|
fluidDataStoreId,
|
|
681
683
|
}),
|
|
682
684
|
});
|
|
@@ -693,7 +695,7 @@ class ChannelCollection {
|
|
|
693
695
|
this.mc.logger.sendErrorEvent({
|
|
694
696
|
eventName: "SetConnectionStateError",
|
|
695
697
|
clientId,
|
|
696
|
-
...(0,
|
|
698
|
+
...(0, internal_6.tagCodeArtifacts)({
|
|
697
699
|
fluidDataStoreId,
|
|
698
700
|
}),
|
|
699
701
|
details: JSON.stringify({
|
|
@@ -716,7 +718,7 @@ class ChannelCollection {
|
|
|
716
718
|
return this.contexts.size;
|
|
717
719
|
}
|
|
718
720
|
async summarize(fullTree, trackState, telemetryContext) {
|
|
719
|
-
const summaryBuilder = new
|
|
721
|
+
const summaryBuilder = new internal_5.SummaryTreeBuilder();
|
|
720
722
|
// Iterate over each store and ask it to snapshot
|
|
721
723
|
await Promise.all(Array.from(this.contexts)
|
|
722
724
|
.filter(([_, context]) => {
|
|
@@ -725,7 +727,7 @@ class ChannelCollection {
|
|
|
725
727
|
// had not yet round tripped back to the client.
|
|
726
728
|
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
727
729
|
// Formerly assert 0x588
|
|
728
|
-
const error =
|
|
730
|
+
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
|
|
729
731
|
throw error;
|
|
730
732
|
}
|
|
731
733
|
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
@@ -740,7 +742,7 @@ class ChannelCollection {
|
|
|
740
742
|
* Create a summary. Used when attaching or serializing a detached container.
|
|
741
743
|
*/
|
|
742
744
|
getAttachSummary(telemetryContext) {
|
|
743
|
-
const builder = new
|
|
745
|
+
const builder = new internal_5.SummaryTreeBuilder();
|
|
744
746
|
// Attaching graph of some stores can cause other stores to get bound too.
|
|
745
747
|
// So keep taking summary until no new stores get bound.
|
|
746
748
|
let notBoundContextsLength;
|
|
@@ -765,8 +767,8 @@ class ChannelCollection {
|
|
|
765
767
|
else {
|
|
766
768
|
// If this data store is not yet loaded, then there should be no changes in the snapshot from
|
|
767
769
|
// which it was created as it is detached container. So just use the previous snapshot.
|
|
768
|
-
(0,
|
|
769
|
-
dataStoreSummary = (0,
|
|
770
|
+
(0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
|
|
771
|
+
dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
|
|
770
772
|
}
|
|
771
773
|
builder.addWithStats(key, dataStoreSummary);
|
|
772
774
|
});
|
|
@@ -781,10 +783,10 @@ class ChannelCollection {
|
|
|
781
783
|
async updateStateBeforeGC() {
|
|
782
784
|
for (const id of this.dataStoresSinceLastGC) {
|
|
783
785
|
const context = this.contexts.get(id);
|
|
784
|
-
(0,
|
|
786
|
+
(0, internal_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
|
|
785
787
|
if (await context.isRoot()) {
|
|
786
788
|
// A root data store is basically a reference from the container runtime to the data store.
|
|
787
|
-
const handle = new
|
|
789
|
+
const handle = new internal_2.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
|
|
788
790
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
789
791
|
}
|
|
790
792
|
}
|
|
@@ -804,7 +806,7 @@ class ChannelCollection {
|
|
|
804
806
|
* @param fullGC - true to bypass optimizations and force full generation of GC data.
|
|
805
807
|
*/
|
|
806
808
|
async getGCData(fullGC = false) {
|
|
807
|
-
const builder = new
|
|
809
|
+
const builder = new internal_5.GCDataBuilder();
|
|
808
810
|
// Iterate over each store and get their GC data.
|
|
809
811
|
await Promise.all(Array.from(this.contexts)
|
|
810
812
|
.filter(([_, context]) => {
|
|
@@ -813,7 +815,7 @@ class ChannelCollection {
|
|
|
813
815
|
// had not yet round tripped back to the client.
|
|
814
816
|
// Formerly assert 0x589
|
|
815
817
|
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
816
|
-
const error =
|
|
818
|
+
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
|
|
817
819
|
throw error;
|
|
818
820
|
}
|
|
819
821
|
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
@@ -834,10 +836,10 @@ class ChannelCollection {
|
|
|
834
836
|
*/
|
|
835
837
|
updateUsedRoutes(usedRoutes) {
|
|
836
838
|
// Get a map of data store ids to routes used in it.
|
|
837
|
-
const usedDataStoreRoutes = (0,
|
|
839
|
+
const usedDataStoreRoutes = (0, internal_5.unpackChildNodesUsedRoutes)(usedRoutes);
|
|
838
840
|
// Verify that the used routes are correct.
|
|
839
841
|
for (const [id] of usedDataStoreRoutes) {
|
|
840
|
-
(0,
|
|
842
|
+
(0, internal_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
|
|
841
843
|
}
|
|
842
844
|
// Update the used routes in each data store. Used routes is empty for unused data stores.
|
|
843
845
|
for (const [contextId, context] of this.contexts) {
|
|
@@ -846,7 +848,7 @@ class ChannelCollection {
|
|
|
846
848
|
}
|
|
847
849
|
deleteChild(dataStoreId) {
|
|
848
850
|
const dataStoreContext = this.contexts.get(dataStoreId);
|
|
849
|
-
(0,
|
|
851
|
+
(0, internal_1.assert)(dataStoreContext !== undefined, 0x2d7 /* No data store with specified id */);
|
|
850
852
|
dataStoreContext.delete();
|
|
851
853
|
// Delete the contexts of unused data stores.
|
|
852
854
|
this.contexts.delete(dataStoreId);
|
|
@@ -878,7 +880,7 @@ class ChannelCollection {
|
|
|
878
880
|
this.mc.logger.sendTelemetryEvent({
|
|
879
881
|
eventName: "DeletedDataStoreNotFound",
|
|
880
882
|
category: alreadyDeleted ? "generic" : "error",
|
|
881
|
-
...(0,
|
|
883
|
+
...(0, internal_6.tagCodeArtifacts)({ id: dataStoreId }),
|
|
882
884
|
details: { alreadyDeleted },
|
|
883
885
|
});
|
|
884
886
|
continue;
|
|
@@ -904,7 +906,7 @@ class ChannelCollection {
|
|
|
904
906
|
continue;
|
|
905
907
|
}
|
|
906
908
|
const dataStoreId = pathParts[1];
|
|
907
|
-
(0,
|
|
909
|
+
(0, internal_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
|
|
908
910
|
tombstonedDataStoresSet.add(dataStoreId);
|
|
909
911
|
}
|
|
910
912
|
// Update the used routes in each data store. Used routes is empty for unused data stores.
|
|
@@ -918,8 +920,9 @@ class ChannelCollection {
|
|
|
918
920
|
*/
|
|
919
921
|
async getOutboundRoutes() {
|
|
920
922
|
const outboundRoutes = [];
|
|
923
|
+
// Getting this information is a performance optimization that reduces network calls for virtualized datastores
|
|
921
924
|
for (const [contextId, context] of this.contexts) {
|
|
922
|
-
const isRootDataStore = await context.isRoot();
|
|
925
|
+
const isRootDataStore = await context.isRoot(this.aliasedDataStores);
|
|
923
926
|
if (isRootDataStore) {
|
|
924
927
|
outboundRoutes.push(`/${contextId}`);
|
|
925
928
|
}
|
|
@@ -955,7 +958,7 @@ class ChannelCollection {
|
|
|
955
958
|
return this.aliases.get(maybeAlias) ?? maybeAlias;
|
|
956
959
|
}
|
|
957
960
|
async request(request) {
|
|
958
|
-
const requestParser =
|
|
961
|
+
const requestParser = internal_5.RequestParser.create(request);
|
|
959
962
|
const id = requestParser.pathParts[0];
|
|
960
963
|
// Differentiate between requesting the dataStore directly, or one of its children
|
|
961
964
|
const requestForChild = !requestParser.isLeaf(1);
|
|
@@ -991,7 +994,7 @@ class ChannelCollection {
|
|
|
991
994
|
const subRequest = requestParser.createSubRequest(1);
|
|
992
995
|
// We always expect createSubRequest to include a leading slash, but asserting here to protect against
|
|
993
996
|
// unintentionally modifying the url if that changes.
|
|
994
|
-
(0,
|
|
997
|
+
(0, internal_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
|
|
995
998
|
return dataStore.request(subRequest);
|
|
996
999
|
}
|
|
997
1000
|
}
|
|
@@ -1001,8 +1004,8 @@ function getSummaryForDatastores(snapshot, metadata) {
|
|
|
1001
1004
|
return undefined;
|
|
1002
1005
|
}
|
|
1003
1006
|
if ((0, index_js_2.rootHasIsolatedChannels)(metadata)) {
|
|
1004
|
-
const datastoresSnapshot = snapshot.trees[
|
|
1005
|
-
(0,
|
|
1007
|
+
const datastoresSnapshot = snapshot.trees[internal_4.channelsTreeName];
|
|
1008
|
+
(0, internal_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
|
|
1006
1009
|
return datastoresSnapshot;
|
|
1007
1010
|
}
|
|
1008
1011
|
else {
|
|
@@ -1033,7 +1036,7 @@ function detectOutboundReferences(address, contents, addedOutboundReference) {
|
|
|
1033
1036
|
if (typeof obj === "object" && obj !== null) {
|
|
1034
1037
|
for (const [key, value] of Object.entries(obj)) {
|
|
1035
1038
|
// If 'value' is a serialized IFluidHandle, it represents a new outbound route.
|
|
1036
|
-
if ((0,
|
|
1039
|
+
if ((0, internal_5.isSerializedHandle)(value)) {
|
|
1037
1040
|
outboundPaths.push(value.url);
|
|
1038
1041
|
}
|
|
1039
1042
|
// NOTE: This is taking a hard dependency on the fact that in our DataStore implementation,
|