@fluidframework/container-runtime 2.0.0-rc.2.0.1 → 2.0.0-rc.3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/api-report/container-runtime.api.md +471 -52
- package/dist/batchTracker.d.ts +1 -1
- 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 +33 -30
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +82 -107
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +27 -22
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +189 -165
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +3 -3
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +17 -17
- package/dist/connectionTelemetry.js.map +1 -1
- 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 +42 -39
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +425 -292
- 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 +8 -8
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +58 -19
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +171 -114
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -0
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +12 -11
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +5 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +4 -4
- 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 +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 +3 -2
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +23 -23
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +2 -2
- 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 +4 -5
- 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 +2 -2
- 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/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +91 -0
- package/dist/messageTypes.d.ts +11 -5
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js +4 -0
- 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 +2 -20
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +3 -3
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +3 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +5 -6
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +15 -4
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +62 -63
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +2 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +14 -16
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +12 -4
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +63 -53
- 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 +30 -29
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +8 -0
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +36 -32
- 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 +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/public.d.ts +12 -0
- package/dist/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +28 -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 +209 -0
- package/dist/summary/documentSchema.d.ts.map +1 -0
- package/dist/summary/documentSchema.js +390 -0
- package/dist/summary/documentSchema.js.map +1 -0
- package/dist/summary/index.d.ts +2 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +4 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +2 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +12 -7
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +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 +3 -3
- 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 +3 -2
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +13 -13
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +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 +3 -2
- 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 +5 -3
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +2 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +7 -7
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +6 -17
- 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 +4 -3
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +17 -17
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +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/internal.d.ts +11 -0
- package/legacy.d.ts +11 -0
- package/lib/batchTracker.d.ts +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 +33 -30
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +48 -73
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +27 -22
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +132 -108
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +3 -3
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +3 -3
- package/lib/connectionTelemetry.js.map +1 -1
- 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 +42 -39
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +276 -141
- 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 +3 -3
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +58 -19
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +110 -53
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +1 -0
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +3 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +5 -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 +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 +3 -2
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +8 -8
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +2 -2
- 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 +4 -5
- 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 +2 -2
- 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 +4 -2
- 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/index.d.ts +5 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +91 -0
- package/lib/messageTypes.d.ts +11 -5
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js +4 -0
- 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 +2 -20
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +3 -3
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +2 -2
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +2 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +15 -4
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +61 -62
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +2 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +9 -12
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +12 -4
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +47 -38
- 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 +19 -18
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +8 -0
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +36 -32
- 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 +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/public.d.ts +12 -0
- package/lib/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +7 -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 +209 -0
- package/lib/summary/documentSchema.d.ts.map +1 -0
- package/lib/summary/documentSchema.js +386 -0
- package/lib/summary/documentSchema.js.map +1 -0
- package/lib/summary/index.d.ts +2 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -0
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +2 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +7 -2
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +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 +3 -3
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +3 -3
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +3 -2
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +3 -3
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +2 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +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 +3 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +5 -5
- 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 +5 -3
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +2 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +1 -1
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +6 -17
- 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 +4 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +4 -4
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +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/package.json +57 -65
- package/src/batchTracker.ts +4 -3
- package/src/blobManager.ts +100 -77
- package/src/channelCollection.ts +223 -167
- package/src/connectionTelemetry.ts +12 -12
- package/src/containerHandleContext.ts +3 -2
- package/src/containerRuntime.ts +481 -277
- package/src/dataStore.ts +9 -4
- package/src/dataStoreContext.ts +201 -97
- package/src/dataStoreContexts.ts +5 -2
- package/src/dataStoreRegistry.ts +3 -2
- package/src/deltaManagerSummarizerProxy.ts +1 -1
- package/src/deltaScheduler.ts +2 -1
- package/src/error.ts +2 -2
- package/src/gc/garbageCollection.ts +21 -20
- package/src/gc/gcConfigs.ts +15 -18
- package/src/gc/gcDefinitions.ts +6 -8
- package/src/gc/gcHelpers.ts +22 -5
- package/src/gc/gcSummaryStateTracker.ts +7 -5
- package/src/gc/gcTelemetry.ts +13 -7
- package/src/gc/gcUnreferencedStateTracker.ts +3 -2
- package/src/gc/index.ts +1 -0
- package/src/index.ts +22 -1
- package/src/messageTypes.ts +20 -6
- package/src/opLifecycle/README.md +89 -0
- package/src/opLifecycle/batchManager.ts +1 -0
- package/src/opLifecycle/definitions.ts +3 -21
- package/src/opLifecycle/index.ts +3 -9
- package/src/opLifecycle/opCompressor.ts +6 -5
- package/src/opLifecycle/opDecompressor.ts +90 -100
- package/src/opLifecycle/opGroupingManager.ts +12 -14
- package/src/opLifecycle/opSplitter.ts +76 -48
- package/src/opLifecycle/outbox.ts +30 -38
- package/src/opLifecycle/remoteMessageProcessor.ts +43 -55
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +6 -6
- package/src/scheduleManager.ts +10 -8
- package/src/storageServiceWithAttachBlobs.ts +2 -2
- package/src/summary/documentSchema.ts +631 -0
- package/src/summary/index.ts +10 -1
- package/src/summary/orderedClientElection.ts +7 -7
- package/src/summary/runWhileConnectedCoordinator.ts +3 -2
- package/src/summary/runningSummarizer.ts +22 -20
- package/src/summary/summarizer.ts +17 -15
- package/src/summary/summarizerClientElection.ts +3 -2
- package/src/summary/summarizerHeuristics.ts +4 -2
- package/src/summary/summarizerNode/summarizerNode.ts +20 -18
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -2
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +16 -8
- package/src/summary/summarizerTypes.ts +7 -3
- package/src/summary/summaryCollection.ts +3 -3
- package/src/summary/summaryFormat.ts +14 -26
- package/src/summary/summaryGenerator.ts +12 -15
- package/src/summary/summaryManager.ts +16 -13
- package/api-extractor-cjs.json +0 -8
- package/dist/container-runtime-alpha.d.ts +0 -1753
- package/dist/container-runtime-beta.d.ts +0 -268
- package/dist/container-runtime-public.d.ts +0 -268
- package/dist/container-runtime-untrimmed.d.ts +0 -1893
- package/lib/container-runtime-alpha.d.ts +0 -1753
- package/lib/container-runtime-beta.d.ts +0 -268
- package/lib/container-runtime-public.d.ts +0 -268
- package/lib/container-runtime-untrimmed.d.ts +0 -1893
- 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 -141
- package/lib/test/channelCollection.spec.js.map +0 -1
- package/lib/test/containerRuntime.spec.js +0 -1748
- package/lib/test/containerRuntime.spec.js.map +0 -1
- package/lib/test/dataStoreContext.spec.js +0 -801
- package/lib/test/dataStoreContext.spec.js.map +0 -1
- package/lib/test/dataStoreCreation.spec.js +0 -312
- 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/fuzz/fuzzUtils.js +0 -66
- package/lib/test/fuzz/fuzzUtils.js.map +0 -1
- package/lib/test/fuzz/summarizer.fuzz.spec.js +0 -31
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzMocks.js +0 -162
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzSuite.js +0 -106
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +0 -1
- package/lib/test/gc/garbageCollection.spec.js +0 -1465
- package/lib/test/gc/garbageCollection.spec.js.map +0 -1
- package/lib/test/gc/gcConfigs.spec.js +0 -690
- 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 -391
- 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 -225
- 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 -74
- package/lib/test/opLifecycle/opCompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opDecompressor.spec.js +0 -218
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opSplitter.spec.js +0 -272
- package/lib/test/opLifecycle/opSplitter.spec.js.map +0 -1
- package/lib/test/opLifecycle/outbox.spec.js +0 -675
- package/lib/test/opLifecycle/outbox.spec.js.map +0 -1
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +0 -196
- 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 -180
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +0 -1
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
|
@@ -2,13 +2,15 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { ITelemetryBaseLogger, IDisposable, IFluidHandle, IRequest, FluidObject, IResponse } from "@fluidframework/core-interfaces";
|
|
6
|
-
import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
7
|
-
import { AliasResult, IEnvelope, IFluidDataStoreChannel, IFluidDataStoreContextDetached, IGarbageCollectionData, IInboundSignalMessage, IFluidParentContext, ISummaryTreeWithStats, ITelemetryContext, IFluidDataStoreFactory, IFluidDataStoreContext, NamedFluidDataStoreRegistryEntries, IFluidDataStoreRegistry } from "@fluidframework/runtime-definitions";
|
|
8
5
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
6
|
+
import { FluidObject, IDisposable, IFluidHandle, IRequest, IResponse, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
|
+
import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
8
|
+
import { IGarbageCollectionData, IInboundSignalMessage, ISummaryTreeWithStats, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
9
|
+
import { AliasResult, IEnvelope, IFluidDataStoreChannel, IFluidDataStoreContext, IFluidDataStoreContextDetached, IFluidDataStoreFactory, IFluidDataStoreRegistry, IFluidParentContext, NamedFluidDataStoreRegistryEntries } from "@fluidframework/runtime-definitions/internal";
|
|
10
|
+
import { MonitoringContext } from "@fluidframework/telemetry-utils/internal";
|
|
9
11
|
import { RuntimeHeaderData } from "./containerRuntime.js";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
+
import { IFluidDataStoreContextInternal, ILocalDetachedFluidDataStoreContextProps, LocalFluidDataStoreContext } from "./dataStoreContext.js";
|
|
13
|
+
import { DataStoreContexts } from "./dataStoreContexts.js";
|
|
12
14
|
import { GCNodeType } from "./gc/index.js";
|
|
13
15
|
import { IContainerRuntimeMetadata } from "./summary/index.js";
|
|
14
16
|
/**
|
|
@@ -49,14 +51,14 @@ export declare function wrapContextForInnerChannel(id: string, parentContext: IF
|
|
|
49
51
|
* @internal
|
|
50
52
|
*/
|
|
51
53
|
export declare class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
|
|
52
|
-
|
|
54
|
+
protected readonly baseSnapshot: ISnapshotTree | undefined;
|
|
53
55
|
readonly parentContext: IFluidParentContext;
|
|
54
56
|
private readonly gcNodeUpdated;
|
|
55
57
|
private readonly isDataStoreDeleted;
|
|
56
58
|
private readonly aliasMap;
|
|
57
59
|
private readonly pendingAttach;
|
|
58
60
|
readonly attachOpFiredForDataStore: Set<string>;
|
|
59
|
-
|
|
61
|
+
protected readonly mc: MonitoringContext;
|
|
60
62
|
private readonly disposeOnce;
|
|
61
63
|
readonly entryPoint: IFluidHandle<FluidObject>;
|
|
62
64
|
readonly containerLoadStats: {
|
|
@@ -66,14 +68,15 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
|
|
|
66
68
|
private dataStoresSinceLastGC;
|
|
67
69
|
private readonly containerRuntimeHandle;
|
|
68
70
|
private readonly pendingAliasMap;
|
|
69
|
-
|
|
71
|
+
protected readonly contexts: DataStoreContexts;
|
|
72
|
+
private readonly aliasedDataStores;
|
|
70
73
|
constructor(baseSnapshot: ISnapshotTree | undefined, parentContext: IFluidParentContext, baseLogger: ITelemetryBaseLogger, gcNodeUpdated: (nodePath: string, reason: "Loaded" | "Changed", timestampMs?: number, packagePath?: readonly string[], request?: IRequest, headerData?: RuntimeHeaderData) => void, isDataStoreDeleted: (nodePath: string) => boolean, aliasMap: Map<string, string>, provideEntryPoint: (runtime: ChannelCollection) => Promise<FluidObject>);
|
|
71
74
|
get aliases(): ReadonlyMap<string, string>;
|
|
72
75
|
get pendingAliases(): Map<string, Promise<AliasResult>>;
|
|
73
76
|
waitIfPendingAlias(maybeAlias: string): Promise<AliasResult>;
|
|
74
77
|
/** For sampling. Only log once per container */
|
|
75
78
|
private shouldSendAttachLog;
|
|
76
|
-
|
|
79
|
+
protected wrapContextForInnerChannel(id: string): IFluidParentContext;
|
|
77
80
|
/**
|
|
78
81
|
* IFluidDataStoreChannel.makeVisibleAndAttachGraph implementation
|
|
79
82
|
* Not clear when it would be called and what it should do.
|
|
@@ -82,7 +85,7 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
|
|
|
82
85
|
makeVisibleAndAttachGraph(): void;
|
|
83
86
|
private processAttachMessage;
|
|
84
87
|
private processAliasMessage;
|
|
85
|
-
processAliasMessageCore(
|
|
88
|
+
processAliasMessageCore(internalId: string, alias: string): boolean;
|
|
86
89
|
private alreadyProcessed;
|
|
87
90
|
/** Package up the context's attach summary etc into an IAttachMessage */
|
|
88
91
|
private generateAttachMessage;
|
|
@@ -92,6 +95,7 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
|
|
|
92
95
|
* @param id - The id of the data store context to make visible.
|
|
93
96
|
*/
|
|
94
97
|
private makeDataStoreLocallyVisible;
|
|
98
|
+
protected submitAttachChannelOp(localContext: LocalFluidDataStoreContext): void;
|
|
95
99
|
/**
|
|
96
100
|
* Generate compact internal DataStore ID.
|
|
97
101
|
*
|
|
@@ -109,20 +113,24 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
|
|
|
109
113
|
* Please note that above mentioned functions have the implementation they have (allowing #2) due to #1.
|
|
110
114
|
*/
|
|
111
115
|
protected createDataStoreId(): string;
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
createDetachedDataStore(pkg: Readonly<string[]>, loadingGroupId?: string): IFluidDataStoreContextDetached;
|
|
117
|
+
createDataStoreContext(pkg: Readonly<string[]>, props?: any, loadingGroupId?: string): IFluidDataStoreContextInternal;
|
|
118
|
+
protected createContext<T extends LocalFluidDataStoreContext>(id: string, pkg: Readonly<string[]>, contextCtor: new (props: ILocalDetachedFluidDataStoreContextProps) => T, createProps?: any, loadingGroupId?: string): T;
|
|
114
119
|
get disposed(): boolean;
|
|
115
120
|
readonly dispose: () => void;
|
|
116
121
|
reSubmit(type: string, content: any, localOpMetadata: unknown): void;
|
|
122
|
+
protected reSubmitChannelOp(type: string, content: any, localOpMetadata: unknown): void;
|
|
117
123
|
rollback(type: string, content: any, localOpMetadata: unknown): void;
|
|
118
124
|
applyStashedOp(content: unknown): Promise<unknown>;
|
|
125
|
+
protected applyStashedChannelChannelOp(envelope: IEnvelope): Promise<unknown>;
|
|
119
126
|
private applyStashedAttachOp;
|
|
120
127
|
process(message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown, addedOutboundReference?: (fromNodePath: string, toNodePath: string) => void): void;
|
|
121
|
-
|
|
128
|
+
protected processChannelOp(address: string, message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown): void;
|
|
129
|
+
getDataStore(id: string, requestHeaderData: RuntimeHeaderData): Promise<IFluidDataStoreContextInternal>;
|
|
122
130
|
/**
|
|
123
131
|
* Returns the data store requested with the given id if available. Otherwise, returns undefined.
|
|
124
132
|
*/
|
|
125
|
-
getDataStoreIfAvailable(id: string, requestHeaderData: RuntimeHeaderData): Promise<
|
|
133
|
+
getDataStoreIfAvailable(id: string, requestHeaderData: RuntimeHeaderData): Promise<IFluidDataStoreContextInternal | undefined>;
|
|
126
134
|
/**
|
|
127
135
|
* Checks if the data store has been deleted by GC. If so, log an error.
|
|
128
136
|
* @param id - The data store's id.
|
|
@@ -166,11 +174,7 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
|
|
|
166
174
|
* @param usedRoutes - The routes that are used in all data stores in this Container.
|
|
167
175
|
*/
|
|
168
176
|
updateUsedRoutes(usedRoutes: readonly string[]): void;
|
|
169
|
-
|
|
170
|
-
* This is called to update objects whose routes are unused. The unused objects are deleted.
|
|
171
|
-
* @param unusedRoutes - The routes that are unused in all data stores in this Container.
|
|
172
|
-
*/
|
|
173
|
-
updateUnusedRoutes(unusedRoutes: readonly string[]): void;
|
|
177
|
+
deleteChild(dataStoreId: string): void;
|
|
174
178
|
/**
|
|
175
179
|
* Delete data stores and its objects that are sweep ready.
|
|
176
180
|
* @param sweepReadyDataStoreRoutes - The routes of data stores and its objects that are sweep ready and should
|
|
@@ -210,13 +214,14 @@ export declare function getSummaryForDatastores(snapshot: ISnapshotTree | undefi
|
|
|
210
214
|
*
|
|
211
215
|
* @internal
|
|
212
216
|
*/
|
|
213
|
-
export declare function detectOutboundReferences(
|
|
217
|
+
export declare function detectOutboundReferences(address: string, contents: unknown, addedOutboundReference: (fromNodePath: string, toNodePath: string) => void): void;
|
|
214
218
|
/** @internal */
|
|
215
|
-
export declare class ChannelCollectionFactory implements IFluidDataStoreFactory {
|
|
219
|
+
export declare class ChannelCollectionFactory<T extends ChannelCollection = ChannelCollection> implements IFluidDataStoreFactory {
|
|
216
220
|
private readonly provideEntryPoint;
|
|
221
|
+
private readonly ctor;
|
|
217
222
|
readonly type = "ChannelCollectionChannel";
|
|
218
223
|
IFluidDataStoreRegistry: IFluidDataStoreRegistry;
|
|
219
|
-
constructor(registryEntries: NamedFluidDataStoreRegistryEntries, provideEntryPoint: (runtime: IFluidDataStoreChannel) => Promise<FluidObject>);
|
|
224
|
+
constructor(registryEntries: NamedFluidDataStoreRegistryEntries, provideEntryPoint: (runtime: IFluidDataStoreChannel) => Promise<FluidObject>, ctor: (...args: ConstructorParameters<typeof ChannelCollection>) => T);
|
|
220
225
|
get IFluidDataStoreFactory(): this;
|
|
221
226
|
instantiateDataStore(context: IFluidDataStoreContext, _existing: boolean): Promise<IFluidDataStoreChannel>;
|
|
222
227
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACN,
|
|
1
|
+
{"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"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"}
|
package/lib/channelCollection.js
CHANGED
|
@@ -2,22 +2,22 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
import { FluidObjectHandle } from "@fluidframework/datastore";
|
|
6
|
-
import { channelsTreeName, CreateSummarizerNodeSource, } from "@fluidframework/runtime-definitions";
|
|
7
|
-
import { convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, GCDataBuilder, isSerializedHandle, processAttachMessageGCData, responseToException, SummaryTreeBuilder, unpackChildNodesUsedRoutes, RequestParser, encodeCompactIdToString, } from "@fluidframework/runtime-utils";
|
|
8
|
-
import { createChildMonitoringContext, DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, LoggingError, tagCodeArtifacts, createChildLogger, } from "@fluidframework/telemetry-utils";
|
|
9
5
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
6
|
+
import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { FluidObjectHandle } from "@fluidframework/datastore/internal";
|
|
8
|
+
import { buildSnapshotTree } from "@fluidframework/driver-utils/internal";
|
|
9
|
+
import { CreateSummarizerNodeSource, channelsTreeName, } from "@fluidframework/runtime-definitions/internal";
|
|
10
|
+
import { GCDataBuilder, RequestParser, SummaryTreeBuilder, convertSnapshotTreeToSummaryTree, convertSummaryTreeToITree, create404Response, createResponseError, encodeCompactIdToString, isSerializedHandle, processAttachMessageGCData, responseToException, unpackChildNodesUsedRoutes, } from "@fluidframework/runtime-utils/internal";
|
|
11
|
+
import { DataCorruptionError, DataProcessingError, LoggingError, createChildLogger, createChildMonitoringContext, extractSafePropertiesFromMessage, tagCodeArtifacts, } from "@fluidframework/telemetry-utils/internal";
|
|
13
12
|
import { defaultRuntimeHeaderData } from "./containerRuntime.js";
|
|
14
|
-
import { RemoteFluidDataStoreContext, LocalFluidDataStoreContext, createAttributesBlob, LocalDetachedFluidDataStoreContext, } from "./dataStoreContext.js";
|
|
15
|
-
import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.js";
|
|
16
13
|
import { channelToDataStore, isDataStoreAliasMessage, } from "./dataStore.js";
|
|
14
|
+
import { LocalDetachedFluidDataStoreContext, LocalFluidDataStoreContext, RemoteFluidDataStoreContext, createAttributesBlob, } from "./dataStoreContext.js";
|
|
15
|
+
import { DataStoreContexts } from "./dataStoreContexts.js";
|
|
16
|
+
import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
|
|
17
17
|
import { GCNodeType, detectOutboundRoutesViaDDSKey, trimLeadingAndTrailingSlashes, } from "./gc/index.js";
|
|
18
|
-
import { nonDataStorePaths, rootHasIsolatedChannels, } from "./summary/index.js";
|
|
19
18
|
import { ContainerMessageType } from "./messageTypes.js";
|
|
20
|
-
import {
|
|
19
|
+
import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.js";
|
|
20
|
+
import { nonDataStorePaths, rootHasIsolatedChannels, } from "./summary/index.js";
|
|
21
21
|
/**
|
|
22
22
|
* Accepted header keys for requests coming to the runtime.
|
|
23
23
|
* @internal
|
|
@@ -102,7 +102,10 @@ export function wrapContext(context) {
|
|
|
102
102
|
return context.getCreateChildSummarizerNodeFn?.(...args);
|
|
103
103
|
},
|
|
104
104
|
deleteChildSummarizerNode: (...args) => {
|
|
105
|
-
return context.deleteChildSummarizerNode
|
|
105
|
+
return context.deleteChildSummarizerNode(...args);
|
|
106
|
+
},
|
|
107
|
+
setChannelDirty: (address) => {
|
|
108
|
+
return context.setChannelDirty(address);
|
|
106
109
|
},
|
|
107
110
|
};
|
|
108
111
|
}
|
|
@@ -164,6 +167,7 @@ export class ChannelCollection {
|
|
|
164
167
|
this.contexts = new DataStoreContexts(baseLogger);
|
|
165
168
|
this.containerRuntimeHandle = new FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
|
|
166
169
|
this.entryPoint = new FluidObjectHandle(new LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
|
|
170
|
+
this.aliasedDataStores = new Set(aliasMap.values());
|
|
167
171
|
// Extract stores stored inside the snapshot
|
|
168
172
|
const fluidDataStores = new Map();
|
|
169
173
|
if (baseSnapshot) {
|
|
@@ -209,7 +213,6 @@ export class ChannelCollection {
|
|
|
209
213
|
}),
|
|
210
214
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
|
|
211
215
|
snapshotTree,
|
|
212
|
-
isRootDataStore: undefined,
|
|
213
216
|
});
|
|
214
217
|
}
|
|
215
218
|
this.contexts.addBoundOrRemoted(dataStoreContext);
|
|
@@ -267,7 +270,7 @@ export class ChannelCollection {
|
|
|
267
270
|
// The local object has already been attached
|
|
268
271
|
if (local) {
|
|
269
272
|
assert(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
|
|
270
|
-
this.contexts.get(attachMessage.id)?.
|
|
273
|
+
this.contexts.get(attachMessage.id)?.setAttachState(AttachState.Attached);
|
|
271
274
|
this.pendingAttach.delete(attachMessage.id);
|
|
272
275
|
return;
|
|
273
276
|
}
|
|
@@ -316,31 +319,32 @@ export class ChannelCollection {
|
|
|
316
319
|
});
|
|
317
320
|
}
|
|
318
321
|
const resolve = localOpMetadata;
|
|
319
|
-
const aliasResult = this.processAliasMessageCore(aliasMessage);
|
|
322
|
+
const aliasResult = this.processAliasMessageCore(aliasMessage.internalId, aliasMessage.alias);
|
|
320
323
|
if (local) {
|
|
321
324
|
resolve(aliasResult);
|
|
322
325
|
}
|
|
323
326
|
}
|
|
324
|
-
processAliasMessageCore(
|
|
325
|
-
if (this.alreadyProcessed(
|
|
327
|
+
processAliasMessageCore(internalId, alias) {
|
|
328
|
+
if (this.alreadyProcessed(alias)) {
|
|
326
329
|
return false;
|
|
327
330
|
}
|
|
328
|
-
const context = this.contexts.get(
|
|
331
|
+
const context = this.contexts.get(internalId);
|
|
329
332
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
330
333
|
// corruption in case a deleted data store accidentally submitted a signal.
|
|
331
|
-
if (this.checkAndLogIfDeleted(
|
|
334
|
+
if (this.checkAndLogIfDeleted(internalId, context, "Changed", "processAliasMessageCore")) {
|
|
332
335
|
return false;
|
|
333
336
|
}
|
|
334
337
|
if (context === undefined) {
|
|
335
338
|
this.mc.logger.sendErrorEvent({
|
|
336
339
|
eventName: "AliasFluidDataStoreNotFound",
|
|
337
|
-
fluidDataStoreId:
|
|
340
|
+
fluidDataStoreId: internalId,
|
|
338
341
|
});
|
|
339
342
|
return false;
|
|
340
343
|
}
|
|
341
|
-
const handle = new FluidObjectHandle(context,
|
|
344
|
+
const handle = new FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
|
|
342
345
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
343
|
-
this.aliasMap.set(
|
|
346
|
+
this.aliasMap.set(alias, context.id);
|
|
347
|
+
this.aliasedDataStores.add(context.id);
|
|
344
348
|
context.setInMemoryRoot();
|
|
345
349
|
return true;
|
|
346
350
|
}
|
|
@@ -373,14 +377,17 @@ export class ChannelCollection {
|
|
|
373
377
|
* If the container is detached, this data store will be part of the summary that makes the container attached.
|
|
374
378
|
*/
|
|
375
379
|
if (this.parentContext.attachState !== AttachState.Detached) {
|
|
376
|
-
localContext.
|
|
377
|
-
|
|
378
|
-
this.pendingAttach.set(id, message);
|
|
379
|
-
this.parentContext.submitMessage(ContainerMessageType.Attach, message, undefined);
|
|
380
|
-
this.attachOpFiredForDataStore.add(id);
|
|
380
|
+
localContext.setAttachState(AttachState.Attaching);
|
|
381
|
+
this.submitAttachChannelOp(localContext);
|
|
381
382
|
}
|
|
382
383
|
this.contexts.bind(id);
|
|
383
384
|
}
|
|
385
|
+
submitAttachChannelOp(localContext) {
|
|
386
|
+
const message = this.generateAttachMessage(localContext);
|
|
387
|
+
this.pendingAttach.set(localContext.id, message);
|
|
388
|
+
this.parentContext.submitMessage(ContainerMessageType.Attach, message, undefined);
|
|
389
|
+
this.attachOpFiredForDataStore.add(localContext.id);
|
|
390
|
+
}
|
|
384
391
|
/**
|
|
385
392
|
* Generate compact internal DataStore ID.
|
|
386
393
|
*
|
|
@@ -413,29 +420,15 @@ export class ChannelCollection {
|
|
|
413
420
|
}
|
|
414
421
|
return id;
|
|
415
422
|
}
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
storage: this.parentContext.storage,
|
|
423
|
-
scope: this.parentContext.scope,
|
|
424
|
-
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
425
|
-
type: CreateSummarizerNodeSource.Local,
|
|
426
|
-
}),
|
|
427
|
-
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
428
|
-
snapshotTree: undefined,
|
|
429
|
-
isRootDataStore: false,
|
|
430
|
-
loadingGroupId,
|
|
431
|
-
channelToDataStoreFn: (channel) => channelToDataStore(channel, id, this, createChildLogger({ logger: this.parentContext.logger })),
|
|
432
|
-
});
|
|
433
|
-
this.contexts.addUnbound(context);
|
|
434
|
-
return context;
|
|
423
|
+
createDetachedDataStore(pkg, loadingGroupId) {
|
|
424
|
+
return this.createContext(this.createDataStoreId(), pkg, LocalDetachedFluidDataStoreContext, undefined, // props
|
|
425
|
+
loadingGroupId);
|
|
426
|
+
}
|
|
427
|
+
createDataStoreContext(pkg, props, loadingGroupId) {
|
|
428
|
+
return this.createContext(this.createDataStoreId(), pkg, LocalFluidDataStoreContext, props, loadingGroupId);
|
|
435
429
|
}
|
|
436
|
-
|
|
437
|
-
const
|
|
438
|
-
const context = new LocalFluidDataStoreContext({
|
|
430
|
+
createContext(id, pkg, contextCtor, createProps, loadingGroupId) {
|
|
431
|
+
const context = new contextCtor({
|
|
439
432
|
id,
|
|
440
433
|
pkg,
|
|
441
434
|
parentContext: this.wrapContextForInnerChannel(id),
|
|
@@ -446,9 +439,9 @@ export class ChannelCollection {
|
|
|
446
439
|
}),
|
|
447
440
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
448
441
|
snapshotTree: undefined,
|
|
449
|
-
|
|
450
|
-
createProps: props,
|
|
442
|
+
createProps,
|
|
451
443
|
loadingGroupId,
|
|
444
|
+
channelToDataStoreFn: (channel) => channelToDataStore(channel, id, this, createChildLogger({ logger: this.parentContext.logger })),
|
|
452
445
|
});
|
|
453
446
|
this.contexts.addUnbound(context);
|
|
454
447
|
return context;
|
|
@@ -462,9 +455,13 @@ export class ChannelCollection {
|
|
|
462
455
|
case ContainerMessageType.Alias:
|
|
463
456
|
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
464
457
|
return;
|
|
458
|
+
case ContainerMessageType.FluidDataStoreOp:
|
|
459
|
+
return this.reSubmitChannelOp(type, content, localOpMetadata);
|
|
465
460
|
default:
|
|
461
|
+
assert(false, 0x907 /* unknown op type */);
|
|
466
462
|
}
|
|
467
|
-
|
|
463
|
+
}
|
|
464
|
+
reSubmitChannelOp(type, content, localOpMetadata) {
|
|
468
465
|
const envelope = content;
|
|
469
466
|
const context = this.contexts.get(envelope.address);
|
|
470
467
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
@@ -502,9 +499,13 @@ export class ChannelCollection {
|
|
|
502
499
|
return this.applyStashedAttachOp(opContents.contents);
|
|
503
500
|
case ContainerMessageType.Alias:
|
|
504
501
|
return;
|
|
502
|
+
case ContainerMessageType.FluidDataStoreOp:
|
|
503
|
+
return this.applyStashedChannelChannelOp(opContents.contents);
|
|
505
504
|
default:
|
|
505
|
+
assert(false, 0x908 /* unknon type of op */);
|
|
506
506
|
}
|
|
507
|
-
|
|
507
|
+
}
|
|
508
|
+
async applyStashedChannelChannelOp(envelope) {
|
|
508
509
|
const context = this.contexts.get(envelope.address);
|
|
509
510
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
510
511
|
// corruption in case the data store that stashed the op is deleted.
|
|
@@ -515,9 +516,42 @@ export class ChannelCollection {
|
|
|
515
516
|
return context.applyStashedOp(envelope.contents);
|
|
516
517
|
}
|
|
517
518
|
async applyStashedAttachOp(message) {
|
|
518
|
-
|
|
519
|
-
//
|
|
520
|
-
|
|
519
|
+
const { id, snapshot } = message;
|
|
520
|
+
// build the snapshot from the summary in the attach message
|
|
521
|
+
const flatAttachBlobs = new Map();
|
|
522
|
+
const snapshotTree = buildSnapshotTree(snapshot.entries, flatAttachBlobs);
|
|
523
|
+
const storage = new StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs);
|
|
524
|
+
// create a local datastore context for the data store context,
|
|
525
|
+
// which this message represents. All newly created data store
|
|
526
|
+
// contexts start as a local context on the client that created
|
|
527
|
+
// them, and for stashed ops, the client that applies it plays
|
|
528
|
+
// the role of creating client.
|
|
529
|
+
const dataStoreContext = new LocalFluidDataStoreContext({
|
|
530
|
+
id,
|
|
531
|
+
pkg: undefined,
|
|
532
|
+
parentContext: this.wrapContextForInnerChannel(id),
|
|
533
|
+
storage,
|
|
534
|
+
scope: this.parentContext.scope,
|
|
535
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
536
|
+
type: CreateSummarizerNodeSource.FromSummary,
|
|
537
|
+
}),
|
|
538
|
+
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
539
|
+
snapshotTree,
|
|
540
|
+
});
|
|
541
|
+
// realize the local context, as local contexts shouldn't be delay
|
|
542
|
+
// loaded, as this client is playing the role of creating client,
|
|
543
|
+
// and creating clients always create realized data store contexts.
|
|
544
|
+
const channel = await dataStoreContext.realize();
|
|
545
|
+
await channel.entryPoint.get();
|
|
546
|
+
// add to the list of bound or remoted, as this context must be bound
|
|
547
|
+
// to had an attach message sent, and is the non-detached case is remoted.
|
|
548
|
+
this.contexts.addBoundOrRemoted(dataStoreContext);
|
|
549
|
+
if (this.parentContext.attachState !== AttachState.Detached) {
|
|
550
|
+
// if the client is not detached put in the pending attach list
|
|
551
|
+
// so that on ack of the stashed op, the context is found.
|
|
552
|
+
// detached client don't send ops, so should not expect and ack.
|
|
553
|
+
this.pendingAttach.set(message.id, message);
|
|
554
|
+
}
|
|
521
555
|
}
|
|
522
556
|
process(message, local, localMessageMetadata, addedOutboundReference) {
|
|
523
557
|
switch (message.type) {
|
|
@@ -527,22 +561,33 @@ export class ChannelCollection {
|
|
|
527
561
|
case ContainerMessageType.Alias:
|
|
528
562
|
this.processAliasMessage(message, localMessageMetadata, local);
|
|
529
563
|
return;
|
|
530
|
-
case ContainerMessageType.FluidDataStoreOp:
|
|
564
|
+
case ContainerMessageType.FluidDataStoreOp: {
|
|
565
|
+
const envelope = message.contents;
|
|
566
|
+
const innerContents = envelope.contents;
|
|
567
|
+
const transformed = {
|
|
568
|
+
...message,
|
|
569
|
+
type: innerContents.type,
|
|
570
|
+
contents: innerContents.content,
|
|
571
|
+
};
|
|
572
|
+
this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
|
|
573
|
+
// By default, we use the new behavior of detecting outbound routes here.
|
|
574
|
+
// If this setting is true, then DataStoreContext would be notifying GC instead.
|
|
575
|
+
if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true &&
|
|
576
|
+
addedOutboundReference !== undefined) {
|
|
577
|
+
// Notify GC of any outbound references that were added by this op.
|
|
578
|
+
detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
|
|
579
|
+
}
|
|
531
580
|
break;
|
|
581
|
+
}
|
|
532
582
|
default:
|
|
533
583
|
assert(false, 0x8e9 /* unreached */);
|
|
534
584
|
}
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
const
|
|
538
|
-
...message,
|
|
539
|
-
type: innerContents.type,
|
|
540
|
-
contents: innerContents.content,
|
|
541
|
-
};
|
|
542
|
-
const context = this.contexts.get(envelope.address);
|
|
585
|
+
}
|
|
586
|
+
processChannelOp(address, message, local, localMessageMetadata) {
|
|
587
|
+
const context = this.contexts.get(address);
|
|
543
588
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
544
589
|
// corruption in case a deleted data store accidentally submitted an op.
|
|
545
|
-
if (this.checkAndLogIfDeleted(
|
|
590
|
+
if (this.checkAndLogIfDeleted(address, context, "Changed", "processFluidDataStoreOp")) {
|
|
546
591
|
return;
|
|
547
592
|
}
|
|
548
593
|
if (context === undefined) {
|
|
@@ -553,20 +598,13 @@ export class ChannelCollection {
|
|
|
553
598
|
type: message.type,
|
|
554
599
|
contentType: typeof message.contents,
|
|
555
600
|
}),
|
|
556
|
-
...tagCodeArtifacts({ address
|
|
601
|
+
...tagCodeArtifacts({ address }),
|
|
557
602
|
});
|
|
558
603
|
}
|
|
559
|
-
context.process(
|
|
560
|
-
// By default, we use the new behavior of detecting outbound routes here.
|
|
561
|
-
// If this setting is true, then DataStoreContext would be notifying GC instead.
|
|
562
|
-
if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true &&
|
|
563
|
-
addedOutboundReference !== undefined) {
|
|
564
|
-
// Notify GC of any outbound references that were added by this op.
|
|
565
|
-
detectOutboundReferences(envelope, addedOutboundReference);
|
|
566
|
-
}
|
|
604
|
+
context.process(message, local, localMessageMetadata);
|
|
567
605
|
// Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
|
|
568
606
|
// being used.
|
|
569
|
-
this.gcNodeUpdated(`/${
|
|
607
|
+
this.gcNodeUpdated(`/${address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
|
|
570
608
|
}
|
|
571
609
|
async getDataStore(id, requestHeaderData) {
|
|
572
610
|
const headerData = { ...defaultRuntimeHeaderData, ...requestHeaderData };
|
|
@@ -664,11 +702,10 @@ export class ChannelCollection {
|
|
|
664
702
|
}
|
|
665
703
|
}
|
|
666
704
|
setAttachState(attachState) {
|
|
667
|
-
const eventName = attachState === AttachState.Attaching ? "attaching" : "attached";
|
|
668
705
|
for (const [, context] of this.contexts) {
|
|
669
706
|
// Fire only for bounded stores.
|
|
670
707
|
if (!this.contexts.isNotBound(context.id)) {
|
|
671
|
-
context.
|
|
708
|
+
context.setAttachState(attachState);
|
|
672
709
|
}
|
|
673
710
|
}
|
|
674
711
|
}
|
|
@@ -804,25 +841,14 @@ export class ChannelCollection {
|
|
|
804
841
|
context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
|
|
805
842
|
}
|
|
806
843
|
}
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
// store based on its DDS being unused.
|
|
816
|
-
if (pathParts.length > 2) {
|
|
817
|
-
continue;
|
|
818
|
-
}
|
|
819
|
-
const dataStoreId = pathParts[1];
|
|
820
|
-
assert(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
|
|
821
|
-
// Delete the contexts of unused data stores.
|
|
822
|
-
this.contexts.delete(dataStoreId);
|
|
823
|
-
// Delete the summarizer node of the unused data stores.
|
|
824
|
-
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
825
|
-
}
|
|
844
|
+
deleteChild(dataStoreId) {
|
|
845
|
+
const dataStoreContext = this.contexts.get(dataStoreId);
|
|
846
|
+
assert(dataStoreContext !== undefined, 0x2d7 /* No data store with specified id */);
|
|
847
|
+
dataStoreContext.delete();
|
|
848
|
+
// Delete the contexts of unused data stores.
|
|
849
|
+
this.contexts.delete(dataStoreId);
|
|
850
|
+
// Delete the summarizer node of the unused data stores.
|
|
851
|
+
this.parentContext.deleteChildSummarizerNode(dataStoreId);
|
|
826
852
|
}
|
|
827
853
|
/**
|
|
828
854
|
* Delete data stores and its objects that are sweep ready.
|
|
@@ -854,11 +880,7 @@ export class ChannelCollection {
|
|
|
854
880
|
});
|
|
855
881
|
continue;
|
|
856
882
|
}
|
|
857
|
-
|
|
858
|
-
// Delete the contexts of sweep ready data stores.
|
|
859
|
-
this.contexts.delete(dataStoreId);
|
|
860
|
-
// Delete the summarizer node of the sweep ready data stores.
|
|
861
|
-
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
883
|
+
this.deleteChild(dataStoreId);
|
|
862
884
|
}
|
|
863
885
|
return Array.from(sweepReadyDataStoreRoutes);
|
|
864
886
|
}
|
|
@@ -893,8 +915,9 @@ export class ChannelCollection {
|
|
|
893
915
|
*/
|
|
894
916
|
async getOutboundRoutes() {
|
|
895
917
|
const outboundRoutes = [];
|
|
918
|
+
// Getting this information is a performance optimization that reduces network calls for virtualized datastores
|
|
896
919
|
for (const [contextId, context] of this.contexts) {
|
|
897
|
-
const isRootDataStore = await context.isRoot();
|
|
920
|
+
const isRootDataStore = await context.isRoot(this.aliasedDataStores);
|
|
898
921
|
if (isRootDataStore) {
|
|
899
922
|
outboundRoutes.push(`/${contextId}`);
|
|
900
923
|
}
|
|
@@ -998,7 +1021,7 @@ export function getSummaryForDatastores(snapshot, metadata) {
|
|
|
998
1021
|
*
|
|
999
1022
|
* @internal
|
|
1000
1023
|
*/
|
|
1001
|
-
export function detectOutboundReferences(
|
|
1024
|
+
export function detectOutboundReferences(address, contents, addedOutboundReference) {
|
|
1002
1025
|
// These will be built up as we traverse the envelope contents
|
|
1003
1026
|
const outboundPaths = [];
|
|
1004
1027
|
let ddsAddress;
|
|
@@ -1019,18 +1042,19 @@ export function detectOutboundReferences(envelope, addedOutboundReference) {
|
|
|
1019
1042
|
}
|
|
1020
1043
|
}
|
|
1021
1044
|
}
|
|
1022
|
-
recursivelyFindHandles(
|
|
1045
|
+
recursivelyFindHandles(contents);
|
|
1023
1046
|
// GC node paths are all absolute paths, hence the "" prefix.
|
|
1024
1047
|
// e.g. this will yield "/dataStoreId/ddsId"
|
|
1025
|
-
const fromPath = ["",
|
|
1048
|
+
const fromPath = ["", address, ddsAddress].join("/");
|
|
1026
1049
|
outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
|
|
1027
1050
|
}
|
|
1028
1051
|
/** @internal */
|
|
1029
1052
|
export class ChannelCollectionFactory {
|
|
1030
1053
|
constructor(registryEntries,
|
|
1031
1054
|
// ADO:7302 We need a better type here
|
|
1032
|
-
provideEntryPoint) {
|
|
1055
|
+
provideEntryPoint, ctor) {
|
|
1033
1056
|
this.provideEntryPoint = provideEntryPoint;
|
|
1057
|
+
this.ctor = ctor;
|
|
1034
1058
|
this.type = "ChannelCollectionChannel";
|
|
1035
1059
|
this.IFluidDataStoreRegistry = new FluidDataStoreRegistry(registryEntries);
|
|
1036
1060
|
}
|
|
@@ -1038,7 +1062,7 @@ export class ChannelCollectionFactory {
|
|
|
1038
1062
|
return this;
|
|
1039
1063
|
}
|
|
1040
1064
|
async instantiateDataStore(context, _existing) {
|
|
1041
|
-
const runtime =
|
|
1065
|
+
const runtime = this.ctor(context.baseSnapshot, context, // parentContext
|
|
1042
1066
|
context.logger, () => { }, // gcNodeUpdated
|
|
1043
1067
|
(_nodePath) => false, // isDataStoreDeleted
|
|
1044
1068
|
new Map(), // aliasMap
|