@fluidframework/container-runtime 2.0.0-dev-rc.2.0.0.245554 → 2.0.0-dev-rc.3.0.0.250606
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 +81 -27
- package/dist/batchTracker.d.ts +1 -1
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +2 -2
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +3 -3
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +3 -3
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +6 -5
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +57 -19
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +3 -3
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +205 -12
- package/dist/container-runtime-beta.d.ts +16 -3
- package/dist/container-runtime-public.d.ts +16 -3
- package/dist/container-runtime-untrimmed.d.ts +207 -26
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +32 -26
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +235 -133
- 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 +2 -2
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +4 -4
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +18 -18
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +4 -0
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +2 -2
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +1 -1
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +1 -1
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +1 -1
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.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/definitions.d.ts +1 -19
- 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 +2 -3
- 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 +60 -61
- 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 +9 -11
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +11 -3
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +48 -38
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +18 -17
- 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.map +1 -1
- package/dist/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +6 -2
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +178 -0
- package/dist/summary/documentSchema.d.ts.map +1 -0
- package/dist/summary/documentSchema.js +345 -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 +7 -2
- 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.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +2 -2
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +2 -2
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +2 -2
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +2 -2
- 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.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -2
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +3 -3
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +3 -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 +1 -1
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +5 -16
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +2 -2
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +2 -2
- 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 +2 -2
- 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 +3 -3
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +5 -5
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +6 -5
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +59 -21
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- 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 +205 -12
- package/lib/container-runtime-beta.d.ts +16 -3
- package/lib/container-runtime-public.d.ts +16 -3
- package/lib/container-runtime-untrimmed.d.ts +207 -26
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +32 -26
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +197 -95
- 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 +4 -4
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +3 -3
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +4 -0
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.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/gc/garbageCollection.d.ts +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +3 -3
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +1 -1
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +1 -1
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +1 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +1 -1
- package/lib/gc/gcTelemetry.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/definitions.d.ts +1 -19
- 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 +60 -61
- 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 +7 -10
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +11 -3
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +46 -37
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +18 -17
- 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.map +1 -1
- package/lib/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +6 -2
- package/lib/scheduleManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +178 -0
- package/lib/summary/documentSchema.d.ts.map +1 -0
- package/lib/summary/documentSchema.js +341 -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.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +2 -2
- 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 +2 -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.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +4 -4
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +3 -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 +5 -16
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +2 -2
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +3 -3
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +2 -2
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/test/blobManager.spec.js +3 -3
- package/lib/test/blobManager.spec.js.map +1 -1
- package/lib/test/containerRuntime.spec.js +6 -4
- package/lib/test/containerRuntime.spec.js.map +1 -1
- package/lib/test/dataStoreContext.spec.js +4 -4
- package/lib/test/dataStoreContext.spec.js.map +1 -1
- package/lib/test/dataStoreCreation.spec.js +1 -1
- package/lib/test/dataStoreCreation.spec.js.map +1 -1
- package/lib/test/dataStoreRegistry.spec.js.map +1 -1
- package/lib/test/documentSchema.spec.js +282 -0
- package/lib/test/documentSchema.spec.js.map +1 -0
- package/lib/test/fuzz/fuzzUtils.js +11 -7
- package/lib/test/fuzz/fuzzUtils.js.map +1 -1
- package/lib/test/fuzz/summarizer.fuzz.spec.js +9 -7
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -1
- package/lib/test/fuzz/summarizerFuzzMocks.js +43 -25
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -1
- package/lib/test/fuzz/summarizerFuzzSuite.js +7 -4
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -1
- package/lib/test/gc/garbageCollection.spec.js +5 -5
- package/lib/test/gc/garbageCollection.spec.js.map +1 -1
- package/lib/test/gc/gcConfigs.spec.js +2 -2
- package/lib/test/gc/gcConfigs.spec.js.map +1 -1
- package/lib/test/gc/gcHelpers.spec.js.map +1 -1
- package/lib/test/gc/gcStats.spec.js +2 -2
- package/lib/test/gc/gcStats.spec.js.map +1 -1
- package/lib/test/gc/gcSummaryStateTracker.spec.js +1 -1
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -1
- package/lib/test/gc/gcTelemetry.spec.js +3 -3
- package/lib/test/gc/gcTelemetry.spec.js.map +1 -1
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +1 -1
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -1
- package/lib/test/getPendingBlobs.spec.js +1 -1
- package/lib/test/getPendingBlobs.spec.js.map +1 -1
- package/lib/test/hardwareStats.spec.js +1 -1
- package/lib/test/hardwareStats.spec.js.map +1 -1
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +95 -118
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -1
- package/lib/test/opLifecycle/batchManager.spec.js +1 -1
- package/lib/test/opLifecycle/batchManager.spec.js.map +1 -1
- package/lib/test/opLifecycle/opCompressor.spec.js +0 -1
- package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -1
- package/lib/test/opLifecycle/opDecompressor.spec.js +60 -55
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -1
- package/lib/test/opLifecycle/opSplitter.spec.js +56 -41
- package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -1
- package/lib/test/opLifecycle/outbox.spec.js +118 -10
- package/lib/test/opLifecycle/outbox.spec.js.map +1 -1
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +115 -91
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -1
- package/lib/test/pendingStateManager.spec.js +1 -1
- package/lib/test/pendingStateManager.spec.js.map +1 -1
- package/lib/test/scheduleManager.spec.js +1 -1
- package/lib/test/scheduleManager.spec.js.map +1 -1
- package/lib/test/summarizerNode.spec.js +1 -1
- package/lib/test/summarizerNode.spec.js.map +1 -1
- package/lib/test/summarizerNodeWithGc.spec.js +1 -1
- package/lib/test/summarizerNodeWithGc.spec.js.map +1 -1
- package/lib/test/summary/runningSummarizer.spec.js +4 -4
- package/lib/test/summary/runningSummarizer.spec.js.map +1 -1
- package/lib/test/summary/summarizer.spec.js.map +1 -1
- package/lib/test/summary/summarizerClientElection.spec.js +2 -2
- package/lib/test/summary/summarizerClientElection.spec.js.map +1 -1
- package/lib/test/summary/summarizerHeuristics.spec.js +1 -1
- package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -1
- package/lib/test/summary/summaryCollection.spec.js +1 -1
- package/lib/test/summary/summaryCollection.spec.js.map +1 -1
- package/lib/test/summary/summaryManager.spec.js +3 -3
- package/lib/test/summary/summaryManager.spec.js.map +1 -1
- package/lib/test/throttler.spec.js +1 -1
- package/lib/test/throttler.spec.js.map +1 -1
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +6 -4
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -1
- package/package.json +35 -21
- package/src/batchTracker.ts +3 -3
- package/src/blobManager.ts +15 -15
- package/src/channelCollection.ts +90 -44
- package/src/connectionTelemetry.ts +10 -10
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +375 -213
- package/src/dataStore.ts +2 -2
- package/src/dataStoreContext.ts +19 -19
- package/src/dataStoreContexts.ts +2 -2
- package/src/dataStoreRegistry.ts +2 -1
- package/src/deltaScheduler.ts +1 -1
- package/src/gc/garbageCollection.ts +12 -12
- package/src/gc/gcConfigs.ts +11 -11
- package/src/gc/gcDefinitions.ts +2 -2
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcSummaryStateTracker.ts +4 -4
- package/src/gc/gcTelemetry.ts +6 -6
- package/src/index.ts +8 -1
- package/src/messageTypes.ts +18 -5
- package/src/opLifecycle/README.md +89 -0
- package/src/opLifecycle/definitions.ts +1 -20
- package/src/opLifecycle/index.ts +3 -9
- package/src/opLifecycle/opCompressor.ts +4 -5
- package/src/opLifecycle/opDecompressor.ts +83 -100
- package/src/opLifecycle/opGroupingManager.ts +9 -12
- package/src/opLifecycle/opSplitter.ts +73 -47
- package/src/opLifecycle/outbox.ts +26 -37
- package/src/opLifecycle/remoteMessageProcessor.ts +41 -55
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +2 -2
- package/src/scheduleManager.ts +8 -7
- package/src/summary/documentSchema.ts +553 -0
- package/src/summary/index.ts +10 -1
- package/src/summary/orderedClientElection.ts +7 -5
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +19 -19
- package/src/summary/summarizer.ts +14 -14
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +2 -2
- package/src/summary/summarizerNode/summarizerNode.ts +15 -15
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +1 -1
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -4
- package/src/summary/summarizerTypes.ts +3 -3
- package/src/summary/summaryCollection.ts +3 -3
- package/src/summary/summaryFormat.ts +8 -19
- package/src/summary/summaryGenerator.ts +10 -10
- package/src/summary/summaryManager.ts +4 -4
package/src/dataStore.ts
CHANGED
|
@@ -3,15 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
|
|
7
|
-
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
8
6
|
import { AttachState } from "@fluidframework/container-definitions";
|
|
9
7
|
import { FluidObject, IFluidHandle } from "@fluidframework/core-interfaces";
|
|
8
|
+
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
10
9
|
import {
|
|
11
10
|
AliasResult,
|
|
12
11
|
IDataStore,
|
|
13
12
|
IFluidDataStoreChannel,
|
|
14
13
|
} from "@fluidframework/runtime-definitions";
|
|
14
|
+
import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
|
|
15
15
|
import { ChannelCollection } from "./channelCollection.js";
|
|
16
16
|
import { ContainerMessageType } from "./messageTypes.js";
|
|
17
17
|
|
package/src/dataStoreContext.ts
CHANGED
|
@@ -3,21 +3,21 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
7
|
+
import { AttachState, IAudience, IDeltaManager } from "@fluidframework/container-definitions";
|
|
6
8
|
import {
|
|
7
|
-
IDisposable,
|
|
8
9
|
FluidObject,
|
|
10
|
+
IDisposable,
|
|
11
|
+
IFluidHandle,
|
|
9
12
|
IRequest,
|
|
10
13
|
IResponse,
|
|
11
|
-
IFluidHandle,
|
|
12
14
|
ITelemetryBaseProperties,
|
|
13
15
|
} from "@fluidframework/core-interfaces";
|
|
14
|
-
import {
|
|
15
|
-
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
16
|
+
import { IEvent } from "@fluidframework/core-interfaces";
|
|
16
17
|
import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils";
|
|
17
18
|
import { IDocumentStorageService } from "@fluidframework/driver-definitions";
|
|
18
19
|
import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
|
|
19
20
|
import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
20
|
-
import { IEvent } from "@fluidframework/common-definitions";
|
|
21
21
|
import {
|
|
22
22
|
IClientDetails,
|
|
23
23
|
IDocumentMessage,
|
|
@@ -27,16 +27,16 @@ import {
|
|
|
27
27
|
ITreeEntry,
|
|
28
28
|
} from "@fluidframework/protocol-definitions";
|
|
29
29
|
import {
|
|
30
|
-
channelsTreeName,
|
|
31
30
|
CreateChildSummarizerNodeFn,
|
|
32
31
|
CreateChildSummarizerNodeParam,
|
|
33
32
|
FluidDataStoreRegistryEntry,
|
|
33
|
+
IContainerRuntimeBase,
|
|
34
|
+
IDataStore,
|
|
34
35
|
IFluidDataStoreChannel,
|
|
35
36
|
IFluidDataStoreContext,
|
|
36
|
-
IFluidParentContext,
|
|
37
|
-
IContainerRuntimeBase,
|
|
38
37
|
IFluidDataStoreContextDetached,
|
|
39
38
|
IFluidDataStoreRegistry,
|
|
39
|
+
IFluidParentContext,
|
|
40
40
|
IGarbageCollectionData,
|
|
41
41
|
IGarbageCollectionDetailsBase,
|
|
42
42
|
IInboundSignalMessage,
|
|
@@ -44,35 +44,35 @@ import {
|
|
|
44
44
|
ISummarizeInternalResult,
|
|
45
45
|
ISummarizeResult,
|
|
46
46
|
ISummarizerNodeWithGC,
|
|
47
|
-
SummarizeInternalFn,
|
|
48
|
-
ITelemetryContext,
|
|
49
47
|
ISummaryTreeWithStats,
|
|
50
|
-
|
|
48
|
+
ITelemetryContext,
|
|
49
|
+
SummarizeInternalFn,
|
|
50
|
+
channelsTreeName,
|
|
51
51
|
gcDataBlobKey,
|
|
52
52
|
} from "@fluidframework/runtime-definitions";
|
|
53
53
|
import { addBlobToSummary } from "@fluidframework/runtime-utils";
|
|
54
54
|
import {
|
|
55
|
-
createChildMonitoringContext,
|
|
56
55
|
DataCorruptionError,
|
|
57
56
|
DataProcessingError,
|
|
58
|
-
extractSafePropertiesFromMessage,
|
|
59
|
-
generateStack,
|
|
60
57
|
LoggingError,
|
|
61
58
|
MonitoringContext,
|
|
62
|
-
tagCodeArtifacts,
|
|
63
59
|
ThresholdCounter,
|
|
60
|
+
createChildMonitoringContext,
|
|
61
|
+
extractSafePropertiesFromMessage,
|
|
62
|
+
generateStack,
|
|
63
|
+
tagCodeArtifacts,
|
|
64
64
|
} from "@fluidframework/telemetry-utils";
|
|
65
|
+
import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
|
|
65
66
|
import {
|
|
66
|
-
dataStoreAttributesBlobName,
|
|
67
|
-
hasIsolatedChannels,
|
|
68
|
-
wrapSummaryInChannelsTree,
|
|
69
67
|
ReadFluidDataStoreAttributes,
|
|
70
68
|
WriteFluidDataStoreAttributes,
|
|
69
|
+
dataStoreAttributesBlobName,
|
|
71
70
|
getAttributesFormatVersion,
|
|
72
71
|
getFluidDataStoreAttributes,
|
|
72
|
+
hasIsolatedChannels,
|
|
73
73
|
summarizerClientType,
|
|
74
|
+
wrapSummaryInChannelsTree,
|
|
74
75
|
} from "./summary/index.js";
|
|
75
|
-
import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
|
|
76
76
|
|
|
77
77
|
function createAttributes(
|
|
78
78
|
pkg: readonly string[],
|
package/src/dataStoreContexts.ts
CHANGED
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
|
|
7
6
|
import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
8
|
-
import {
|
|
7
|
+
import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
|
|
8
|
+
import { ITelemetryLoggerExt, createChildLogger } from "@fluidframework/telemetry-utils";
|
|
9
9
|
import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext.js";
|
|
10
10
|
|
|
11
11
|
/** @internal */
|
package/src/dataStoreRegistry.ts
CHANGED
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
|
-
|
|
5
|
+
|
|
6
6
|
import {
|
|
7
7
|
FluidDataStoreRegistryEntry,
|
|
8
8
|
IFluidDataStoreRegistry,
|
|
9
9
|
NamedFluidDataStoreRegistryEntries,
|
|
10
10
|
} from "@fluidframework/runtime-definitions";
|
|
11
|
+
import { UsageError } from "@fluidframework/telemetry-utils";
|
|
11
12
|
|
|
12
13
|
/**
|
|
13
14
|
* @internal
|
package/src/deltaScheduler.ts
CHANGED
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
|
|
7
6
|
import { performance } from "@fluid-internal/client-utils";
|
|
8
7
|
import { IDeltaManager } from "@fluidframework/container-definitions";
|
|
9
8
|
import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
9
|
+
import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
|
|
@@ -3,23 +3,23 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
|
|
7
6
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
7
|
+
import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
|
|
8
8
|
import {
|
|
9
|
-
gcTreeKey,
|
|
10
9
|
IGarbageCollectionData,
|
|
11
10
|
IGarbageCollectionDetailsBase,
|
|
12
11
|
ISummarizeResult,
|
|
13
12
|
ITelemetryContext,
|
|
13
|
+
gcTreeKey,
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
15
|
import { createResponseError, responseToException } from "@fluidframework/runtime-utils";
|
|
16
16
|
import {
|
|
17
|
-
createChildLogger,
|
|
18
|
-
createChildMonitoringContext,
|
|
19
17
|
DataProcessingError,
|
|
20
18
|
ITelemetryLoggerExt,
|
|
21
19
|
MonitoringContext,
|
|
22
20
|
PerformanceEvent,
|
|
21
|
+
createChildLogger,
|
|
22
|
+
createChildMonitoringContext,
|
|
23
23
|
tagCodeArtifacts,
|
|
24
24
|
} from "@fluidframework/telemetry-utils";
|
|
25
25
|
import { BlobManager } from "../blobManager.js";
|
|
@@ -34,18 +34,18 @@ import { IRefreshSummaryResult } from "../summary/index.js";
|
|
|
34
34
|
import { generateGCConfigs } from "./gcConfigs.js";
|
|
35
35
|
import {
|
|
36
36
|
GCNodeType,
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
GarbageCollectionMessage,
|
|
38
|
+
GarbageCollectionMessageType,
|
|
39
|
+
IGCMetadata,
|
|
40
40
|
IGCResult,
|
|
41
41
|
IGCStats,
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
IGarbageCollectionRuntime,
|
|
43
|
+
IGarbageCollector,
|
|
44
44
|
IGarbageCollectorConfigs,
|
|
45
|
+
IGarbageCollectorCreateParams,
|
|
45
46
|
IMarkPhaseStats,
|
|
46
47
|
ISweepPhaseStats,
|
|
47
|
-
|
|
48
|
-
GarbageCollectionMessageType,
|
|
48
|
+
UnreferencedState,
|
|
49
49
|
disableAutoRecoveryKey,
|
|
50
50
|
} from "./gcDefinitions.js";
|
|
51
51
|
import {
|
|
@@ -57,11 +57,11 @@ import {
|
|
|
57
57
|
import { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
|
|
58
58
|
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
|
|
59
59
|
import { GCSummaryStateTracker } from "./gcSummaryStateTracker.js";
|
|
60
|
+
import { GCTelemetryTracker } from "./gcTelemetry.js";
|
|
60
61
|
import {
|
|
61
62
|
UnreferencedStateTracker,
|
|
62
63
|
UnreferencedStateTrackerMap,
|
|
63
64
|
} from "./gcUnreferencedStateTracker.js";
|
|
64
|
-
import { GCTelemetryTracker } from "./gcTelemetry.js";
|
|
65
65
|
|
|
66
66
|
/**
|
|
67
67
|
* The garbage collector for the container runtime. It consolidates the garbage collection functionality and maintains
|
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -10,17 +10,23 @@ import {
|
|
|
10
10
|
} from "@fluidframework/telemetry-utils";
|
|
11
11
|
import { IContainerRuntimeMetadata } from "../summary/index.js";
|
|
12
12
|
import {
|
|
13
|
-
|
|
13
|
+
GCFeatureMatrix,
|
|
14
|
+
GCVersion,
|
|
15
|
+
IGCMetadata_Deprecated,
|
|
16
|
+
IGCRuntimeOptions,
|
|
17
|
+
IGarbageCollectorConfigs,
|
|
14
18
|
defaultInactiveTimeoutMs,
|
|
15
19
|
defaultSessionExpiryDurationMs,
|
|
20
|
+
defaultSweepGracePeriodMs,
|
|
21
|
+
disableDatastoreSweepKey,
|
|
16
22
|
disableTombstoneKey,
|
|
17
|
-
|
|
23
|
+
gcDisableDataStoreSweepOptionName,
|
|
24
|
+
gcDisableThrowOnTombstoneLoadOptionName,
|
|
25
|
+
gcGenerationOptionName,
|
|
18
26
|
gcTestModeKey,
|
|
19
|
-
GCVersion,
|
|
20
27
|
gcVersionUpgradeToV4Key,
|
|
21
|
-
IGarbageCollectorConfigs,
|
|
22
|
-
IGCRuntimeOptions,
|
|
23
28
|
maxSnapshotCacheExpiryMs,
|
|
29
|
+
nextGCVersion,
|
|
24
30
|
oneDayMs,
|
|
25
31
|
runGCKey,
|
|
26
32
|
runSessionExpiryKey,
|
|
@@ -28,12 +34,6 @@ import {
|
|
|
28
34
|
stableGCVersion,
|
|
29
35
|
throwOnTombstoneLoadOverrideKey,
|
|
30
36
|
throwOnTombstoneUsageKey,
|
|
31
|
-
gcDisableThrowOnTombstoneLoadOptionName,
|
|
32
|
-
defaultSweepGracePeriodMs,
|
|
33
|
-
gcGenerationOptionName,
|
|
34
|
-
IGCMetadata_Deprecated,
|
|
35
|
-
disableDatastoreSweepKey,
|
|
36
|
-
gcDisableDataStoreSweepOptionName,
|
|
37
37
|
} from "./gcDefinitions.js";
|
|
38
38
|
import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
39
39
|
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -14,13 +14,13 @@ import {
|
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
15
|
import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
|
|
16
16
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
17
|
+
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
18
|
+
import { ContainerRuntimeGCMessage } from "../messageTypes.js";
|
|
17
19
|
import {
|
|
18
20
|
IContainerRuntimeMetadata,
|
|
19
21
|
ICreateContainerMetadata,
|
|
20
22
|
IRefreshSummaryResult,
|
|
21
23
|
} from "../summary/index.js";
|
|
22
|
-
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
23
|
-
import { ContainerRuntimeGCMessage } from "../messageTypes.js";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @alpha
|
package/src/gc/gcHelpers.ts
CHANGED
|
@@ -6,11 +6,11 @@
|
|
|
6
6
|
import { assert } from "@fluidframework/core-utils";
|
|
7
7
|
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
8
8
|
import {
|
|
9
|
+
IGarbageCollectionData,
|
|
10
|
+
IGarbageCollectionDetailsBase,
|
|
9
11
|
gcBlobPrefix,
|
|
10
12
|
gcDeletedBlobKey,
|
|
11
13
|
gcTombstoneBlobKey,
|
|
12
|
-
IGarbageCollectionData,
|
|
13
|
-
IGarbageCollectionDetailsBase,
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
15
|
import { GCFeatureMatrix, GCVersion, IGCMetadata } from "./gcDefinitions.js";
|
|
16
16
|
import {
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
|
|
6
6
|
import { SummaryType } from "@fluidframework/protocol-definitions";
|
|
7
7
|
import {
|
|
8
|
+
ISummarizeResult,
|
|
9
|
+
ISummaryTreeWithStats,
|
|
8
10
|
gcBlobPrefix,
|
|
9
11
|
gcDeletedBlobKey,
|
|
10
12
|
gcTombstoneBlobKey,
|
|
11
13
|
gcTreeKey,
|
|
12
|
-
ISummarizeResult,
|
|
13
|
-
ISummaryTreeWithStats,
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
|
-
import {
|
|
15
|
+
import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils";
|
|
16
16
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
17
|
-
import { GCVersion,
|
|
17
|
+
import { GCVersion, IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
|
|
18
18
|
import { generateSortedGCState } from "./gcHelpers.js";
|
|
19
19
|
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
|
|
20
20
|
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -5,23 +5,23 @@
|
|
|
5
5
|
|
|
6
6
|
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
type ITelemetryGenericEventExt,
|
|
9
9
|
ITelemetryLoggerExt,
|
|
10
10
|
MonitoringContext,
|
|
11
|
+
generateStack,
|
|
11
12
|
tagCodeArtifacts,
|
|
12
|
-
type ITelemetryGenericEventExt,
|
|
13
13
|
} from "@fluidframework/telemetry-utils";
|
|
14
14
|
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
15
15
|
import { ICreateContainerMetadata } from "../summary/index.js";
|
|
16
16
|
import {
|
|
17
|
+
GCFeatureMatrix,
|
|
17
18
|
GCNodeType,
|
|
18
|
-
UnreferencedState,
|
|
19
19
|
IGarbageCollectorConfigs,
|
|
20
|
+
UnreferencedState,
|
|
20
21
|
disableTombstoneKey,
|
|
21
|
-
throwOnTombstoneUsageKey,
|
|
22
|
-
throwOnTombstoneLoadOverrideKey,
|
|
23
22
|
runSweepKey,
|
|
24
|
-
|
|
23
|
+
throwOnTombstoneLoadOverrideKey,
|
|
24
|
+
throwOnTombstoneUsageKey,
|
|
25
25
|
} from "./gcDefinitions.js";
|
|
26
26
|
import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
|
|
27
27
|
|
package/src/index.ts
CHANGED
|
@@ -11,7 +11,6 @@ export {
|
|
|
11
11
|
ISummaryConfigurationDisableHeuristics,
|
|
12
12
|
IContainerRuntimeOptions,
|
|
13
13
|
isRuntimeMessage,
|
|
14
|
-
RuntimeMessage,
|
|
15
14
|
agentSchedulerId,
|
|
16
15
|
ContainerRuntime,
|
|
17
16
|
TombstoneResponseHeaderKey,
|
|
@@ -21,6 +20,7 @@ export {
|
|
|
21
20
|
ICompressionRuntimeOptions,
|
|
22
21
|
CompressionAlgorithms,
|
|
23
22
|
RuntimeHeaderData,
|
|
23
|
+
disabledCompressionConfig,
|
|
24
24
|
} from "./containerRuntime.js";
|
|
25
25
|
export {
|
|
26
26
|
ContainerMessageType,
|
|
@@ -98,6 +98,13 @@ export {
|
|
|
98
98
|
IRetriableFailureResult,
|
|
99
99
|
ISummarizeEventProps,
|
|
100
100
|
IdCompressorMode,
|
|
101
|
+
IDocumentSchema,
|
|
102
|
+
DocumentSchemaValueType,
|
|
103
|
+
IDocumentSchemaCurrent,
|
|
104
|
+
currentDocumentVersionSchema,
|
|
105
|
+
DocumentsSchemaController,
|
|
106
|
+
IDocumentSchemaChangeMessage,
|
|
107
|
+
IDocumentSchemaFeatures,
|
|
101
108
|
} from "./summary/index.js";
|
|
102
109
|
export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.js";
|
|
103
110
|
export { ChannelCollection } from "./channelCollection.js";
|
package/src/messageTypes.ts
CHANGED
|
@@ -3,16 +3,17 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { IdCreationRange } from "@fluidframework/id-compressor";
|
|
6
7
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
7
8
|
import {
|
|
9
|
+
IAttachMessage,
|
|
8
10
|
IEnvelope,
|
|
9
11
|
InboundAttachMessage,
|
|
10
|
-
IAttachMessage,
|
|
11
12
|
} from "@fluidframework/runtime-definitions";
|
|
12
|
-
import type { IdCreationRange } from "@fluidframework/id-compressor";
|
|
13
13
|
import { IDataStoreAliasMessage } from "./dataStore.js";
|
|
14
14
|
import { GarbageCollectionMessage } from "./gc/index.js";
|
|
15
15
|
import { IChunkedOp } from "./opLifecycle/index.js";
|
|
16
|
+
import { IDocumentSchemaChangeMessage } from "./summary/index.js";
|
|
16
17
|
|
|
17
18
|
/**
|
|
18
19
|
* @alpha
|
|
@@ -43,6 +44,11 @@ export enum ContainerMessageType {
|
|
|
43
44
|
*/
|
|
44
45
|
IdAllocation = "idAllocation",
|
|
45
46
|
|
|
47
|
+
/**
|
|
48
|
+
* An op that changes document schema
|
|
49
|
+
*/
|
|
50
|
+
DocumentSchemaChange = "schema",
|
|
51
|
+
|
|
46
52
|
/**
|
|
47
53
|
* Garbage collection specific op. This is sent by the summarizer client when GC runs. It's used to synchronize GC
|
|
48
54
|
* state across all clients.
|
|
@@ -131,6 +137,10 @@ export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
|
|
|
131
137
|
ContainerMessageType.GC,
|
|
132
138
|
GarbageCollectionMessage
|
|
133
139
|
>;
|
|
140
|
+
export type ContainerRuntimeDocumentSchemaMessage = TypedContainerRuntimeMessage<
|
|
141
|
+
ContainerMessageType.DocumentSchemaChange,
|
|
142
|
+
IDocumentSchemaChangeMessage
|
|
143
|
+
>;
|
|
134
144
|
|
|
135
145
|
/**
|
|
136
146
|
* Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
|
|
@@ -161,7 +171,8 @@ export type InboundContainerRuntimeMessage =
|
|
|
161
171
|
| ContainerRuntimeIdAllocationMessage
|
|
162
172
|
| ContainerRuntimeGCMessage
|
|
163
173
|
// Inbound messages may include unknown types from other clients, so we include that as a special case here
|
|
164
|
-
| UnknownContainerRuntimeMessage
|
|
174
|
+
| UnknownContainerRuntimeMessage
|
|
175
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
165
176
|
|
|
166
177
|
/** A {@link TypedContainerRuntimeMessage} that has been generated by the container runtime but is not yet being sent to the server. */
|
|
167
178
|
export type LocalContainerRuntimeMessage =
|
|
@@ -174,7 +185,8 @@ export type LocalContainerRuntimeMessage =
|
|
|
174
185
|
| ContainerRuntimeIdAllocationMessage
|
|
175
186
|
| ContainerRuntimeGCMessage
|
|
176
187
|
// In rare cases (e.g. related to stashed ops) we could have a local message of an unknown type
|
|
177
|
-
| UnknownContainerRuntimeMessage
|
|
188
|
+
| UnknownContainerRuntimeMessage
|
|
189
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
178
190
|
|
|
179
191
|
/** A {@link TypedContainerRuntimeMessage} that is being sent to the server from the container runtime. */
|
|
180
192
|
export type OutboundContainerRuntimeMessage =
|
|
@@ -185,7 +197,8 @@ export type OutboundContainerRuntimeMessage =
|
|
|
185
197
|
| ContainerRuntimeRejoinMessage
|
|
186
198
|
| ContainerRuntimeAliasMessage
|
|
187
199
|
| ContainerRuntimeIdAllocationMessage
|
|
188
|
-
| ContainerRuntimeGCMessage
|
|
200
|
+
| ContainerRuntimeGCMessage
|
|
201
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
189
202
|
|
|
190
203
|
/**
|
|
191
204
|
* An unpacked ISequencedDocumentMessage with the inner TypedContainerRuntimeMessage type/contents/etc
|
|
@@ -13,6 +13,9 @@
|
|
|
13
13
|
- [Note about performance and latency](#note-about-performance-and-latency)
|
|
14
14
|
- [How it works](#how-it-works)
|
|
15
15
|
- [How grouped batching works](#how-grouped-batching-works)
|
|
16
|
+
- [How the overall op flow works](#How-the-overall-op-flow-works)
|
|
17
|
+
- [Outbound](#outbound)
|
|
18
|
+
- [Inbound](#inbound)
|
|
16
19
|
|
|
17
20
|
## Introduction
|
|
18
21
|
|
|
@@ -317,3 +320,89 @@ Ungrouped batch:
|
|
|
317
320
|
| ClientSeqNum: 1 | ClientSeqNum: 2 | ClientSeqNum: 3 | ClientSeqNum: 4 | ClientSeqNum: 5 |
|
|
318
321
|
+-----------------+-----------------+-----------------+-----------------+-----------------+
|
|
319
322
|
```
|
|
323
|
+
|
|
324
|
+
## How the overall op flow works
|
|
325
|
+
|
|
326
|
+
### Outbound
|
|
327
|
+
|
|
328
|
+
The outbound view is how ops are accumulated and sent by the runtime with `FlushMode.TurnBased` (default).
|
|
329
|
+
|
|
330
|
+
```mermaid
|
|
331
|
+
stateDiagram-v2
|
|
332
|
+
state "* End of JS turn *" as jsTurn
|
|
333
|
+
state "opGroupingManager.groupBatch" as groupBatch
|
|
334
|
+
state "opCompressor.compress" as compress
|
|
335
|
+
state "outbox.flush" as flush
|
|
336
|
+
state "outbox.flushInternal" as flushInternal
|
|
337
|
+
state "Send batch over the wire" as post
|
|
338
|
+
state "Send chunks (partial ops) over the wire" as postChunks
|
|
339
|
+
state "Store original (uncompressed, unchunked, ungrouped) batch locally" as store
|
|
340
|
+
state if_compression <<choice>>
|
|
341
|
+
[*] --> ContainerRuntime.submit
|
|
342
|
+
ContainerRuntime.submit --> outbox.submitAttach
|
|
343
|
+
ContainerRuntime.submit --> outbox.submitBlobAttach
|
|
344
|
+
ContainerRuntime.submit --> outbox.submit
|
|
345
|
+
outbox.submit --> scheduleFlush
|
|
346
|
+
outbox.submitAttach --> scheduleFlush
|
|
347
|
+
outbox.submitBlobAttach --> scheduleFlush
|
|
348
|
+
scheduleFlush --> jsTurn
|
|
349
|
+
jsTurn --> flush
|
|
350
|
+
flush --> outbox.flushInternalMain
|
|
351
|
+
flush --> outbox.flushInternalAttach
|
|
352
|
+
flush --> outbox.flushInternalBlobAttach
|
|
353
|
+
outbox.flushInternalMain --> flushInternal
|
|
354
|
+
outbox.flushInternalAttach --> flushInternal
|
|
355
|
+
outbox.flushInternalBlobAttach --> flushInternal
|
|
356
|
+
flushInternal --> ContainerRuntime.reSubmit: if batch has reentrant ops and should group
|
|
357
|
+
ContainerRuntime.reSubmit --> flushInternal
|
|
358
|
+
flushInternal --> groupBatch: if should group
|
|
359
|
+
groupBatch --> if_compression
|
|
360
|
+
flushInternal --> if_compression
|
|
361
|
+
if_compression --> post
|
|
362
|
+
if_compression --> compress: if compression is enabled
|
|
363
|
+
compress --> post
|
|
364
|
+
compress --> opSplitter.split: if the compressed payload is larger than the chunk size
|
|
365
|
+
opSplitter.split --> post
|
|
366
|
+
opSplitter.split --> postChunks
|
|
367
|
+
post --> store
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
With `FlushMode.Immediate`(deprecated) the difference is that ops are no longer accumulated in batches, but flushed as they are submitted, instead of waiting for the end of the JS turn. All the other components work in the exact same manner with the difference that they operate on batches with length 1.
|
|
371
|
+
|
|
372
|
+
### Inbound
|
|
373
|
+
|
|
374
|
+
There is no concept of batch in the inbound view when we receive the ops. Ops are being received and processed one-by-one and the batch is reconstructed in the runtime layer. This requires individual components to maintain their own internal state in order to keep track of the batch.
|
|
375
|
+
|
|
376
|
+
```mermaid
|
|
377
|
+
stateDiagram-v2
|
|
378
|
+
[*] --> ContainerRuntime.process
|
|
379
|
+
ContainerRuntime.process --> remoteMessageProcessor
|
|
380
|
+
state remoteMessageProcessor {
|
|
381
|
+
state "process chunk" as processChunk
|
|
382
|
+
state "return nothing" as returnNothing
|
|
383
|
+
state "decompress and store" as decompress
|
|
384
|
+
state if_chunk <<choice>>
|
|
385
|
+
state if_compressed <<choice>>
|
|
386
|
+
state if_unrolling <<choice>>
|
|
387
|
+
state if_grouped <<choice>>
|
|
388
|
+
[*] --> if_chunk
|
|
389
|
+
if_chunk --> if_compressed
|
|
390
|
+
if_chunk --> processChunk: is chunk
|
|
391
|
+
processChunk --> returnNothing
|
|
392
|
+
processChunk --> if_compressed: is final chunk
|
|
393
|
+
if_compressed --> if_unrolling
|
|
394
|
+
if_compressed --> decompress: is compressed
|
|
395
|
+
decompress --> if_unrolling
|
|
396
|
+
if_unrolling --> if_grouped
|
|
397
|
+
if_unrolling --> unroll: if currently unrolling
|
|
398
|
+
unroll --> if_grouped
|
|
399
|
+
if_grouped --> return
|
|
400
|
+
if_grouped --> ungroup: is grouped batch
|
|
401
|
+
ungroup --> return
|
|
402
|
+
return --> [*]
|
|
403
|
+
returnNothing --> [*]
|
|
404
|
+
}
|
|
405
|
+
remoteMessageProcessor --> ContainerRuntime.procesCore
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
Note that a "system op" originating outside the ContainerRuntime will pass through this flow entirely.
|
|
@@ -4,16 +4,13 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { IBatchMessage } from "@fluidframework/container-definitions";
|
|
7
|
-
import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
|
|
8
7
|
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
9
|
-
import { ContainerMessageType } from "../messageTypes.js";
|
|
10
8
|
|
|
11
9
|
/**
|
|
12
10
|
* Batch message type used internally by the runtime
|
|
13
11
|
*/
|
|
14
12
|
export type BatchMessage = IBatchMessage & {
|
|
15
|
-
localOpMetadata
|
|
16
|
-
type: ContainerMessageType;
|
|
13
|
+
localOpMetadata?: unknown;
|
|
17
14
|
referenceSequenceNumber: number;
|
|
18
15
|
compression?: CompressionAlgorithms;
|
|
19
16
|
};
|
|
@@ -59,7 +56,6 @@ export interface IChunkedOp {
|
|
|
59
56
|
chunkId: number;
|
|
60
57
|
totalChunks: number;
|
|
61
58
|
contents: string;
|
|
62
|
-
originalType: MessageType | ContainerMessageType;
|
|
63
59
|
originalMetadata?: Record<string, unknown>;
|
|
64
60
|
originalCompression?: string;
|
|
65
61
|
}
|
|
@@ -72,18 +68,3 @@ export interface IChunkedOp {
|
|
|
72
68
|
* will make the processor return `Processed`.
|
|
73
69
|
*/
|
|
74
70
|
export type ProcessingState = "Processed" | "Skipped" | "Accepted";
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* Return type for functions which process remote messages
|
|
78
|
-
*/
|
|
79
|
-
export interface IMessageProcessingResult {
|
|
80
|
-
/**
|
|
81
|
-
* A shallow copy of the input message if processing happened, or
|
|
82
|
-
* the original message otherwise
|
|
83
|
-
*/
|
|
84
|
-
readonly message: ISequencedDocumentMessage;
|
|
85
|
-
/**
|
|
86
|
-
* Processing result of the input message.
|
|
87
|
-
*/
|
|
88
|
-
readonly state: ProcessingState;
|
|
89
|
-
}
|
package/src/opLifecycle/index.ts
CHANGED
|
@@ -4,16 +4,10 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager.js";
|
|
7
|
-
export {
|
|
8
|
-
BatchMessage,
|
|
9
|
-
IBatch,
|
|
10
|
-
IBatchCheckpoint,
|
|
11
|
-
IChunkedOp,
|
|
12
|
-
IMessageProcessingResult,
|
|
13
|
-
} from "./definitions.js";
|
|
7
|
+
export { BatchMessage, IBatch, IBatchCheckpoint, IChunkedOp } from "./definitions.js";
|
|
14
8
|
export { Outbox, getLongStack } from "./outbox.js";
|
|
15
9
|
export { OpCompressor } from "./opCompressor.js";
|
|
16
10
|
export { OpDecompressor } from "./opDecompressor.js";
|
|
17
|
-
export { OpSplitter, splitOp } from "./opSplitter.js";
|
|
11
|
+
export { OpSplitter, splitOp, isChunkedMessage } from "./opSplitter.js";
|
|
18
12
|
export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor.js";
|
|
19
|
-
export { OpGroupingManager } from "./opGroupingManager.js";
|
|
13
|
+
export { OpGroupingManager, OpGroupingManagerConfig, isGroupedBatch } from "./opGroupingManager.js";
|
|
@@ -3,14 +3,14 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { createChildLogger, UsageError } from "@fluidframework/telemetry-utils";
|
|
7
|
-
import { assert } from "@fluidframework/core-utils";
|
|
8
6
|
import { IsoBuffer } from "@fluid-internal/client-utils";
|
|
9
|
-
import { compress } from "lz4js";
|
|
10
7
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
8
|
+
import { assert } from "@fluidframework/core-utils";
|
|
9
|
+
import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils";
|
|
10
|
+
import { compress } from "lz4js";
|
|
11
11
|
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
12
12
|
import { estimateSocketSize } from "./batchManager.js";
|
|
13
|
-
import {
|
|
13
|
+
import { BatchMessage, IBatch } from "./definitions.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Compresses batches of ops. It generates a single compressed op that contains
|
|
@@ -47,7 +47,6 @@ export class OpCompressor {
|
|
|
47
47
|
// Add empty placeholder messages to reserve the sequence numbers
|
|
48
48
|
for (const message of batch.content.slice(1)) {
|
|
49
49
|
messages.push({
|
|
50
|
-
type: message.type,
|
|
51
50
|
localOpMetadata: message.localOpMetadata,
|
|
52
51
|
metadata: message.metadata,
|
|
53
52
|
referenceSequenceNumber: message.referenceSequenceNumber,
|