@fluidframework/container-runtime 2.0.0-rc.4.0.6 → 2.0.0-rc.5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +46 -0
- package/api-extractor/api-extractor-lint-bundle.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
- package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
- package/api-extractor/api-extractor-lint-public.esm.json +5 -0
- package/api-extractor.json +1 -1
- package/api-report/{container-runtime.api.md → container-runtime.alpha.api.md} +33 -516
- package/api-report/container-runtime.beta.api.md +73 -0
- package/api-report/container-runtime.public.api.md +73 -0
- package/biome.jsonc +4 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +3 -20
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +1 -35
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +21 -12
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +113 -110
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +14 -14
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +2 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +17 -34
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +109 -145
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +30 -44
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +26 -40
- 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.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +4 -3
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +1 -3
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +5 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +29 -30
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +12 -31
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +10 -38
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -5
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -3
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +2 -35
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +9 -62
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +2 -2
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +3 -9
- package/dist/gc/gcTelemetry.js.map +1 -1
- 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 +1 -3
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/messageTypes.d.ts +6 -22
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +2 -2
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +11 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -2
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +1 -2
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +10 -3
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +7 -0
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +4 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +13 -8
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +10 -0
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +13 -18
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.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.map +1 -1
- package/dist/pendingStateManager.js +15 -5
- 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.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -3
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +2 -2
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +4 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +35 -13
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +23 -110
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +4 -1
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +2 -2
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -3
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +16 -16
- 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.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +17 -29
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +11 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +2 -3
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +2 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +7 -8
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +27 -24
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +1 -2
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +3 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +3 -20
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +2 -36
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +21 -12
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +114 -112
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +2 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +2 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +17 -34
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +106 -142
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +30 -44
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +29 -43
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +1 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +4 -3
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +1 -3
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +5 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +30 -31
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +13 -32
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +10 -38
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -4
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +2 -3
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +2 -35
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +4 -57
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +2 -2
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +3 -9
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +2 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/messageTypes.d.ts +6 -22
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +2 -2
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +11 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +13 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +1 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +10 -3
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +7 -0
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +4 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +13 -8
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +10 -0
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +13 -18
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.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.map +1 -1
- package/lib/pendingStateManager.js +15 -5
- 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.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -3
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +2 -2
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +4 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +35 -13
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +22 -109
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +4 -1
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -3
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +14 -14
- 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.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +17 -29
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +3 -3
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +2 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +7 -8
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +26 -23
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +1 -2
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +3 -1
- package/lib/throttler.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +92 -28
- package/src/batchTracker.ts +5 -2
- package/src/blobManager.ts +21 -61
- package/src/channelCollection.ts +179 -186
- package/src/connectionTelemetry.ts +18 -12
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +166 -214
- package/src/dataStore.ts +2 -1
- package/src/dataStoreContext.ts +79 -98
- package/src/dataStoreContexts.ts +7 -2
- package/src/deltaManagerProxies.ts +15 -6
- package/src/deltaScheduler.ts +5 -4
- package/src/gc/garbageCollection.md +0 -8
- package/src/gc/garbageCollection.ts +66 -57
- package/src/gc/gcConfigs.ts +15 -37
- package/src/gc/gcDefinitions.ts +20 -39
- package/src/gc/gcHelpers.ts +8 -4
- package/src/gc/gcSummaryDefinitions.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +11 -74
- package/src/gc/gcTelemetry.ts +4 -11
- package/src/gc/index.ts +0 -2
- package/src/index.ts +1 -2
- package/src/messageTypes.ts +8 -24
- package/src/opLifecycle/README.md +120 -160
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +5 -1
- package/src/opLifecycle/opCompressor.ts +13 -2
- package/src/opLifecycle/opDecompressor.ts +3 -7
- package/src/opLifecycle/opGroupingManager.ts +12 -8
- package/src/opLifecycle/opSplitter.ts +22 -11
- package/src/opLifecycle/outbox.ts +14 -32
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -1
- package/src/opProperties.ts +2 -2
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +20 -7
- package/src/scheduleManager.ts +4 -1
- package/src/summary/documentSchema.ts +4 -7
- package/src/summary/images/appTree.png +0 -0
- package/src/summary/images/protocolAndAppTree.png +0 -0
- package/src/summary/images/summaryTree.png +0 -0
- package/src/summary/index.ts +5 -2
- package/src/summary/orderedClientElection.ts +100 -22
- package/src/summary/runningSummarizer.ts +54 -124
- package/src/summary/summarizer.ts +5 -2
- package/src/summary/summarizerClientElection.ts +4 -2
- package/src/summary/summarizerNode/summarizerNode.ts +23 -30
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +9 -3
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -11
- package/src/summary/summarizerTypes.ts +32 -33
- package/src/summary/summaryCollection.ts +6 -3
- package/src/summary/summaryFormat.ts +18 -10
- package/src/summary/summaryFormats.md +160 -0
- package/src/summary/summaryGenerator.ts +47 -30
- package/src/summary/summaryManager.ts +6 -9
- package/src/throttler.ts +3 -1
- package/tsconfig.json +2 -0
- package/tsdoc.json +4 -0
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { SummaryType } from "@fluidframework/
|
|
7
|
-
import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
|
|
6
|
+
import { SummaryType } from "@fluidframework/driver-definitions";
|
|
8
7
|
import {
|
|
8
|
+
ISummaryTreeWithStats,
|
|
9
9
|
ISummarizeResult,
|
|
10
10
|
gcBlobPrefix,
|
|
11
11
|
gcDeletedBlobKey,
|
|
@@ -16,9 +16,12 @@ import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/in
|
|
|
16
16
|
|
|
17
17
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
18
18
|
|
|
19
|
-
import {
|
|
19
|
+
import { IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
|
|
20
20
|
import { generateSortedGCState } from "./gcHelpers.js";
|
|
21
|
-
import {
|
|
21
|
+
import {
|
|
22
|
+
IGarbageCollectionSnapshotData,
|
|
23
|
+
IGarbageCollectionState,
|
|
24
|
+
} from "./gcSummaryDefinitions.js";
|
|
22
25
|
|
|
23
26
|
export const gcStateBlobKey = `${gcBlobPrefix}_root`;
|
|
24
27
|
|
|
@@ -38,17 +41,11 @@ export interface IGCSummaryTrackingData {
|
|
|
38
41
|
* On summarize, it decides whether to write new state or re-use previous summary's state.
|
|
39
42
|
*/
|
|
40
43
|
export class GCSummaryStateTracker {
|
|
41
|
-
// This is the version of GC data in the latest summary being tracked.
|
|
42
|
-
private latestSummaryGCVersion: GCVersion;
|
|
43
|
-
|
|
44
44
|
// Keeps track of the GC data from the latest summary successfully acked by the server.
|
|
45
45
|
private latestSummaryData: IGCSummaryTrackingData | undefined;
|
|
46
46
|
// Keeps track of the GC data from the last summary submitted to the server but not yet acked.
|
|
47
47
|
private pendingSummaryData: IGCSummaryTrackingData | undefined;
|
|
48
48
|
|
|
49
|
-
// Tracks whether there was GC was run in latest summary being tracked.
|
|
50
|
-
private wasGCRunInLatestSummary: boolean;
|
|
51
|
-
|
|
52
49
|
// Tracks the count of data stores whose state updated since the last summary, i.e., they went from referenced
|
|
53
50
|
// to unreferenced or vice-versa.
|
|
54
51
|
public updatedDSCountSinceLastSummary: number = 0;
|
|
@@ -69,58 +66,9 @@ export class GCSummaryStateTracker {
|
|
|
69
66
|
// Tells whether GC should run or not.
|
|
70
67
|
private readonly configs: Pick<
|
|
71
68
|
IGarbageCollectorConfigs,
|
|
72
|
-
"
|
|
69
|
+
"gcEnabled" | "tombstoneMode" | "gcVersionInBaseSnapshot" | "gcVersionInEffect"
|
|
73
70
|
>,
|
|
74
|
-
|
|
75
|
-
wasGCRunInBaseSnapshot: boolean,
|
|
76
|
-
) {
|
|
77
|
-
this.wasGCRunInLatestSummary = wasGCRunInBaseSnapshot;
|
|
78
|
-
// For existing document, the latest summary is the one that we loaded from. So, use its GC version as the
|
|
79
|
-
// latest tracked GC version. For new documents, we will be writing the first summary with the current version.
|
|
80
|
-
this.latestSummaryGCVersion =
|
|
81
|
-
this.configs.gcVersionInBaseSnapshot ?? this.configs.gcVersionInEffect;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* Tells whether the GC state needs to be reset. This can happen under 3 conditions:
|
|
86
|
-
*
|
|
87
|
-
* 1. The base snapshot contains GC state but GC is disabled. This will happen the first time GC is disabled after
|
|
88
|
-
* it was enabled before. GC state needs to be removed from summary and all nodes should be marked referenced.
|
|
89
|
-
*
|
|
90
|
-
* 2. The base snapshot does not have GC state but GC is enabled. This will happen the very first time GC runs on
|
|
91
|
-
* a document and the first time GC is enabled after is was disabled before.
|
|
92
|
-
*
|
|
93
|
-
* 3. GC is enabled and the latest summary state is refreshed from a snapshot that had GC disabled and vice-versa.
|
|
94
|
-
*
|
|
95
|
-
* Note that the state will be reset only once for the first summary generated after this returns true. After that,
|
|
96
|
-
* this will return false.
|
|
97
|
-
*/
|
|
98
|
-
public get doesGCStateNeedReset(): boolean {
|
|
99
|
-
return this.wasGCRunInLatestSummary !== this.configs.shouldRunGC;
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Tells whether the GC state needs to be reset in the next summary. We need to do this if:
|
|
104
|
-
*
|
|
105
|
-
* 1. GC was enabled and is now disabled. The GC state needs to be removed and everything becomes referenced.
|
|
106
|
-
*
|
|
107
|
-
* 2. GC was disabled and is now enabled. The GC state needs to be regenerated and added to summary.
|
|
108
|
-
*
|
|
109
|
-
* 3. GC is enabled and the latest summary state is refreshed from a snapshot that had GC disabled and vice-versa.
|
|
110
|
-
*
|
|
111
|
-
* 4. The GC version in the latest summary is different from the current GC version. This can happen if:
|
|
112
|
-
*
|
|
113
|
-
* 4.1. The summary this client loaded with has data from a different GC version.
|
|
114
|
-
*
|
|
115
|
-
* 4.2. This client's latest summary was updated from a snapshot that has a different GC version.
|
|
116
|
-
*/
|
|
117
|
-
public get doesSummaryStateNeedReset(): boolean {
|
|
118
|
-
return (
|
|
119
|
-
this.doesGCStateNeedReset ||
|
|
120
|
-
(this.configs.shouldRunGC &&
|
|
121
|
-
this.latestSummaryGCVersion !== this.configs.gcVersionInEffect)
|
|
122
|
-
);
|
|
123
|
-
}
|
|
71
|
+
) {}
|
|
124
72
|
|
|
125
73
|
/**
|
|
126
74
|
* Called during GC initialization. Initialize the latest summary data from the base snapshot data.
|
|
@@ -152,7 +100,7 @@ export class GCSummaryStateTracker {
|
|
|
152
100
|
deletedNodes: Set<string>,
|
|
153
101
|
tombstones: string[],
|
|
154
102
|
): ISummarizeResult | undefined {
|
|
155
|
-
if (!this.configs.
|
|
103
|
+
if (!this.configs.gcEnabled) {
|
|
156
104
|
return;
|
|
157
105
|
}
|
|
158
106
|
|
|
@@ -283,25 +231,14 @@ export class GCSummaryStateTracker {
|
|
|
283
231
|
* Called to refresh the latest summary state. This happens when a pending summary is acked.
|
|
284
232
|
*/
|
|
285
233
|
public async refreshLatestSummary(result: IRefreshSummaryResult): Promise<void> {
|
|
286
|
-
if (!result.isSummaryTracked) {
|
|
287
|
-
return;
|
|
288
|
-
}
|
|
289
|
-
|
|
290
|
-
// If the summary is tracked, this client is the one that generated it. So, update wasGCRunInLatestSummary.
|
|
291
|
-
// Note that this has to be updated if GC did not run too. Otherwise, `gcStateNeedsReset` will always return
|
|
292
|
-
// true in scenarios where GC is currently disabled but enabled in the snapshot we loaded from.
|
|
293
|
-
this.wasGCRunInLatestSummary = this.configs.shouldRunGC;
|
|
294
|
-
|
|
295
|
-
if (!this.configs.shouldRunGC) {
|
|
234
|
+
if (!this.configs.gcEnabled || !result.isSummaryTracked) {
|
|
296
235
|
return;
|
|
297
236
|
}
|
|
298
237
|
|
|
299
|
-
this.latestSummaryGCVersion = this.configs.gcVersionInEffect;
|
|
300
238
|
this.latestSummaryData = this.pendingSummaryData;
|
|
301
239
|
this.pendingSummaryData = undefined;
|
|
302
240
|
this.updatedDSCountSinceLastSummary = 0;
|
|
303
241
|
this.fullGCModeForAutoRecovery = false;
|
|
304
|
-
return;
|
|
305
242
|
}
|
|
306
243
|
|
|
307
244
|
/**
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -3,7 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import {
|
|
6
|
+
import type { Tagged } from "@fluidframework/core-interfaces";
|
|
7
|
+
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions/internal";
|
|
7
8
|
import {
|
|
8
9
|
ITelemetryLoggerExt,
|
|
9
10
|
MonitoringContext,
|
|
@@ -12,7 +13,6 @@ import {
|
|
|
12
13
|
type ITelemetryGenericEventExt,
|
|
13
14
|
} from "@fluidframework/telemetry-utils/internal";
|
|
14
15
|
|
|
15
|
-
import type { Tagged } from "@fluidframework/core-interfaces";
|
|
16
16
|
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
17
17
|
import { ICreateContainerMetadata } from "../summary/index.js";
|
|
18
18
|
|
|
@@ -63,7 +63,7 @@ interface INodeUsageProps extends ICommonProps {
|
|
|
63
63
|
/** The full path (in GC Path format) to the node in question */
|
|
64
64
|
id: string;
|
|
65
65
|
/** Latest timestamp received from the server, as a baseline for computing GC state/age */
|
|
66
|
-
currentReferenceTimestampMs: number
|
|
66
|
+
currentReferenceTimestampMs: number;
|
|
67
67
|
/** The package path of the node. This may not be available if the node hasn't been loaded yet */
|
|
68
68
|
packagePath: readonly string[] | undefined;
|
|
69
69
|
/** In case of Revived - what node added the reference? */
|
|
@@ -165,12 +165,6 @@ export class GCTelemetryTracker {
|
|
|
165
165
|
...otherNodeUsageProps
|
|
166
166
|
}: INodeUsageProps,
|
|
167
167
|
) {
|
|
168
|
-
// If there is no reference timestamp to work with, no ops have been processed after creation. If so, skip
|
|
169
|
-
// logging as nothing interesting would have happened worth logging.
|
|
170
|
-
if (currentReferenceTimestampMs === undefined) {
|
|
171
|
-
return;
|
|
172
|
-
}
|
|
173
|
-
|
|
174
168
|
// Note: For SubDataStore Load usage, trackedId will be the DataStore's id, not the full path in question.
|
|
175
169
|
// This is necessary because the SubDataStore path may be unrecognized by GC (if suited for a custom request handler)
|
|
176
170
|
const nodeStateTracker = this.getNodeStateTracker(trackedId);
|
|
@@ -390,8 +384,7 @@ export class GCTelemetryTracker {
|
|
|
390
384
|
*/
|
|
391
385
|
const nodeStateTracker = this.getNodeStateTracker(detailedProps.trackedId); // Note: This is never SubDataStore path
|
|
392
386
|
const active =
|
|
393
|
-
nodeStateTracker === undefined ||
|
|
394
|
-
nodeStateTracker.state === UnreferencedState.Active;
|
|
387
|
+
nodeStateTracker === undefined || nodeStateTracker.state === UnreferencedState.Active;
|
|
395
388
|
if ((usageType === "Revived") === active) {
|
|
396
389
|
const pkg = await this.getNodePackagePath(eventProps.id.value);
|
|
397
390
|
const fromPkg = eventProps.fromId
|
package/src/gc/index.ts
CHANGED
|
@@ -30,13 +30,11 @@ export {
|
|
|
30
30
|
ISweepPhaseStats,
|
|
31
31
|
IGCStats,
|
|
32
32
|
oneDayMs,
|
|
33
|
-
runGCKey,
|
|
34
33
|
runSessionExpiryKey,
|
|
35
34
|
runSweepKey,
|
|
36
35
|
stableGCVersion,
|
|
37
36
|
disableAutoRecoveryKey,
|
|
38
37
|
disableDatastoreSweepKey,
|
|
39
|
-
detectOutboundRoutesViaDDSKey,
|
|
40
38
|
UnreferencedState,
|
|
41
39
|
throwOnTombstoneLoadOverrideKey,
|
|
42
40
|
GarbageCollectionMessage,
|
package/src/index.ts
CHANGED
|
@@ -25,7 +25,6 @@ export {
|
|
|
25
25
|
} from "./containerRuntime.js";
|
|
26
26
|
export {
|
|
27
27
|
ContainerMessageType,
|
|
28
|
-
ContainerRuntimeMessage,
|
|
29
28
|
IContainerRuntimeMessageCompatDetails,
|
|
30
29
|
CompatModeBehavior,
|
|
31
30
|
RecentlyAddedContainerRuntimeMessageDetails,
|
|
@@ -97,7 +96,7 @@ export {
|
|
|
97
96
|
ICancellableSummarizerController,
|
|
98
97
|
SubmitSummaryFailureData,
|
|
99
98
|
SummaryStage,
|
|
100
|
-
|
|
99
|
+
IRetriableFailureError,
|
|
101
100
|
ISummarizeEventProps,
|
|
102
101
|
IdCompressorMode,
|
|
103
102
|
IDocumentSchema,
|
package/src/messageTypes.ts
CHANGED
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
+
import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
|
|
6
7
|
import type { IdCreationRange } from "@fluidframework/id-compressor/internal";
|
|
7
|
-
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
8
8
|
import {
|
|
9
9
|
IAttachMessage,
|
|
10
10
|
IEnvelope,
|
|
@@ -60,6 +60,7 @@ export enum ContainerMessageType {
|
|
|
60
60
|
/**
|
|
61
61
|
* How should an older client handle an unrecognized remote op type?
|
|
62
62
|
*
|
|
63
|
+
* @deprecated The utility of a mechanism to handle unknown messages is outweighed by the nuance required to get it right.
|
|
63
64
|
* @internal
|
|
64
65
|
*/
|
|
65
66
|
export type CompatModeBehavior =
|
|
@@ -71,6 +72,7 @@ export type CompatModeBehavior =
|
|
|
71
72
|
/**
|
|
72
73
|
* All the info an older client would need to know how to handle an unrecognized remote op type
|
|
73
74
|
*
|
|
75
|
+
* @deprecated The utility of a mechanism to handle unknown messages is outweighed by the nuance required to get it right.
|
|
74
76
|
* @internal
|
|
75
77
|
*/
|
|
76
78
|
export interface IContainerRuntimeMessageCompatDetails {
|
|
@@ -85,8 +87,7 @@ export interface IContainerRuntimeMessageCompatDetails {
|
|
|
85
87
|
* IMPORTANT: when creating one to be serialized, set the properties in the order they appear here.
|
|
86
88
|
* This way stringified values can be compared.
|
|
87
89
|
*/
|
|
88
|
-
interface TypedContainerRuntimeMessage<TType extends ContainerMessageType, TContents>
|
|
89
|
-
extends Partial<RecentlyAddedContainerRuntimeMessageDetails> {
|
|
90
|
+
interface TypedContainerRuntimeMessage<TType extends ContainerMessageType, TContents> {
|
|
90
91
|
/** Type of the op, within the ContainerRuntime's domain */
|
|
91
92
|
type: TType;
|
|
92
93
|
/** Domain-specific contents, interpreted according to the type */
|
|
@@ -95,6 +96,7 @@ interface TypedContainerRuntimeMessage<TType extends ContainerMessageType, TCont
|
|
|
95
96
|
|
|
96
97
|
/**
|
|
97
98
|
* Additional details expected for any recently added message.
|
|
99
|
+
* @deprecated The utility of a mechanism to handle unknown messages is outweighed by the nuance required to get it right.
|
|
98
100
|
* @internal
|
|
99
101
|
*/
|
|
100
102
|
export interface RecentlyAddedContainerRuntimeMessageDetails {
|
|
@@ -137,7 +139,9 @@ export type ContainerRuntimeIdAllocationMessage = TypedContainerRuntimeMessage<
|
|
|
137
139
|
export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
|
|
138
140
|
ContainerMessageType.GC,
|
|
139
141
|
GarbageCollectionMessage
|
|
140
|
-
|
|
142
|
+
> &
|
|
143
|
+
// While deprecating: GC messages may still contain compat details for now
|
|
144
|
+
Partial<RecentlyAddedContainerRuntimeMessageDetails>;
|
|
141
145
|
export type ContainerRuntimeDocumentSchemaMessage = TypedContainerRuntimeMessage<
|
|
142
146
|
ContainerMessageType.DocumentSchemaChange,
|
|
143
147
|
IDocumentSchemaChangeMessage
|
|
@@ -232,23 +236,3 @@ export type InboundSequencedContainerRuntimeMessageOrSystemMessage =
|
|
|
232
236
|
*/
|
|
233
237
|
export type InboundSequencedRecentlyAddedContainerRuntimeMessage = ISequencedDocumentMessage &
|
|
234
238
|
Partial<RecentlyAddedContainerRuntimeMessageDetails>;
|
|
235
|
-
|
|
236
|
-
/**
|
|
237
|
-
* The unpacked runtime message / details to be handled or dispatched by the ContainerRuntime
|
|
238
|
-
*
|
|
239
|
-
* IMPORTANT: when creating one to be serialized, set the properties in the order they appear here.
|
|
240
|
-
* This way stringified values can be compared.
|
|
241
|
-
*
|
|
242
|
-
* @deprecated this is an internal type which should not be used outside of the package.
|
|
243
|
-
* Internally, it is superseded by `TypedContainerRuntimeMessage`.
|
|
244
|
-
*
|
|
245
|
-
* @internal
|
|
246
|
-
*/
|
|
247
|
-
export interface ContainerRuntimeMessage {
|
|
248
|
-
/** Type of the op, within the ContainerRuntime's domain */
|
|
249
|
-
type: ContainerMessageType;
|
|
250
|
-
/** Domain-specific contents, interpreted according to the type */
|
|
251
|
-
contents: any;
|
|
252
|
-
/** Info describing how to handle this op in case the type is unrecognized (default: fail to process) */
|
|
253
|
-
compatDetails?: IContainerRuntimeMessageCompatDetails;
|
|
254
|
-
}
|