@fluidframework/container-runtime 2.0.0-rc.2.0.2 → 2.0.0-rc.3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/api-report/container-runtime.api.md +471 -52
- package/dist/batchTracker.d.ts +1 -1
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +4 -4
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +33 -30
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +82 -107
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +27 -22
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +155 -165
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +3 -3
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +17 -17
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js +2 -2
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +42 -39
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +425 -292
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +8 -8
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +58 -19
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +169 -114
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -0
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +12 -11
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +5 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js +4 -4
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +6 -6
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.d.ts +1 -1
- package/dist/error.d.ts.map +1 -1
- package/dist/error.js +4 -4
- package/dist/error.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +3 -2
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +23 -23
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +2 -2
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +4 -5
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +4 -5
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +5 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +21 -12
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +2 -2
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +11 -11
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +2 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +11 -9
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +6 -6
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +2 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +91 -0
- package/dist/messageTypes.d.ts +11 -5
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js +4 -0
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +2 -20
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +3 -3
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +3 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +5 -6
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +15 -4
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +62 -63
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +2 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +14 -16
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +12 -4
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +63 -53
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +2 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +30 -29
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +8 -0
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +36 -32
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -18
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/public.d.ts +12 -0
- package/dist/scheduleManager.d.ts +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +28 -24
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.d.ts +2 -2
- package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +2 -2
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +209 -0
- package/dist/summary/documentSchema.d.ts.map +1 -0
- package/dist/summary/documentSchema.js +390 -0
- package/dist/summary/documentSchema.js.map +1 -0
- package/dist/summary/index.d.ts +2 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +4 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +2 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +12 -7
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +3 -3
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +3 -3
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +16 -16
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +3 -2
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +13 -13
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +1 -1
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js +2 -2
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +3 -2
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +28 -28
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -3
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +14 -14
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +5 -3
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +2 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +7 -7
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +6 -17
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +8 -8
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +4 -3
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +17 -17
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +15 -14
- package/dist/summary/summaryManager.js.map +1 -1
- package/internal.d.ts +11 -0
- package/legacy.d.ts +11 -0
- package/lib/batchTracker.d.ts +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +33 -30
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +48 -73
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +27 -22
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +96 -106
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +3 -3
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +3 -3
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +42 -39
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +276 -141
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +3 -3
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +58 -19
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +107 -52
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +1 -0
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +3 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +5 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.js.map +1 -1
- package/lib/deltaScheduler.d.ts +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.d.ts +1 -1
- package/lib/error.d.ts.map +1 -1
- package/lib/error.js +2 -2
- package/lib/error.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +3 -2
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +8 -8
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +2 -2
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +4 -5
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +4 -5
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +5 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +10 -2
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +2 -2
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +2 -2
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +2 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +4 -2
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +2 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +5 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +5 -2
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +91 -0
- package/lib/messageTypes.d.ts +11 -5
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js +4 -0
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +2 -20
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +3 -3
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +2 -2
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +2 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +15 -4
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +61 -62
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +2 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +9 -12
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +12 -4
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +47 -38
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +2 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +19 -18
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +8 -0
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +36 -32
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +2 -2
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/public.d.ts +12 -0
- package/lib/scheduleManager.d.ts +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +7 -3
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts +2 -2
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +209 -0
- package/lib/summary/documentSchema.d.ts.map +1 -0
- package/lib/summary/documentSchema.js +386 -0
- package/lib/summary/documentSchema.js.map +1 -0
- package/lib/summary/index.d.ts +2 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -0
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +2 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +7 -2
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +3 -3
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +3 -3
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +3 -2
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +3 -3
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +2 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +1 -1
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +3 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +5 -5
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +5 -3
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +2 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +1 -1
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +6 -17
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +3 -3
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +4 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +4 -4
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +9 -8
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +57 -65
- package/src/batchTracker.ts +4 -3
- package/src/blobManager.ts +100 -77
- package/src/channelCollection.ts +180 -165
- package/src/connectionTelemetry.ts +12 -12
- package/src/containerHandleContext.ts +3 -2
- package/src/containerRuntime.ts +481 -277
- package/src/dataStore.ts +9 -4
- package/src/dataStoreContext.ts +195 -93
- package/src/dataStoreContexts.ts +5 -2
- package/src/dataStoreRegistry.ts +3 -2
- package/src/deltaManagerSummarizerProxy.ts +1 -1
- package/src/deltaScheduler.ts +2 -1
- package/src/error.ts +2 -2
- package/src/gc/garbageCollection.ts +21 -20
- package/src/gc/gcConfigs.ts +15 -18
- package/src/gc/gcDefinitions.ts +6 -8
- package/src/gc/gcHelpers.ts +22 -5
- package/src/gc/gcSummaryStateTracker.ts +7 -5
- package/src/gc/gcTelemetry.ts +13 -7
- package/src/gc/gcUnreferencedStateTracker.ts +3 -2
- package/src/gc/index.ts +1 -0
- package/src/index.ts +22 -1
- package/src/messageTypes.ts +20 -6
- package/src/opLifecycle/README.md +89 -0
- package/src/opLifecycle/batchManager.ts +1 -0
- package/src/opLifecycle/definitions.ts +3 -21
- package/src/opLifecycle/index.ts +3 -9
- package/src/opLifecycle/opCompressor.ts +6 -5
- package/src/opLifecycle/opDecompressor.ts +90 -100
- package/src/opLifecycle/opGroupingManager.ts +12 -14
- package/src/opLifecycle/opSplitter.ts +76 -48
- package/src/opLifecycle/outbox.ts +30 -38
- package/src/opLifecycle/remoteMessageProcessor.ts +43 -55
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +6 -6
- package/src/scheduleManager.ts +10 -8
- package/src/storageServiceWithAttachBlobs.ts +2 -2
- package/src/summary/documentSchema.ts +631 -0
- package/src/summary/index.ts +10 -1
- package/src/summary/orderedClientElection.ts +7 -7
- package/src/summary/runWhileConnectedCoordinator.ts +3 -2
- package/src/summary/runningSummarizer.ts +22 -20
- package/src/summary/summarizer.ts +17 -15
- package/src/summary/summarizerClientElection.ts +3 -2
- package/src/summary/summarizerHeuristics.ts +4 -2
- package/src/summary/summarizerNode/summarizerNode.ts +20 -18
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -2
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +16 -8
- package/src/summary/summarizerTypes.ts +7 -3
- package/src/summary/summaryCollection.ts +3 -3
- package/src/summary/summaryFormat.ts +14 -26
- package/src/summary/summaryGenerator.ts +12 -15
- package/src/summary/summaryManager.ts +16 -13
- package/api-extractor-cjs.json +0 -8
- package/dist/container-runtime-alpha.d.ts +0 -1753
- package/dist/container-runtime-beta.d.ts +0 -268
- package/dist/container-runtime-public.d.ts +0 -268
- package/dist/container-runtime-untrimmed.d.ts +0 -1893
- package/lib/container-runtime-alpha.d.ts +0 -1753
- package/lib/container-runtime-beta.d.ts +0 -268
- package/lib/container-runtime-public.d.ts +0 -268
- package/lib/container-runtime-untrimmed.d.ts +0 -1893
- package/lib/test/batchTracker.spec.js +0 -88
- package/lib/test/batchTracker.spec.js.map +0 -1
- package/lib/test/blobManager.spec.js +0 -835
- package/lib/test/blobManager.spec.js.map +0 -1
- package/lib/test/channelCollection.spec.js +0 -141
- package/lib/test/channelCollection.spec.js.map +0 -1
- package/lib/test/containerRuntime.spec.js +0 -1748
- package/lib/test/containerRuntime.spec.js.map +0 -1
- package/lib/test/dataStoreContext.spec.js +0 -801
- package/lib/test/dataStoreContext.spec.js.map +0 -1
- package/lib/test/dataStoreCreation.spec.js +0 -312
- package/lib/test/dataStoreCreation.spec.js.map +0 -1
- package/lib/test/dataStoreRegistry.spec.js +0 -26
- package/lib/test/dataStoreRegistry.spec.js.map +0 -1
- package/lib/test/fuzz/fuzzUtils.js +0 -66
- package/lib/test/fuzz/fuzzUtils.js.map +0 -1
- package/lib/test/fuzz/summarizer.fuzz.spec.js +0 -31
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzMocks.js +0 -162
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +0 -1
- package/lib/test/fuzz/summarizerFuzzSuite.js +0 -106
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +0 -1
- package/lib/test/gc/garbageCollection.spec.js +0 -1465
- package/lib/test/gc/garbageCollection.spec.js.map +0 -1
- package/lib/test/gc/gcConfigs.spec.js +0 -690
- package/lib/test/gc/gcConfigs.spec.js.map +0 -1
- package/lib/test/gc/gcHelpers.spec.js +0 -110
- package/lib/test/gc/gcHelpers.spec.js.map +0 -1
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +0 -68
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +0 -1
- package/lib/test/gc/gcStats.spec.js +0 -391
- package/lib/test/gc/gcStats.spec.js.map +0 -1
- package/lib/test/gc/gcSummaryStateTracker.spec.js +0 -228
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +0 -1
- package/lib/test/gc/gcTelemetry.spec.js +0 -530
- package/lib/test/gc/gcTelemetry.spec.js.map +0 -1
- package/lib/test/gc/gcUnitTestHelpers.js +0 -29
- package/lib/test/gc/gcUnitTestHelpers.js.map +0 -1
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +0 -192
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +0 -1
- package/lib/test/getPendingBlobs.spec.js +0 -193
- package/lib/test/getPendingBlobs.spec.js.map +0 -1
- package/lib/test/hardwareStats.spec.js +0 -93
- package/lib/test/hardwareStats.spec.js.map +0 -1
- package/lib/test/index.js +0 -6
- package/lib/test/index.js.map +0 -1
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +0 -225
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +0 -1
- package/lib/test/opLifecycle/batchManager.spec.js +0 -189
- package/lib/test/opLifecycle/batchManager.spec.js.map +0 -1
- package/lib/test/opLifecycle/opCompressor.spec.js +0 -74
- package/lib/test/opLifecycle/opCompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opDecompressor.spec.js +0 -218
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +0 -1
- package/lib/test/opLifecycle/opSplitter.spec.js +0 -272
- package/lib/test/opLifecycle/opSplitter.spec.js.map +0 -1
- package/lib/test/opLifecycle/outbox.spec.js +0 -675
- package/lib/test/opLifecycle/outbox.spec.js.map +0 -1
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +0 -196
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +0 -1
- package/lib/test/pendingStateManager.spec.js +0 -329
- package/lib/test/pendingStateManager.spec.js.map +0 -1
- package/lib/test/scheduleManager.spec.js +0 -270
- package/lib/test/scheduleManager.spec.js.map +0 -1
- package/lib/test/summarizerNode.spec.js +0 -326
- package/lib/test/summarizerNode.spec.js.map +0 -1
- package/lib/test/summarizerNodeWithGc.spec.js +0 -318
- package/lib/test/summarizerNodeWithGc.spec.js.map +0 -1
- package/lib/test/summary/orderedClientElection.spec.js +0 -535
- package/lib/test/summary/orderedClientElection.spec.js.map +0 -1
- package/lib/test/summary/runningSummarizer.spec.js +0 -1349
- package/lib/test/summary/runningSummarizer.spec.js.map +0 -1
- package/lib/test/summary/summarizer.spec.js +0 -29
- package/lib/test/summary/summarizer.spec.js.map +0 -1
- package/lib/test/summary/summarizerClientElection.spec.js +0 -436
- package/lib/test/summary/summarizerClientElection.spec.js.map +0 -1
- package/lib/test/summary/summarizerHeuristics.spec.js +0 -289
- package/lib/test/summary/summarizerHeuristics.spec.js.map +0 -1
- package/lib/test/summary/summaryCollection.spec.js +0 -200
- package/lib/test/summary/summaryCollection.spec.js.map +0 -1
- package/lib/test/summary/summaryManager.spec.js +0 -430
- package/lib/test/summary/summaryManager.spec.js.map +0 -1
- package/lib/test/summary/testQuorumClients.js +0 -34
- package/lib/test/summary/testQuorumClients.js.map +0 -1
- package/lib/test/throttler.spec.js +0 -175
- package/lib/test/throttler.spec.js.map +0 -1
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +0 -180
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +0 -1
- /package/{dist → lib}/tsdoc-metadata.json +0 -0
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -7,35 +7,34 @@ import {
|
|
|
7
7
|
MonitoringContext,
|
|
8
8
|
UsageError,
|
|
9
9
|
validatePrecondition,
|
|
10
|
-
} from "@fluidframework/telemetry-utils";
|
|
10
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
11
|
+
|
|
11
12
|
import { IContainerRuntimeMetadata } from "../summary/index.js";
|
|
13
|
+
|
|
12
14
|
import {
|
|
13
|
-
|
|
15
|
+
GCFeatureMatrix,
|
|
16
|
+
GCVersion,
|
|
17
|
+
IGCMetadata_Deprecated,
|
|
18
|
+
IGCRuntimeOptions,
|
|
19
|
+
IGarbageCollectorConfigs,
|
|
14
20
|
defaultInactiveTimeoutMs,
|
|
15
21
|
defaultSessionExpiryDurationMs,
|
|
22
|
+
defaultSweepGracePeriodMs,
|
|
23
|
+
disableDatastoreSweepKey,
|
|
16
24
|
disableTombstoneKey,
|
|
17
|
-
|
|
25
|
+
gcDisableDataStoreSweepOptionName,
|
|
26
|
+
gcDisableThrowOnTombstoneLoadOptionName,
|
|
27
|
+
gcGenerationOptionName,
|
|
18
28
|
gcTestModeKey,
|
|
19
|
-
GCVersion,
|
|
20
|
-
gcVersionUpgradeToV4Key,
|
|
21
|
-
IGarbageCollectorConfigs,
|
|
22
|
-
IGCRuntimeOptions,
|
|
23
29
|
maxSnapshotCacheExpiryMs,
|
|
24
30
|
oneDayMs,
|
|
25
31
|
runGCKey,
|
|
26
32
|
runSessionExpiryKey,
|
|
27
33
|
runSweepKey,
|
|
28
|
-
stableGCVersion,
|
|
29
34
|
throwOnTombstoneLoadOverrideKey,
|
|
30
35
|
throwOnTombstoneUsageKey,
|
|
31
|
-
gcDisableThrowOnTombstoneLoadOptionName,
|
|
32
|
-
defaultSweepGracePeriodMs,
|
|
33
|
-
gcGenerationOptionName,
|
|
34
|
-
IGCMetadata_Deprecated,
|
|
35
|
-
disableDatastoreSweepKey,
|
|
36
|
-
gcDisableDataStoreSweepOptionName,
|
|
37
36
|
} from "./gcDefinitions.js";
|
|
38
|
-
import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
37
|
+
import { getGCVersion, getGCVersionInEffect, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
39
38
|
|
|
40
39
|
/**
|
|
41
40
|
* Generates configurations for the Garbage Collector that it uses to determine what to run and how.
|
|
@@ -113,9 +112,7 @@ export function generateGCConfigs(
|
|
|
113
112
|
createParams.gcOptions[gcGenerationOptionName] /* currentGeneration */,
|
|
114
113
|
);
|
|
115
114
|
|
|
116
|
-
|
|
117
|
-
const gcVersionInEffect =
|
|
118
|
-
mc.config.getBoolean(gcVersionUpgradeToV4Key) === true ? nextGCVersion : stableGCVersion;
|
|
115
|
+
const gcVersionInEffect = getGCVersionInEffect(mc.config);
|
|
119
116
|
|
|
120
117
|
// The GC version is up-to-date if the GC version in effect is at least equal to the GC version in base snapshot.
|
|
121
118
|
// If it is not up-to-date, there is a newer version of GC out there which is more reliable than this. So, GC
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -6,21 +6,21 @@
|
|
|
6
6
|
import { ICriticalContainerError } from "@fluidframework/container-definitions";
|
|
7
7
|
import { IRequest } from "@fluidframework/core-interfaces";
|
|
8
8
|
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
9
|
+
import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
|
|
9
10
|
import {
|
|
10
|
-
IGarbageCollectionData,
|
|
11
11
|
IGarbageCollectionDetailsBase,
|
|
12
12
|
ISummarizeResult,
|
|
13
|
-
|
|
14
|
-
} from "@fluidframework/runtime-
|
|
15
|
-
import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
|
|
13
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
14
|
+
import { ReadAndParseBlob } from "@fluidframework/runtime-utils/internal";
|
|
16
15
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
16
|
+
|
|
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
|
|
@@ -307,8 +307,6 @@ export interface IGarbageCollectionRuntime {
|
|
|
307
307
|
getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
|
|
308
308
|
/** After GC has run, called to notify the runtime of routes that are used in it. */
|
|
309
309
|
updateUsedRoutes(usedRoutes: readonly string[]): void;
|
|
310
|
-
/** After GC has run, called to notify the runtime of routes that are unused in it. */
|
|
311
|
-
updateUnusedRoutes(unusedRoutes: readonly string[]): void;
|
|
312
310
|
/**
|
|
313
311
|
* After GC has run and identified nodes that are sweep ready, called to delete the sweep ready nodes. The runtime
|
|
314
312
|
* should return the routes of nodes that were deleted.
|
package/src/gc/gcHelpers.ts
CHANGED
|
@@ -3,16 +3,25 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert } from "@fluidframework/core-utils";
|
|
6
|
+
import { assert } from "@fluidframework/core-utils/internal";
|
|
7
7
|
import { ISnapshotTree } from "@fluidframework/protocol-definitions";
|
|
8
|
+
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
8
9
|
import {
|
|
10
|
+
IGarbageCollectionDetailsBase,
|
|
9
11
|
gcBlobPrefix,
|
|
10
12
|
gcDeletedBlobKey,
|
|
11
13
|
gcTombstoneBlobKey,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import {
|
|
14
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
15
|
+
import type { IConfigProvider } from "@fluidframework/telemetry-utils/internal";
|
|
16
|
+
|
|
17
|
+
import {
|
|
18
|
+
GCFeatureMatrix,
|
|
19
|
+
GCVersion,
|
|
20
|
+
IGCMetadata,
|
|
21
|
+
gcVersionUpgradeToV4Key,
|
|
22
|
+
nextGCVersion,
|
|
23
|
+
stableGCVersion,
|
|
24
|
+
} from "./gcDefinitions.js";
|
|
16
25
|
import {
|
|
17
26
|
IGarbageCollectionNodeData,
|
|
18
27
|
IGarbageCollectionSnapshotData,
|
|
@@ -27,6 +36,14 @@ export function getGCVersion(metadata?: IGCMetadata): GCVersion {
|
|
|
27
36
|
return metadata.gcFeature ?? 0;
|
|
28
37
|
}
|
|
29
38
|
|
|
39
|
+
/** Indicates what GC version is in effect for new GC data being written in this session */
|
|
40
|
+
export function getGCVersionInEffect(configProvider: IConfigProvider): number {
|
|
41
|
+
// If version upgrade is not enabled, fall back to the stable GC version.
|
|
42
|
+
return configProvider.getBoolean(gcVersionUpgradeToV4Key) === true
|
|
43
|
+
? nextGCVersion
|
|
44
|
+
: stableGCVersion;
|
|
45
|
+
}
|
|
46
|
+
|
|
30
47
|
/**
|
|
31
48
|
* Indicates whether Sweep is allowed for this document based on the persisted GC Feature Matrix and current gcGeneration.
|
|
32
49
|
* This applies to the entire Sweep Phase the same - both Tombstone Enforcement (i.e. should loading a Tombstone fail?) and Deletion.
|
|
@@ -4,17 +4,19 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import { SummaryType } from "@fluidframework/protocol-definitions";
|
|
7
|
+
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
7
8
|
import {
|
|
9
|
+
ISummarizeResult,
|
|
8
10
|
gcBlobPrefix,
|
|
9
11
|
gcDeletedBlobKey,
|
|
10
12
|
gcTombstoneBlobKey,
|
|
11
13
|
gcTreeKey,
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
import { mergeStats, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
|
|
14
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
15
|
+
import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/internal";
|
|
16
|
+
|
|
16
17
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
17
|
-
|
|
18
|
+
|
|
19
|
+
import { GCVersion, IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
|
|
18
20
|
import { generateSortedGCState } from "./gcHelpers.js";
|
|
19
21
|
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
|
|
20
22
|
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -5,24 +5,29 @@
|
|
|
5
5
|
|
|
6
6
|
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
7
7
|
import {
|
|
8
|
-
|
|
8
|
+
type ITelemetryGenericEventExt,
|
|
9
9
|
ITelemetryLoggerExt,
|
|
10
|
+
} from "@fluidframework/telemetry-utils";
|
|
11
|
+
import {
|
|
10
12
|
MonitoringContext,
|
|
13
|
+
generateStack,
|
|
11
14
|
tagCodeArtifacts,
|
|
12
|
-
|
|
13
|
-
|
|
15
|
+
} from "@fluidframework/telemetry-utils/internal";
|
|
16
|
+
|
|
14
17
|
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
15
18
|
import { ICreateContainerMetadata } from "../summary/index.js";
|
|
19
|
+
|
|
16
20
|
import {
|
|
21
|
+
GCFeatureMatrix,
|
|
17
22
|
GCNodeType,
|
|
18
|
-
UnreferencedState,
|
|
19
23
|
IGarbageCollectorConfigs,
|
|
24
|
+
UnreferencedState,
|
|
20
25
|
disableTombstoneKey,
|
|
21
|
-
throwOnTombstoneUsageKey,
|
|
22
|
-
throwOnTombstoneLoadOverrideKey,
|
|
23
26
|
runSweepKey,
|
|
24
|
-
|
|
27
|
+
throwOnTombstoneLoadOverrideKey,
|
|
28
|
+
throwOnTombstoneUsageKey,
|
|
25
29
|
} from "./gcDefinitions.js";
|
|
30
|
+
import { getGCVersionInEffect } from "./gcHelpers.js";
|
|
26
31
|
import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
|
|
27
32
|
|
|
28
33
|
type NodeUsageType = "Changed" | "Loaded" | "Revived";
|
|
@@ -429,6 +434,7 @@ export function sendGCUnexpectedUsageEvent(
|
|
|
429
434
|
event.sweepFlags = JSON.stringify({
|
|
430
435
|
EnableSweepFlag: mc.config.getBoolean(runSweepKey),
|
|
431
436
|
});
|
|
437
|
+
event.gcVersion = getGCVersionInEffect(mc.config);
|
|
432
438
|
|
|
433
439
|
mc.logger.sendTelemetryEvent(event, error);
|
|
434
440
|
}
|
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { assert, Timer } from "@fluidframework/core-utils";
|
|
7
|
-
import { validatePrecondition } from "@fluidframework/telemetry-utils";
|
|
6
|
+
import { assert, Timer } from "@fluidframework/core-utils/internal";
|
|
7
|
+
import { validatePrecondition } from "@fluidframework/telemetry-utils/internal";
|
|
8
|
+
|
|
8
9
|
import { UnreferencedState } from "./gcDefinitions.js";
|
|
9
10
|
|
|
10
11
|
/** A wrapper around common-utils Timer that requires the timeout when calling start/restart */
|
package/src/gc/index.ts
CHANGED
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,
|
|
@@ -20,6 +19,8 @@ export {
|
|
|
20
19
|
DefaultSummaryConfiguration,
|
|
21
20
|
ICompressionRuntimeOptions,
|
|
22
21
|
CompressionAlgorithms,
|
|
22
|
+
RuntimeHeaderData,
|
|
23
|
+
disabledCompressionConfig,
|
|
23
24
|
} from "./containerRuntime.js";
|
|
24
25
|
export {
|
|
25
26
|
ContainerMessageType,
|
|
@@ -97,5 +98,25 @@ export {
|
|
|
97
98
|
IRetriableFailureResult,
|
|
98
99
|
ISummarizeEventProps,
|
|
99
100
|
IdCompressorMode,
|
|
101
|
+
IDocumentSchema,
|
|
102
|
+
DocumentSchemaValueType,
|
|
103
|
+
IDocumentSchemaCurrent,
|
|
104
|
+
currentDocumentVersionSchema,
|
|
105
|
+
DocumentsSchemaController,
|
|
106
|
+
IDocumentSchemaChangeMessage,
|
|
107
|
+
IDocumentSchemaFeatures,
|
|
100
108
|
} from "./summary/index.js";
|
|
101
109
|
export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.js";
|
|
110
|
+
export { ChannelCollection } from "./channelCollection.js";
|
|
111
|
+
export {
|
|
112
|
+
IFluidDataStoreContextInternal,
|
|
113
|
+
ISnapshotDetails,
|
|
114
|
+
LocalFluidDataStoreContext,
|
|
115
|
+
LocalFluidDataStoreContextBase,
|
|
116
|
+
FluidDataStoreContext,
|
|
117
|
+
IFluidDataStoreContextProps,
|
|
118
|
+
ILocalFluidDataStoreContextProps,
|
|
119
|
+
ILocalDetachedFluidDataStoreContextProps,
|
|
120
|
+
IFluidDataStoreContextEvents,
|
|
121
|
+
} from "./dataStoreContext.js";
|
|
122
|
+
export { DataStoreContexts } from "./dataStoreContexts.js";
|
package/src/messageTypes.ts
CHANGED
|
@@ -3,16 +3,18 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import type { IdCreationRange } from "@fluidframework/id-compressor/internal";
|
|
6
7
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
7
8
|
import {
|
|
9
|
+
IAttachMessage,
|
|
8
10
|
IEnvelope,
|
|
9
11
|
InboundAttachMessage,
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
import type { IdCreationRange } from "@fluidframework/id-compressor";
|
|
12
|
+
} from "@fluidframework/runtime-definitions/internal";
|
|
13
|
+
|
|
13
14
|
import { IDataStoreAliasMessage } from "./dataStore.js";
|
|
14
15
|
import { GarbageCollectionMessage } from "./gc/index.js";
|
|
15
16
|
import { IChunkedOp } from "./opLifecycle/index.js";
|
|
17
|
+
import { IDocumentSchemaChangeMessage } from "./summary/index.js";
|
|
16
18
|
|
|
17
19
|
/**
|
|
18
20
|
* @alpha
|
|
@@ -43,6 +45,11 @@ export enum ContainerMessageType {
|
|
|
43
45
|
*/
|
|
44
46
|
IdAllocation = "idAllocation",
|
|
45
47
|
|
|
48
|
+
/**
|
|
49
|
+
* An op that changes document schema
|
|
50
|
+
*/
|
|
51
|
+
DocumentSchemaChange = "schema",
|
|
52
|
+
|
|
46
53
|
/**
|
|
47
54
|
* Garbage collection specific op. This is sent by the summarizer client when GC runs. It's used to synchronize GC
|
|
48
55
|
* state across all clients.
|
|
@@ -131,6 +138,10 @@ export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
|
|
|
131
138
|
ContainerMessageType.GC,
|
|
132
139
|
GarbageCollectionMessage
|
|
133
140
|
>;
|
|
141
|
+
export type ContainerRuntimeDocumentSchemaMessage = TypedContainerRuntimeMessage<
|
|
142
|
+
ContainerMessageType.DocumentSchemaChange,
|
|
143
|
+
IDocumentSchemaChangeMessage
|
|
144
|
+
>;
|
|
134
145
|
|
|
135
146
|
/**
|
|
136
147
|
* Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
|
|
@@ -161,7 +172,8 @@ export type InboundContainerRuntimeMessage =
|
|
|
161
172
|
| ContainerRuntimeIdAllocationMessage
|
|
162
173
|
| ContainerRuntimeGCMessage
|
|
163
174
|
// Inbound messages may include unknown types from other clients, so we include that as a special case here
|
|
164
|
-
| UnknownContainerRuntimeMessage
|
|
175
|
+
| UnknownContainerRuntimeMessage
|
|
176
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
165
177
|
|
|
166
178
|
/** A {@link TypedContainerRuntimeMessage} that has been generated by the container runtime but is not yet being sent to the server. */
|
|
167
179
|
export type LocalContainerRuntimeMessage =
|
|
@@ -174,7 +186,8 @@ export type LocalContainerRuntimeMessage =
|
|
|
174
186
|
| ContainerRuntimeIdAllocationMessage
|
|
175
187
|
| ContainerRuntimeGCMessage
|
|
176
188
|
// In rare cases (e.g. related to stashed ops) we could have a local message of an unknown type
|
|
177
|
-
| UnknownContainerRuntimeMessage
|
|
189
|
+
| UnknownContainerRuntimeMessage
|
|
190
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
178
191
|
|
|
179
192
|
/** A {@link TypedContainerRuntimeMessage} that is being sent to the server from the container runtime. */
|
|
180
193
|
export type OutboundContainerRuntimeMessage =
|
|
@@ -185,7 +198,8 @@ export type OutboundContainerRuntimeMessage =
|
|
|
185
198
|
| ContainerRuntimeRejoinMessage
|
|
186
199
|
| ContainerRuntimeAliasMessage
|
|
187
200
|
| ContainerRuntimeIdAllocationMessage
|
|
188
|
-
| ContainerRuntimeGCMessage
|
|
201
|
+
| ContainerRuntimeGCMessage
|
|
202
|
+
| ContainerRuntimeDocumentSchemaMessage;
|
|
189
203
|
|
|
190
204
|
/**
|
|
191
205
|
* 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.
|
|
@@ -3,17 +3,15 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IBatchMessage } from "@fluidframework/container-definitions";
|
|
7
|
-
|
|
6
|
+
import { IBatchMessage } from "@fluidframework/container-definitions/internal";
|
|
7
|
+
|
|
8
8
|
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
9
|
-
import { ContainerMessageType } from "../messageTypes.js";
|
|
10
9
|
|
|
11
10
|
/**
|
|
12
11
|
* Batch message type used internally by the runtime
|
|
13
12
|
*/
|
|
14
13
|
export type BatchMessage = IBatchMessage & {
|
|
15
|
-
localOpMetadata
|
|
16
|
-
type: ContainerMessageType;
|
|
14
|
+
localOpMetadata?: unknown;
|
|
17
15
|
referenceSequenceNumber: number;
|
|
18
16
|
compression?: CompressionAlgorithms;
|
|
19
17
|
};
|
|
@@ -59,7 +57,6 @@ export interface IChunkedOp {
|
|
|
59
57
|
chunkId: number;
|
|
60
58
|
totalChunks: number;
|
|
61
59
|
contents: string;
|
|
62
|
-
originalType: MessageType | ContainerMessageType;
|
|
63
60
|
originalMetadata?: Record<string, unknown>;
|
|
64
61
|
originalCompression?: string;
|
|
65
62
|
}
|
|
@@ -72,18 +69,3 @@ export interface IChunkedOp {
|
|
|
72
69
|
* will make the processor return `Processed`.
|
|
73
70
|
*/
|
|
74
71
|
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,16 @@
|
|
|
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/internal";
|
|
9
|
+
import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils/internal";
|
|
10
|
+
import { compress } from "lz4js";
|
|
11
|
+
|
|
11
12
|
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
13
|
+
|
|
12
14
|
import { estimateSocketSize } from "./batchManager.js";
|
|
13
|
-
import {
|
|
15
|
+
import { BatchMessage, IBatch } from "./definitions.js";
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* Compresses batches of ops. It generates a single compressed op that contains
|
|
@@ -47,7 +49,6 @@ export class OpCompressor {
|
|
|
47
49
|
// Add empty placeholder messages to reserve the sequence numbers
|
|
48
50
|
for (const message of batch.content.slice(1)) {
|
|
49
51
|
messages.push({
|
|
50
|
-
type: message.type,
|
|
51
52
|
localOpMetadata: message.localOpMetadata,
|
|
52
53
|
metadata: message.metadata,
|
|
53
54
|
referenceSequenceNumber: message.referenceSequenceNumber,
|