@fluidframework/container-runtime 2.0.0-dev-rc.2.0.0.246488 → 2.0.0-dev-rc.3.0.0.253463
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api-report/container-runtime.api.md +109 -55
- 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 -25
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +82 -100
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +7 -6
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +110 -77
- 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/container-runtime-alpha.d.ts +263 -41
- package/dist/container-runtime-beta.d.ts +44 -30
- package/dist/container-runtime-public.d.ts +44 -30
- package/dist/container-runtime-untrimmed.d.ts +265 -56
- 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 +40 -30
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +376 -255
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +7 -7
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +9 -9
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +74 -74
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +11 -11
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +1 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +2 -2
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/deltaScheduler.d.ts +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 +21 -21
- 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 -3
- 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 +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- 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 +19 -24
- 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 -35
- 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/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +24 -24
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.d.ts +2 -2
- package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +2 -2
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +209 -0
- package/dist/summary/documentSchema.d.ts.map +1 -0
- package/dist/summary/documentSchema.js +382 -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 +8 -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/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 -25
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +48 -66
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +7 -6
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +47 -14
- 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/container-runtime-alpha.d.ts +263 -41
- package/lib/container-runtime-beta.d.ts +44 -30
- package/lib/container-runtime-public.d.ts +44 -30
- package/lib/container-runtime-untrimmed.d.ts +265 -56
- 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 +40 -30
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +224 -101
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +2 -2
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +9 -9
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +8 -8
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +2 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.js.map +1 -1
- package/lib/deltaScheduler.d.ts +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 +6 -6
- 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 -3
- 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 +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- 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 +8 -13
- 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 -35
- 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/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +3 -3
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts +2 -2
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +209 -0
- package/lib/summary/documentSchema.d.ts.map +1 -0
- package/lib/summary/documentSchema.js +378 -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 +3 -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/lib/tsdoc-metadata.json +11 -0
- package/package.json +34 -32
- package/src/batchTracker.ts +4 -3
- package/src/blobManager.ts +100 -69
- package/src/channelCollection.ts +86 -43
- package/src/connectionTelemetry.ts +12 -12
- package/src/containerHandleContext.ts +3 -2
- package/src/containerRuntime.ts +419 -232
- package/src/dataStore.ts +5 -3
- package/src/dataStoreContext.ts +32 -29
- package/src/dataStoreContexts.ts +4 -2
- package/src/dataStoreRegistry.ts +2 -2
- package/src/deltaManagerSummarizerProxy.ts +1 -1
- package/src/deltaScheduler.ts +2 -1
- package/src/error.ts +2 -2
- package/src/gc/garbageCollection.ts +19 -18
- package/src/gc/gcConfigs.ts +15 -18
- package/src/gc/gcDefinitions.ts +6 -6
- 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 +8 -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 +84 -100
- package/src/opLifecycle/opGroupingManager.ts +12 -14
- package/src/opLifecycle/opSplitter.ts +76 -48
- package/src/opLifecycle/outbox.ts +17 -32
- package/src/opLifecycle/remoteMessageProcessor.ts +43 -59
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +6 -6
- package/src/scheduleManager.ts +9 -8
- package/src/storageServiceWithAttachBlobs.ts +2 -2
- package/src/summary/documentSchema.ts +612 -0
- package/src/summary/index.ts +10 -1
- package/src/summary/orderedClientElection.ts +6 -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/lib/test/batchTracker.spec.js +0 -88
- package/lib/test/batchTracker.spec.js.map +0 -1
- package/lib/test/blobManager.spec.js +0 -835
- package/lib/test/blobManager.spec.js.map +0 -1
- package/lib/test/channelCollection.spec.js +0 -138
- package/lib/test/channelCollection.spec.js.map +0 -1
- package/lib/test/containerRuntime.spec.js +0 -1748
- package/lib/test/containerRuntime.spec.js.map +0 -1
- package/lib/test/dataStoreContext.spec.js +0 -771
- package/lib/test/dataStoreContext.spec.js.map +0 -1
- package/lib/test/dataStoreCreation.spec.js +0 -303
- package/lib/test/dataStoreCreation.spec.js.map +0 -1
- package/lib/test/dataStoreRegistry.spec.js +0 -26
- package/lib/test/dataStoreRegistry.spec.js.map +0 -1
- package/lib/test/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 -1464
- package/lib/test/gc/garbageCollection.spec.js.map +0 -1
- package/lib/test/gc/gcConfigs.spec.js +0 -689
- package/lib/test/gc/gcConfigs.spec.js.map +0 -1
- package/lib/test/gc/gcHelpers.spec.js +0 -110
- package/lib/test/gc/gcHelpers.spec.js.map +0 -1
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +0 -68
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +0 -1
- package/lib/test/gc/gcStats.spec.js +0 -390
- package/lib/test/gc/gcStats.spec.js.map +0 -1
- package/lib/test/gc/gcSummaryStateTracker.spec.js +0 -228
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +0 -1
- package/lib/test/gc/gcTelemetry.spec.js +0 -530
- package/lib/test/gc/gcTelemetry.spec.js.map +0 -1
- package/lib/test/gc/gcUnitTestHelpers.js +0 -29
- package/lib/test/gc/gcUnitTestHelpers.js.map +0 -1
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +0 -192
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +0 -1
- package/lib/test/getPendingBlobs.spec.js +0 -193
- package/lib/test/getPendingBlobs.spec.js.map +0 -1
- package/lib/test/hardwareStats.spec.js +0 -93
- package/lib/test/hardwareStats.spec.js.map +0 -1
- package/lib/test/index.js +0 -6
- package/lib/test/index.js.map +0 -1
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +0 -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
|
@@ -5,22 +5,22 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
|
|
8
|
-
const datastore_1 = require("@fluidframework/datastore");
|
|
9
|
-
const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
|
|
10
|
-
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
11
|
-
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
12
8
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
9
|
+
const internal_1 = require("@fluidframework/core-utils/internal");
|
|
10
|
+
const internal_2 = require("@fluidframework/datastore/internal");
|
|
11
|
+
const internal_3 = require("@fluidframework/driver-utils/internal");
|
|
12
|
+
const internal_4 = require("@fluidframework/runtime-definitions/internal");
|
|
13
|
+
const internal_5 = require("@fluidframework/runtime-utils/internal");
|
|
14
|
+
const internal_6 = require("@fluidframework/telemetry-utils/internal");
|
|
16
15
|
const containerRuntime_js_1 = require("./containerRuntime.js");
|
|
17
|
-
const dataStoreContext_js_1 = require("./dataStoreContext.js");
|
|
18
|
-
const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
|
|
19
16
|
const dataStore_js_1 = require("./dataStore.js");
|
|
17
|
+
const dataStoreContext_js_1 = require("./dataStoreContext.js");
|
|
18
|
+
const dataStoreContexts_js_1 = require("./dataStoreContexts.js");
|
|
19
|
+
const dataStoreRegistry_js_1 = require("./dataStoreRegistry.js");
|
|
20
20
|
const index_js_1 = require("./gc/index.js");
|
|
21
|
-
const index_js_2 = require("./summary/index.js");
|
|
22
21
|
const messageTypes_js_1 = require("./messageTypes.js");
|
|
23
|
-
const
|
|
22
|
+
const storageServiceWithAttachBlobs_js_1 = require("./storageServiceWithAttachBlobs.js");
|
|
23
|
+
const index_js_2 = require("./summary/index.js");
|
|
24
24
|
/**
|
|
25
25
|
* Accepted header keys for requests coming to the runtime.
|
|
26
26
|
* @internal
|
|
@@ -160,7 +160,7 @@ class ChannelCollection {
|
|
|
160
160
|
this.pendingAttach = new Map();
|
|
161
161
|
// 0.24 back-compat attachingBeforeSummary
|
|
162
162
|
this.attachOpFiredForDataStore = new Set();
|
|
163
|
-
this.disposeOnce = new
|
|
163
|
+
this.disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
|
|
164
164
|
// Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
|
|
165
165
|
// root data stores that are added.
|
|
166
166
|
this.dataStoresSinceLastGC = [];
|
|
@@ -168,10 +168,10 @@ class ChannelCollection {
|
|
|
168
168
|
/** For sampling. Only log once per container */
|
|
169
169
|
this.shouldSendAttachLog = true;
|
|
170
170
|
this.dispose = () => this.disposeOnce.value;
|
|
171
|
-
this.mc = (0,
|
|
171
|
+
this.mc = (0, internal_6.createChildMonitoringContext)({ logger: baseLogger });
|
|
172
172
|
this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
|
|
173
|
-
this.containerRuntimeHandle = new
|
|
174
|
-
this.entryPoint = new
|
|
173
|
+
this.containerRuntimeHandle = new internal_2.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
|
|
174
|
+
this.entryPoint = new internal_2.FluidObjectHandle(new internal_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
|
|
175
175
|
// Extract stores stored inside the snapshot
|
|
176
176
|
const fluidDataStores = new Map();
|
|
177
177
|
if (baseSnapshot) {
|
|
@@ -196,14 +196,14 @@ class ChannelCollection {
|
|
|
196
196
|
storage: this.parentContext.storage,
|
|
197
197
|
scope: this.parentContext.scope,
|
|
198
198
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
199
|
-
type:
|
|
199
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
200
200
|
}),
|
|
201
201
|
loadingGroupId: value.groupId,
|
|
202
202
|
});
|
|
203
203
|
}
|
|
204
204
|
else {
|
|
205
205
|
if (typeof value !== "object") {
|
|
206
|
-
throw new
|
|
206
|
+
throw new internal_6.LoggingError("Snapshot should be there to load from!!");
|
|
207
207
|
}
|
|
208
208
|
const snapshotTree = value;
|
|
209
209
|
dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
|
|
@@ -213,7 +213,7 @@ class ChannelCollection {
|
|
|
213
213
|
storage: this.parentContext.storage,
|
|
214
214
|
scope: this.parentContext.scope,
|
|
215
215
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(key, {
|
|
216
|
-
type:
|
|
216
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
217
217
|
}),
|
|
218
218
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(key),
|
|
219
219
|
snapshotTree,
|
|
@@ -251,7 +251,7 @@ class ChannelCollection {
|
|
|
251
251
|
const attachMessage = message.contents;
|
|
252
252
|
this.dataStoresSinceLastGC.push(attachMessage.id);
|
|
253
253
|
// We need to process the GC Data for both local and remote attach messages
|
|
254
|
-
const foundGCData = (0,
|
|
254
|
+
const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
|
|
255
255
|
// nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
|
|
256
256
|
const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
|
|
257
257
|
this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
|
|
@@ -262,18 +262,18 @@ class ChannelCollection {
|
|
|
262
262
|
this.shouldSendAttachLog = false;
|
|
263
263
|
this.mc.logger.sendTelemetryEvent({
|
|
264
264
|
eventName: "dataStoreAttachMessage_sampled",
|
|
265
|
-
...(0,
|
|
265
|
+
...(0, internal_6.tagCodeArtifacts)({ id: attachMessage.id, pkg: attachMessage.type }),
|
|
266
266
|
details: {
|
|
267
267
|
local,
|
|
268
268
|
snapshot: !!attachMessage.snapshot,
|
|
269
269
|
foundGCData,
|
|
270
270
|
},
|
|
271
|
-
...(0,
|
|
271
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
272
272
|
});
|
|
273
273
|
}
|
|
274
274
|
// The local object has already been attached
|
|
275
275
|
if (local) {
|
|
276
|
-
(0,
|
|
276
|
+
(0, internal_1.assert)(this.pendingAttach.has(attachMessage.id), 0x15e /* "Local object does not have matching attach message id" */);
|
|
277
277
|
this.contexts.get(attachMessage.id)?.setAttachState(container_definitions_1.AttachState.Attached);
|
|
278
278
|
this.pendingAttach.delete(attachMessage.id);
|
|
279
279
|
return;
|
|
@@ -281,18 +281,18 @@ class ChannelCollection {
|
|
|
281
281
|
// If a non-local operation then go and create the object, otherwise mark it as officially attached.
|
|
282
282
|
if (this.alreadyProcessed(attachMessage.id)) {
|
|
283
283
|
// TODO: dataStoreId may require a different tag from PackageData #7488
|
|
284
|
-
const error = new
|
|
284
|
+
const error = new internal_6.DataCorruptionError(
|
|
285
285
|
// pre-0.58 error message: duplicateDataStoreCreatedWithExistingId
|
|
286
286
|
"Duplicate DataStore created with existing id", {
|
|
287
|
-
...(0,
|
|
288
|
-
...(0,
|
|
287
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
288
|
+
...(0, internal_6.tagCodeArtifacts)({ dataStoreId: attachMessage.id }),
|
|
289
289
|
});
|
|
290
290
|
throw error;
|
|
291
291
|
}
|
|
292
292
|
const flatAttachBlobs = new Map();
|
|
293
293
|
let snapshotTree;
|
|
294
294
|
if (attachMessage.snapshot) {
|
|
295
|
-
snapshotTree = (0,
|
|
295
|
+
snapshotTree = (0, internal_3.buildSnapshotTree)(attachMessage.snapshot.entries, flatAttachBlobs);
|
|
296
296
|
}
|
|
297
297
|
// Include the type of attach message which is the pkg of the store to be
|
|
298
298
|
// used by RemoteFluidDataStoreContext in case it is not in the snapshot.
|
|
@@ -305,7 +305,7 @@ class ChannelCollection {
|
|
|
305
305
|
scope: this.parentContext.scope,
|
|
306
306
|
loadingGroupId: attachMessage.snapshot?.groupId,
|
|
307
307
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(attachMessage.id, {
|
|
308
|
-
type:
|
|
308
|
+
type: internal_4.CreateSummarizerNodeSource.FromAttach,
|
|
309
309
|
sequenceNumber: message.sequenceNumber,
|
|
310
310
|
snapshot: attachMessage.snapshot ?? {
|
|
311
311
|
entries: [(0, dataStoreContext_js_1.createAttributesBlob)(pkg, true /* isRootDataStore */)],
|
|
@@ -318,8 +318,8 @@ class ChannelCollection {
|
|
|
318
318
|
processAliasMessage(message, localOpMetadata, local) {
|
|
319
319
|
const aliasMessage = message.contents;
|
|
320
320
|
if (!(0, dataStore_js_1.isDataStoreAliasMessage)(aliasMessage)) {
|
|
321
|
-
throw new
|
|
322
|
-
...(0,
|
|
321
|
+
throw new internal_6.DataCorruptionError("malformedDataStoreAliasMessage", {
|
|
322
|
+
...(0, internal_6.extractSafePropertiesFromMessage)(message),
|
|
323
323
|
});
|
|
324
324
|
}
|
|
325
325
|
const resolve = localOpMetadata;
|
|
@@ -345,7 +345,7 @@ class ChannelCollection {
|
|
|
345
345
|
});
|
|
346
346
|
return false;
|
|
347
347
|
}
|
|
348
|
-
const handle = new
|
|
348
|
+
const handle = new internal_2.FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
|
|
349
349
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
350
350
|
this.aliasMap.set(alias, context.id);
|
|
351
351
|
context.setInMemoryRoot();
|
|
@@ -359,7 +359,7 @@ class ChannelCollection {
|
|
|
359
359
|
const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
|
|
360
360
|
const type = localContext.packagePath[localContext.packagePath.length - 1];
|
|
361
361
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
362
|
-
const snapshot = (0,
|
|
362
|
+
const snapshot = (0, internal_5.convertSummaryTreeToITree)(attachSummary.summary);
|
|
363
363
|
return {
|
|
364
364
|
id: localContext.id,
|
|
365
365
|
snapshot,
|
|
@@ -373,7 +373,7 @@ class ChannelCollection {
|
|
|
373
373
|
*/
|
|
374
374
|
makeDataStoreLocallyVisible(id) {
|
|
375
375
|
const localContext = this.contexts.getUnbound(id);
|
|
376
|
-
(0,
|
|
376
|
+
(0, internal_1.assert)(!!localContext, 0x15f /* "Could not find unbound context to bind" */);
|
|
377
377
|
/**
|
|
378
378
|
* If the container is not detached, it is globally visible to all clients. This data store should also be
|
|
379
379
|
* globally visible. Move it to attaching state and send an "attach" op for it.
|
|
@@ -415,11 +415,11 @@ class ChannelCollection {
|
|
|
415
415
|
// In first two cases we will encode result as strings in more compact form.
|
|
416
416
|
if (this.parentContext.attachState === container_definitions_1.AttachState.Detached) {
|
|
417
417
|
// container is detached, only one client observes content, no way to hit collisions with other clients.
|
|
418
|
-
return (0,
|
|
418
|
+
return (0, internal_5.encodeCompactIdToString)(2 * this.contexts.size);
|
|
419
419
|
}
|
|
420
420
|
const id = this.parentContext.containerRuntime.generateDocumentUniqueId();
|
|
421
421
|
if (typeof id === "number") {
|
|
422
|
-
return (0,
|
|
422
|
+
return (0, internal_5.encodeCompactIdToString)(2 * id + 1);
|
|
423
423
|
}
|
|
424
424
|
return id;
|
|
425
425
|
}
|
|
@@ -438,13 +438,13 @@ class ChannelCollection {
|
|
|
438
438
|
storage: this.parentContext.storage,
|
|
439
439
|
scope: this.parentContext.scope,
|
|
440
440
|
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
441
|
-
type:
|
|
441
|
+
type: internal_4.CreateSummarizerNodeSource.Local,
|
|
442
442
|
}),
|
|
443
443
|
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
444
444
|
snapshotTree: undefined,
|
|
445
445
|
createProps,
|
|
446
446
|
loadingGroupId,
|
|
447
|
-
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0,
|
|
447
|
+
channelToDataStoreFn: (channel) => (0, dataStore_js_1.channelToDataStore)(channel, id, this, (0, internal_6.createChildLogger)({ logger: this.parentContext.logger })),
|
|
448
448
|
});
|
|
449
449
|
this.contexts.addUnbound(context);
|
|
450
450
|
return context;
|
|
@@ -461,7 +461,7 @@ class ChannelCollection {
|
|
|
461
461
|
case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
|
|
462
462
|
return this.reSubmitChannelOp(type, content, localOpMetadata);
|
|
463
463
|
default:
|
|
464
|
-
(0,
|
|
464
|
+
(0, internal_1.assert)(false, 0x907 /* unknown op type */);
|
|
465
465
|
}
|
|
466
466
|
}
|
|
467
467
|
reSubmitChannelOp(type, content, localOpMetadata) {
|
|
@@ -470,28 +470,28 @@ class ChannelCollection {
|
|
|
470
470
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
471
471
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
472
472
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "resubmitDataStoreOp")) {
|
|
473
|
-
throw new
|
|
473
|
+
throw new internal_6.DataCorruptionError("Context is deleted!", {
|
|
474
474
|
callSite: "resubmitDataStoreOp",
|
|
475
|
-
...(0,
|
|
475
|
+
...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
|
|
476
476
|
});
|
|
477
477
|
}
|
|
478
|
-
(0,
|
|
478
|
+
(0, internal_1.assert)(!!context, 0x160 /* "There should be a store context for the op" */);
|
|
479
479
|
const innerContents = envelope.contents;
|
|
480
480
|
context.reSubmit(innerContents.type, innerContents.content, localOpMetadata);
|
|
481
481
|
}
|
|
482
482
|
rollback(type, content, localOpMetadata) {
|
|
483
|
-
(0,
|
|
483
|
+
(0, internal_1.assert)(type === messageTypes_js_1.ContainerMessageType.FluidDataStoreOp, 0x8e8 /* type */);
|
|
484
484
|
const envelope = content;
|
|
485
485
|
const context = this.contexts.get(envelope.address);
|
|
486
486
|
// If the data store has been deleted, log an error and throw an error. If there are local changes for a
|
|
487
487
|
// deleted data store, it can otherwise lead to inconsistent state when compared to other clients.
|
|
488
488
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "rollbackDataStoreOp")) {
|
|
489
|
-
throw new
|
|
489
|
+
throw new internal_6.DataCorruptionError("Context is deleted!", {
|
|
490
490
|
callSite: "rollbackDataStoreOp",
|
|
491
|
-
...(0,
|
|
491
|
+
...(0, internal_6.tagCodeArtifacts)({ id: envelope.address }),
|
|
492
492
|
});
|
|
493
493
|
}
|
|
494
|
-
(0,
|
|
494
|
+
(0, internal_1.assert)(!!context, 0x2e8 /* "There should be a store context for the op" */);
|
|
495
495
|
const innerContents = envelope.contents;
|
|
496
496
|
context.rollback(innerContents.type, innerContents.content, localOpMetadata);
|
|
497
497
|
}
|
|
@@ -505,7 +505,7 @@ class ChannelCollection {
|
|
|
505
505
|
case messageTypes_js_1.ContainerMessageType.FluidDataStoreOp:
|
|
506
506
|
return this.applyStashedChannelChannelOp(opContents.contents);
|
|
507
507
|
default:
|
|
508
|
-
(0,
|
|
508
|
+
(0, internal_1.assert)(false, 0x908 /* unknon type of op */);
|
|
509
509
|
}
|
|
510
510
|
}
|
|
511
511
|
async applyStashedChannelChannelOp(envelope) {
|
|
@@ -515,13 +515,46 @@ class ChannelCollection {
|
|
|
515
515
|
if (this.checkAndLogIfDeleted(envelope.address, context, "Changed", "applyStashedOp")) {
|
|
516
516
|
return undefined;
|
|
517
517
|
}
|
|
518
|
-
(0,
|
|
518
|
+
(0, internal_1.assert)(!!context, 0x161 /* "There should be a store context for the op" */);
|
|
519
519
|
return context.applyStashedOp(envelope.contents);
|
|
520
520
|
}
|
|
521
521
|
async applyStashedAttachOp(message) {
|
|
522
|
-
|
|
523
|
-
//
|
|
524
|
-
|
|
522
|
+
const { id, snapshot } = message;
|
|
523
|
+
// build the snapshot from the summary in the attach message
|
|
524
|
+
const flatAttachBlobs = new Map();
|
|
525
|
+
const snapshotTree = (0, internal_3.buildSnapshotTree)(snapshot.entries, flatAttachBlobs);
|
|
526
|
+
const storage = new storageServiceWithAttachBlobs_js_1.StorageServiceWithAttachBlobs(this.parentContext.storage, flatAttachBlobs);
|
|
527
|
+
// create a local datastore context for the data store context,
|
|
528
|
+
// which this message represents. All newly created data store
|
|
529
|
+
// contexts start as a local context on the client that created
|
|
530
|
+
// them, and for stashed ops, the client that applies it plays
|
|
531
|
+
// the role of creating client.
|
|
532
|
+
const dataStoreContext = new dataStoreContext_js_1.LocalFluidDataStoreContext({
|
|
533
|
+
id,
|
|
534
|
+
pkg: undefined,
|
|
535
|
+
parentContext: this.wrapContextForInnerChannel(id),
|
|
536
|
+
storage,
|
|
537
|
+
scope: this.parentContext.scope,
|
|
538
|
+
createSummarizerNodeFn: this.parentContext.getCreateChildSummarizerNodeFn(id, {
|
|
539
|
+
type: internal_4.CreateSummarizerNodeSource.FromSummary,
|
|
540
|
+
}),
|
|
541
|
+
makeLocallyVisibleFn: () => this.makeDataStoreLocallyVisible(id),
|
|
542
|
+
snapshotTree,
|
|
543
|
+
});
|
|
544
|
+
// realize the local context, as local contexts shouldn't be delay
|
|
545
|
+
// loaded, as this client is playing the role of creating client,
|
|
546
|
+
// and creating clients always create realized data store contexts.
|
|
547
|
+
const channel = await dataStoreContext.realize();
|
|
548
|
+
await channel.entryPoint.get();
|
|
549
|
+
// add to the list of bound or remoted, as this context must be bound
|
|
550
|
+
// to had an attach message sent, and is the non-detached case is remoted.
|
|
551
|
+
this.contexts.addBoundOrRemoted(dataStoreContext);
|
|
552
|
+
if (this.parentContext.attachState !== container_definitions_1.AttachState.Detached) {
|
|
553
|
+
// if the client is not detached put in the pending attach list
|
|
554
|
+
// so that on ack of the stashed op, the context is found.
|
|
555
|
+
// detached client don't send ops, so should not expect and ack.
|
|
556
|
+
this.pendingAttach.set(message.id, message);
|
|
557
|
+
}
|
|
525
558
|
}
|
|
526
559
|
process(message, local, localMessageMetadata, addedOutboundReference) {
|
|
527
560
|
switch (message.type) {
|
|
@@ -550,7 +583,7 @@ class ChannelCollection {
|
|
|
550
583
|
break;
|
|
551
584
|
}
|
|
552
585
|
default:
|
|
553
|
-
(0,
|
|
586
|
+
(0, internal_1.assert)(false, 0x8e9 /* unreached */);
|
|
554
587
|
}
|
|
555
588
|
}
|
|
556
589
|
processChannelOp(address, message, local, localMessageMetadata) {
|
|
@@ -562,13 +595,13 @@ class ChannelCollection {
|
|
|
562
595
|
}
|
|
563
596
|
if (context === undefined) {
|
|
564
597
|
// Former assert 0x162
|
|
565
|
-
throw
|
|
598
|
+
throw internal_6.DataProcessingError.create("No context for op", "processFluidDataStoreOp", message, {
|
|
566
599
|
local,
|
|
567
600
|
messageDetails: JSON.stringify({
|
|
568
601
|
type: message.type,
|
|
569
602
|
contentType: typeof message.contents,
|
|
570
603
|
}),
|
|
571
|
-
...(0,
|
|
604
|
+
...(0, internal_6.tagCodeArtifacts)({ address }),
|
|
572
605
|
});
|
|
573
606
|
}
|
|
574
607
|
context.process(message, local, localMessageMetadata);
|
|
@@ -581,13 +614,13 @@ class ChannelCollection {
|
|
|
581
614
|
if (this.checkAndLogIfDeleted(id, this.contexts.get(id), "Requested", "getDataStore", requestHeaderData)) {
|
|
582
615
|
// The requested data store has been deleted by gc. Create a 404 response exception.
|
|
583
616
|
const request = { url: id };
|
|
584
|
-
throw (0,
|
|
617
|
+
throw (0, internal_5.responseToException)((0, internal_5.createResponseError)(404, "DataStore was deleted", request), request);
|
|
585
618
|
}
|
|
586
619
|
const context = await this.contexts.getBoundOrRemoted(id, headerData.wait);
|
|
587
620
|
if (context === undefined) {
|
|
588
621
|
// The requested data store does not exits. Throw a 404 response exception.
|
|
589
622
|
const request = { url: id };
|
|
590
|
-
throw (0,
|
|
623
|
+
throw (0, internal_5.responseToException)((0, internal_5.create404Response)(request), request);
|
|
591
624
|
}
|
|
592
625
|
return context;
|
|
593
626
|
}
|
|
@@ -621,7 +654,7 @@ class ChannelCollection {
|
|
|
621
654
|
}
|
|
622
655
|
this.mc.logger.sendErrorEvent({
|
|
623
656
|
eventName: `GC_Deleted_DataStore_${deletedLogSuffix}`,
|
|
624
|
-
...(0,
|
|
657
|
+
...(0, internal_6.tagCodeArtifacts)({ id }),
|
|
625
658
|
callSite,
|
|
626
659
|
headers: JSON.stringify(requestHeaderData),
|
|
627
660
|
exists: context !== undefined,
|
|
@@ -640,10 +673,10 @@ class ChannelCollection {
|
|
|
640
673
|
}
|
|
641
674
|
if (!context) {
|
|
642
675
|
// Attach message may not have been processed yet
|
|
643
|
-
(0,
|
|
676
|
+
(0, internal_1.assert)(!local, 0x163 /* "Missing datastore for local signal" */);
|
|
644
677
|
this.mc.logger.sendTelemetryEvent({
|
|
645
678
|
eventName: "SignalFluidDataStoreNotFound",
|
|
646
|
-
...(0,
|
|
679
|
+
...(0, internal_6.tagCodeArtifacts)({
|
|
647
680
|
fluidDataStoreId,
|
|
648
681
|
}),
|
|
649
682
|
});
|
|
@@ -660,7 +693,7 @@ class ChannelCollection {
|
|
|
660
693
|
this.mc.logger.sendErrorEvent({
|
|
661
694
|
eventName: "SetConnectionStateError",
|
|
662
695
|
clientId,
|
|
663
|
-
...(0,
|
|
696
|
+
...(0, internal_6.tagCodeArtifacts)({
|
|
664
697
|
fluidDataStoreId,
|
|
665
698
|
}),
|
|
666
699
|
details: JSON.stringify({
|
|
@@ -683,7 +716,7 @@ class ChannelCollection {
|
|
|
683
716
|
return this.contexts.size;
|
|
684
717
|
}
|
|
685
718
|
async summarize(fullTree, trackState, telemetryContext) {
|
|
686
|
-
const summaryBuilder = new
|
|
719
|
+
const summaryBuilder = new internal_5.SummaryTreeBuilder();
|
|
687
720
|
// Iterate over each store and ask it to snapshot
|
|
688
721
|
await Promise.all(Array.from(this.contexts)
|
|
689
722
|
.filter(([_, context]) => {
|
|
@@ -692,7 +725,7 @@ class ChannelCollection {
|
|
|
692
725
|
// had not yet round tripped back to the client.
|
|
693
726
|
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
694
727
|
// Formerly assert 0x588
|
|
695
|
-
const error =
|
|
728
|
+
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state during summarize", "summarize");
|
|
696
729
|
throw error;
|
|
697
730
|
}
|
|
698
731
|
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
@@ -707,7 +740,7 @@ class ChannelCollection {
|
|
|
707
740
|
* Create a summary. Used when attaching or serializing a detached container.
|
|
708
741
|
*/
|
|
709
742
|
getAttachSummary(telemetryContext) {
|
|
710
|
-
const builder = new
|
|
743
|
+
const builder = new internal_5.SummaryTreeBuilder();
|
|
711
744
|
// Attaching graph of some stores can cause other stores to get bound too.
|
|
712
745
|
// So keep taking summary until no new stores get bound.
|
|
713
746
|
let notBoundContextsLength;
|
|
@@ -732,8 +765,8 @@ class ChannelCollection {
|
|
|
732
765
|
else {
|
|
733
766
|
// If this data store is not yet loaded, then there should be no changes in the snapshot from
|
|
734
767
|
// which it was created as it is detached container. So just use the previous snapshot.
|
|
735
|
-
(0,
|
|
736
|
-
dataStoreSummary = (0,
|
|
768
|
+
(0, internal_1.assert)(!!this.baseSnapshot, 0x166 /* "BaseSnapshot should be there as detached container loaded from snapshot" */);
|
|
769
|
+
dataStoreSummary = (0, internal_5.convertSnapshotTreeToSummaryTree)(this.baseSnapshot.trees[key]);
|
|
737
770
|
}
|
|
738
771
|
builder.addWithStats(key, dataStoreSummary);
|
|
739
772
|
});
|
|
@@ -748,10 +781,10 @@ class ChannelCollection {
|
|
|
748
781
|
async updateStateBeforeGC() {
|
|
749
782
|
for (const id of this.dataStoresSinceLastGC) {
|
|
750
783
|
const context = this.contexts.get(id);
|
|
751
|
-
(0,
|
|
784
|
+
(0, internal_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
|
|
752
785
|
if (await context.isRoot()) {
|
|
753
786
|
// A root data store is basically a reference from the container runtime to the data store.
|
|
754
|
-
const handle = new
|
|
787
|
+
const handle = new internal_2.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
|
|
755
788
|
this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
|
|
756
789
|
}
|
|
757
790
|
}
|
|
@@ -771,7 +804,7 @@ class ChannelCollection {
|
|
|
771
804
|
* @param fullGC - true to bypass optimizations and force full generation of GC data.
|
|
772
805
|
*/
|
|
773
806
|
async getGCData(fullGC = false) {
|
|
774
|
-
const builder = new
|
|
807
|
+
const builder = new internal_5.GCDataBuilder();
|
|
775
808
|
// Iterate over each store and get their GC data.
|
|
776
809
|
await Promise.all(Array.from(this.contexts)
|
|
777
810
|
.filter(([_, context]) => {
|
|
@@ -780,7 +813,7 @@ class ChannelCollection {
|
|
|
780
813
|
// had not yet round tripped back to the client.
|
|
781
814
|
// Formerly assert 0x589
|
|
782
815
|
if (context.attachState === container_definitions_1.AttachState.Attaching) {
|
|
783
|
-
const error =
|
|
816
|
+
const error = internal_6.DataProcessingError.create("Local data store detected in attaching state while running GC", "getGCData");
|
|
784
817
|
throw error;
|
|
785
818
|
}
|
|
786
819
|
return context.attachState === container_definitions_1.AttachState.Attached;
|
|
@@ -801,10 +834,10 @@ class ChannelCollection {
|
|
|
801
834
|
*/
|
|
802
835
|
updateUsedRoutes(usedRoutes) {
|
|
803
836
|
// Get a map of data store ids to routes used in it.
|
|
804
|
-
const usedDataStoreRoutes = (0,
|
|
837
|
+
const usedDataStoreRoutes = (0, internal_5.unpackChildNodesUsedRoutes)(usedRoutes);
|
|
805
838
|
// Verify that the used routes are correct.
|
|
806
839
|
for (const [id] of usedDataStoreRoutes) {
|
|
807
|
-
(0,
|
|
840
|
+
(0, internal_1.assert)(this.contexts.has(id), 0x167 /* "Used route does not belong to any known data store" */);
|
|
808
841
|
}
|
|
809
842
|
// Update the used routes in each data store. Used routes is empty for unused data stores.
|
|
810
843
|
for (const [contextId, context] of this.contexts) {
|
|
@@ -813,7 +846,7 @@ class ChannelCollection {
|
|
|
813
846
|
}
|
|
814
847
|
deleteChild(dataStoreId) {
|
|
815
848
|
const dataStoreContext = this.contexts.get(dataStoreId);
|
|
816
|
-
(0,
|
|
849
|
+
(0, internal_1.assert)(dataStoreContext !== undefined, 0x2d7 /* No data store with specified id */);
|
|
817
850
|
dataStoreContext.delete();
|
|
818
851
|
// Delete the contexts of unused data stores.
|
|
819
852
|
this.contexts.delete(dataStoreId);
|
|
@@ -845,7 +878,7 @@ class ChannelCollection {
|
|
|
845
878
|
this.mc.logger.sendTelemetryEvent({
|
|
846
879
|
eventName: "DeletedDataStoreNotFound",
|
|
847
880
|
category: alreadyDeleted ? "generic" : "error",
|
|
848
|
-
...(0,
|
|
881
|
+
...(0, internal_6.tagCodeArtifacts)({ id: dataStoreId }),
|
|
849
882
|
details: { alreadyDeleted },
|
|
850
883
|
});
|
|
851
884
|
continue;
|
|
@@ -871,7 +904,7 @@ class ChannelCollection {
|
|
|
871
904
|
continue;
|
|
872
905
|
}
|
|
873
906
|
const dataStoreId = pathParts[1];
|
|
874
|
-
(0,
|
|
907
|
+
(0, internal_1.assert)(this.contexts.has(dataStoreId), 0x510 /* No data store with specified id */);
|
|
875
908
|
tombstonedDataStoresSet.add(dataStoreId);
|
|
876
909
|
}
|
|
877
910
|
// Update the used routes in each data store. Used routes is empty for unused data stores.
|
|
@@ -922,7 +955,7 @@ class ChannelCollection {
|
|
|
922
955
|
return this.aliases.get(maybeAlias) ?? maybeAlias;
|
|
923
956
|
}
|
|
924
957
|
async request(request) {
|
|
925
|
-
const requestParser =
|
|
958
|
+
const requestParser = internal_5.RequestParser.create(request);
|
|
926
959
|
const id = requestParser.pathParts[0];
|
|
927
960
|
// Differentiate between requesting the dataStore directly, or one of its children
|
|
928
961
|
const requestForChild = !requestParser.isLeaf(1);
|
|
@@ -958,7 +991,7 @@ class ChannelCollection {
|
|
|
958
991
|
const subRequest = requestParser.createSubRequest(1);
|
|
959
992
|
// We always expect createSubRequest to include a leading slash, but asserting here to protect against
|
|
960
993
|
// unintentionally modifying the url if that changes.
|
|
961
|
-
(0,
|
|
994
|
+
(0, internal_1.assert)(subRequest.url.startsWith("/"), 0x126 /* "Expected createSubRequest url to include a leading slash" */);
|
|
962
995
|
return dataStore.request(subRequest);
|
|
963
996
|
}
|
|
964
997
|
}
|
|
@@ -968,8 +1001,8 @@ function getSummaryForDatastores(snapshot, metadata) {
|
|
|
968
1001
|
return undefined;
|
|
969
1002
|
}
|
|
970
1003
|
if ((0, index_js_2.rootHasIsolatedChannels)(metadata)) {
|
|
971
|
-
const datastoresSnapshot = snapshot.trees[
|
|
972
|
-
(0,
|
|
1004
|
+
const datastoresSnapshot = snapshot.trees[internal_4.channelsTreeName];
|
|
1005
|
+
(0, internal_1.assert)(!!datastoresSnapshot, 0x168 /* Expected tree in snapshot not found */);
|
|
973
1006
|
return datastoresSnapshot;
|
|
974
1007
|
}
|
|
975
1008
|
else {
|
|
@@ -1000,7 +1033,7 @@ function detectOutboundReferences(address, contents, addedOutboundReference) {
|
|
|
1000
1033
|
if (typeof obj === "object" && obj !== null) {
|
|
1001
1034
|
for (const [key, value] of Object.entries(obj)) {
|
|
1002
1035
|
// If 'value' is a serialized IFluidHandle, it represents a new outbound route.
|
|
1003
|
-
if ((0,
|
|
1036
|
+
if ((0, internal_5.isSerializedHandle)(value)) {
|
|
1004
1037
|
outboundPaths.push(value.url);
|
|
1005
1038
|
}
|
|
1006
1039
|
// NOTE: This is taking a hard dependency on the fact that in our DataStore implementation,
|