@fluidframework/container-runtime 2.0.0-rc.2.0.2 → 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 +155 -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 +169 -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 +96 -106
- 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 +107 -52
- 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 +180 -165
- 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 +195 -93
- 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.
|
|
@@ -536,7 +537,6 @@ export class ChannelCollection {
|
|
|
536
537
|
}),
|
|
537
538
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
538
539
|
snapshotTree,
|
|
539
|
-
isRootDataStore: false,
|
|
540
540
|
});
|
|
541
541
|
// realize the local context, as local contexts shouldn't be delay
|
|
542
542
|
// loaded, as this client is playing the role of creating client,
|
|
@@ -561,22 +561,33 @@ export class ChannelCollection {
|
|
|
561
561
|
case ContainerMessageType.Alias:
|
|
562
562
|
this.processAliasMessage(message, localMessageMetadata, local);
|
|
563
563
|
return;
|
|
564
|
-
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
|
+
}
|
|
565
580
|
break;
|
|
581
|
+
}
|
|
566
582
|
default:
|
|
567
583
|
assert(false, 0x8e9 /* unreached */);
|
|
568
584
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
const
|
|
572
|
-
...message,
|
|
573
|
-
type: innerContents.type,
|
|
574
|
-
contents: innerContents.content,
|
|
575
|
-
};
|
|
576
|
-
const context = this.contexts.get(envelope.address);
|
|
585
|
+
}
|
|
586
|
+
processChannelOp(address, message, local, localMessageMetadata) {
|
|
587
|
+
const context = this.contexts.get(address);
|
|
577
588
|
// If the data store has been deleted, log an error and ignore this message. This helps prevent document
|
|
578
589
|
// corruption in case a deleted data store accidentally submitted an op.
|
|
579
|
-
if (this.checkAndLogIfDeleted(
|
|
590
|
+
if (this.checkAndLogIfDeleted(address, context, "Changed", "processFluidDataStoreOp")) {
|
|
580
591
|
return;
|
|
581
592
|
}
|
|
582
593
|
if (context === undefined) {
|
|
@@ -587,20 +598,13 @@ export class ChannelCollection {
|
|
|
587
598
|
type: message.type,
|
|
588
599
|
contentType: typeof message.contents,
|
|
589
600
|
}),
|
|
590
|
-
...tagCodeArtifacts({ address
|
|
601
|
+
...tagCodeArtifacts({ address }),
|
|
591
602
|
});
|
|
592
603
|
}
|
|
593
|
-
context.process(
|
|
594
|
-
// By default, we use the new behavior of detecting outbound routes here.
|
|
595
|
-
// If this setting is true, then DataStoreContext would be notifying GC instead.
|
|
596
|
-
if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true &&
|
|
597
|
-
addedOutboundReference !== undefined) {
|
|
598
|
-
// Notify GC of any outbound references that were added by this op.
|
|
599
|
-
detectOutboundReferences(envelope, addedOutboundReference);
|
|
600
|
-
}
|
|
604
|
+
context.process(message, local, localMessageMetadata);
|
|
601
605
|
// Notify that a GC node for the data store changed. This is used to detect if a deleted data store is
|
|
602
606
|
// being used.
|
|
603
|
-
this.gcNodeUpdated(`/${
|
|
607
|
+
this.gcNodeUpdated(`/${address}`, "Changed", message.timestamp, context.isLoaded ? context.packagePath : undefined);
|
|
604
608
|
}
|
|
605
609
|
async getDataStore(id, requestHeaderData) {
|
|
606
610
|
const headerData = { ...defaultRuntimeHeaderData, ...requestHeaderData };
|
|
@@ -698,11 +702,10 @@ export class ChannelCollection {
|
|
|
698
702
|
}
|
|
699
703
|
}
|
|
700
704
|
setAttachState(attachState) {
|
|
701
|
-
const eventName = attachState === AttachState.Attaching ? "attaching" : "attached";
|
|
702
705
|
for (const [, context] of this.contexts) {
|
|
703
706
|
// Fire only for bounded stores.
|
|
704
707
|
if (!this.contexts.isNotBound(context.id)) {
|
|
705
|
-
context.
|
|
708
|
+
context.setAttachState(attachState);
|
|
706
709
|
}
|
|
707
710
|
}
|
|
708
711
|
}
|
|
@@ -838,25 +841,14 @@ export class ChannelCollection {
|
|
|
838
841
|
context.updateUsedRoutes(usedDataStoreRoutes.get(contextId) ?? []);
|
|
839
842
|
}
|
|
840
843
|
}
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
// store based on its DDS being unused.
|
|
850
|
-
if (pathParts.length > 2) {
|
|
851
|
-
continue;
|
|
852
|
-
}
|
|
853
|
-
const dataStoreId = pathParts[1];
|
|
854
|
-
assert(this.contexts.has(dataStoreId), 0x2d7 /* No data store with specified id */);
|
|
855
|
-
// Delete the contexts of unused data stores.
|
|
856
|
-
this.contexts.delete(dataStoreId);
|
|
857
|
-
// Delete the summarizer node of the unused data stores.
|
|
858
|
-
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
859
|
-
}
|
|
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);
|
|
860
852
|
}
|
|
861
853
|
/**
|
|
862
854
|
* Delete data stores and its objects that are sweep ready.
|
|
@@ -888,11 +880,7 @@ export class ChannelCollection {
|
|
|
888
880
|
});
|
|
889
881
|
continue;
|
|
890
882
|
}
|
|
891
|
-
|
|
892
|
-
// Delete the contexts of sweep ready data stores.
|
|
893
|
-
this.contexts.delete(dataStoreId);
|
|
894
|
-
// Delete the summarizer node of the sweep ready data stores.
|
|
895
|
-
this.parentContext.deleteChildSummarizerNode?.(dataStoreId);
|
|
883
|
+
this.deleteChild(dataStoreId);
|
|
896
884
|
}
|
|
897
885
|
return Array.from(sweepReadyDataStoreRoutes);
|
|
898
886
|
}
|
|
@@ -927,8 +915,9 @@ export class ChannelCollection {
|
|
|
927
915
|
*/
|
|
928
916
|
async getOutboundRoutes() {
|
|
929
917
|
const outboundRoutes = [];
|
|
918
|
+
// Getting this information is a performance optimization that reduces network calls for virtualized datastores
|
|
930
919
|
for (const [contextId, context] of this.contexts) {
|
|
931
|
-
const isRootDataStore = await context.isRoot();
|
|
920
|
+
const isRootDataStore = await context.isRoot(this.aliasedDataStores);
|
|
932
921
|
if (isRootDataStore) {
|
|
933
922
|
outboundRoutes.push(`/${contextId}`);
|
|
934
923
|
}
|
|
@@ -1032,7 +1021,7 @@ export function getSummaryForDatastores(snapshot, metadata) {
|
|
|
1032
1021
|
*
|
|
1033
1022
|
* @internal
|
|
1034
1023
|
*/
|
|
1035
|
-
export function detectOutboundReferences(
|
|
1024
|
+
export function detectOutboundReferences(address, contents, addedOutboundReference) {
|
|
1036
1025
|
// These will be built up as we traverse the envelope contents
|
|
1037
1026
|
const outboundPaths = [];
|
|
1038
1027
|
let ddsAddress;
|
|
@@ -1053,18 +1042,19 @@ export function detectOutboundReferences(envelope, addedOutboundReference) {
|
|
|
1053
1042
|
}
|
|
1054
1043
|
}
|
|
1055
1044
|
}
|
|
1056
|
-
recursivelyFindHandles(
|
|
1045
|
+
recursivelyFindHandles(contents);
|
|
1057
1046
|
// GC node paths are all absolute paths, hence the "" prefix.
|
|
1058
1047
|
// e.g. this will yield "/dataStoreId/ddsId"
|
|
1059
|
-
const fromPath = ["",
|
|
1048
|
+
const fromPath = ["", address, ddsAddress].join("/");
|
|
1060
1049
|
outboundPaths.forEach((toPath) => addedOutboundReference(fromPath, toPath));
|
|
1061
1050
|
}
|
|
1062
1051
|
/** @internal */
|
|
1063
1052
|
export class ChannelCollectionFactory {
|
|
1064
1053
|
constructor(registryEntries,
|
|
1065
1054
|
// ADO:7302 We need a better type here
|
|
1066
|
-
provideEntryPoint) {
|
|
1055
|
+
provideEntryPoint, ctor) {
|
|
1067
1056
|
this.provideEntryPoint = provideEntryPoint;
|
|
1057
|
+
this.ctor = ctor;
|
|
1068
1058
|
this.type = "ChannelCollectionChannel";
|
|
1069
1059
|
this.IFluidDataStoreRegistry = new FluidDataStoreRegistry(registryEntries);
|
|
1070
1060
|
}
|
|
@@ -1072,7 +1062,7 @@ export class ChannelCollectionFactory {
|
|
|
1072
1062
|
return this;
|
|
1073
1063
|
}
|
|
1074
1064
|
async instantiateDataStore(context, _existing) {
|
|
1075
|
-
const runtime =
|
|
1065
|
+
const runtime = this.ctor(context.baseSnapshot, context, // parentContext
|
|
1076
1066
|
context.logger, () => { }, // gcNodeUpdated
|
|
1077
1067
|
(_nodePath) => false, // isDataStoreDeleted
|
|
1078
1068
|
new Map(), // aliasMap
|