@fluidframework/container-runtime 2.0.0-dev-rc.1.0.0.228517 → 2.0.0-dev-rc.2.0.0.245554
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/{.eslintrc.js → .eslintrc.cjs} +5 -5
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +46 -1
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/container-runtime.api.md +435 -33
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +0 -5
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +0 -12
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +225 -0
- package/dist/channelCollection.d.ts.map +1 -0
- package/dist/{dataStores.js → channelCollection.js} +449 -143
- package/dist/channelCollection.js.map +1 -0
- package/dist/connectionTelemetry.d.ts +11 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +42 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +138 -49
- package/dist/container-runtime-beta.d.ts +75 -9
- package/dist/container-runtime-public.d.ts +75 -9
- package/dist/container-runtime-untrimmed.d.ts +717 -49
- package/dist/containerHandleContext.d.ts +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +84 -64
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +550 -427
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +2 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +12 -11
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +118 -38
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +249 -161
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +2 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +1 -0
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +91 -5
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +29 -7
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +179 -98
- 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 +30 -23
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +40 -15
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +11 -4
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +18 -6
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +7 -7
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +20 -20
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +22 -11
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +8 -8
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +40 -38
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +11 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +36 -40
- package/dist/index.js.map +1 -1
- package/dist/messageTypes.d.ts +4 -4
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +2 -2
- package/dist/opLifecycle/batchManager.d.ts.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 +8 -8
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +18 -18
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -4
- 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 +3 -3
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +1 -10
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +5 -5
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +7 -7
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +20 -12
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- 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/package.json +3 -0
- 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 +2 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -10
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +5 -5
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +12 -12
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +43 -43
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.js +8 -8
- 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 +11 -10
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +114 -81
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +4 -4
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +6 -6
- 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 +3 -3
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +3 -3
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js +4 -4
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -57
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +10 -21
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +15 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +6 -5
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +10 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +5 -6
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +4 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
- package/lib/batchTracker.d.ts.map +1 -0
- package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
- package/lib/batchTracker.js.map +1 -0
- package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -6
- package/lib/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.mjs → blobManager.js} +1 -13
- package/lib/blobManager.js.map +1 -0
- package/lib/channelCollection.d.ts +225 -0
- package/lib/channelCollection.d.ts.map +1 -0
- package/lib/{dataStores.mjs → channelCollection.js} +436 -133
- package/lib/channelCollection.js.map +1 -0
- package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
- package/lib/connectionTelemetry.d.ts.map +1 -0
- package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
- package/lib/connectionTelemetry.js.map +1 -0
- package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +138 -49
- package/lib/{container-runtime-beta.d.mts → container-runtime-beta.d.ts} +75 -9
- package/lib/{container-runtime-public.d.mts → container-runtime-public.d.ts} +75 -9
- package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +717 -49
- package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
- package/lib/containerHandleContext.d.ts.map +1 -0
- package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
- package/lib/containerHandleContext.js.map +1 -0
- package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +89 -65
- package/lib/containerRuntime.d.ts.map +1 -0
- package/lib/{containerRuntime.mjs → containerRuntime.js} +469 -348
- package/lib/containerRuntime.js.map +1 -0
- package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
- package/lib/dataStore.d.ts.map +1 -0
- package/lib/{dataStore.mjs → dataStore.js} +13 -12
- package/lib/dataStore.js.map +1 -0
- package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +119 -39
- package/lib/dataStoreContext.d.ts.map +1 -0
- package/lib/{dataStoreContext.mjs → dataStoreContext.js} +241 -153
- package/lib/dataStoreContext.js.map +1 -0
- package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +3 -2
- package/lib/dataStoreContexts.d.ts.map +1 -0
- package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +2 -1
- package/lib/dataStoreContexts.js.map +1 -0
- package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -0
- package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
- package/lib/dataStoreRegistry.js.map +1 -0
- package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/lib/deltaManagerSummarizerProxy.js +124 -0
- package/lib/deltaManagerSummarizerProxy.js.map +1 -0
- package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -0
- package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
- package/lib/deltaScheduler.js.map +1 -0
- package/lib/{error.d.mts → error.d.ts} +1 -1
- package/lib/error.d.ts.map +1 -0
- package/lib/{error.mjs → error.js} +1 -1
- package/lib/error.js.map +1 -0
- package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +30 -8
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +149 -68
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
- package/lib/gc/gcConfigs.d.ts.map +1 -0
- package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +14 -7
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +41 -16
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +11 -4
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
- package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
- package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
- package/lib/gc/gcTelemetry.d.ts.map +1 -0
- package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
- package/lib/gc/gcTelemetry.js.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/lib/gc/index.d.ts +13 -0
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/{index.mjs → index.js} +8 -8
- package/lib/gc/index.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +12 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +15 -0
- package/lib/index.js.map +1 -0
- package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
- package/lib/messageTypes.d.ts.map +1 -0
- package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
- package/lib/messageTypes.js.map +1 -0
- package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
- package/lib/metadata.d.ts.map +1 -0
- package/lib/{metadata.mjs → metadata.js} +1 -1
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -0
- package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -0
- package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
- package/lib/opLifecycle/definitions.d.ts.map +1 -0
- package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -0
- package/lib/opLifecycle/index.d.ts +13 -0
- package/lib/opLifecycle/index.d.ts.map +1 -0
- package/lib/opLifecycle/index.js +12 -0
- package/lib/opLifecycle/index.js.map +1 -0
- package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -0
- package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -0
- package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
- package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
- package/lib/opLifecycle/opSplitter.js.map +1 -0
- package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
- package/lib/opLifecycle/outbox.d.ts.map +1 -0
- package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
- package/lib/opLifecycle/outbox.js.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
- package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
- package/lib/opProperties.d.ts.map +1 -0
- package/lib/{opProperties.mjs → opProperties.js} +1 -1
- package/lib/opProperties.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
- package/lib/pendingStateManager.d.ts.map +1 -0
- package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
- package/lib/pendingStateManager.js.map +1 -0
- package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
- package/lib/scheduleManager.d.ts.map +1 -0
- package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
- package/lib/scheduleManager.js.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -0
- package/lib/summary/{index.d.mts → index.d.ts} +13 -13
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/{index.mjs → index.js} +12 -12
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
- package/lib/summary/runningSummarizer.d.ts.map +1 -0
- package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
- package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -0
- package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
- package/lib/summary/summarizerNode/index.d.ts.map +1 -0
- package/lib/summary/summarizerNode/index.js +7 -0
- package/lib/summary/summarizerNode/index.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
- package/lib/summary/summaryCollection.js.map +1 -0
- package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
- package/lib/summary/summaryGenerator.js.map +1 -0
- package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
- package/lib/summary/summaryManager.d.ts.map +1 -0
- package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
- package/lib/summary/summaryManager.js.map +1 -0
- package/lib/test/batchTracker.spec.js +88 -0
- package/lib/test/batchTracker.spec.js.map +1 -0
- package/lib/test/blobManager.spec.js +835 -0
- package/lib/test/blobManager.spec.js.map +1 -0
- package/lib/test/channelCollection.spec.js +138 -0
- package/lib/test/channelCollection.spec.js.map +1 -0
- package/lib/test/containerRuntime.spec.js +1748 -0
- package/lib/test/containerRuntime.spec.js.map +1 -0
- package/lib/test/dataStoreContext.spec.js +771 -0
- package/lib/test/dataStoreContext.spec.js.map +1 -0
- package/lib/test/dataStoreCreation.spec.js +303 -0
- package/lib/test/dataStoreCreation.spec.js.map +1 -0
- package/lib/test/dataStoreRegistry.spec.js +26 -0
- package/lib/test/dataStoreRegistry.spec.js.map +1 -0
- package/lib/test/fuzz/fuzzUtils.js +66 -0
- package/lib/test/fuzz/fuzzUtils.js.map +1 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
- package/lib/test/gc/garbageCollection.spec.js +1464 -0
- package/lib/test/gc/garbageCollection.spec.js.map +1 -0
- package/lib/test/gc/gcConfigs.spec.js +689 -0
- package/lib/test/gc/gcConfigs.spec.js.map +1 -0
- package/lib/test/gc/gcHelpers.spec.js +110 -0
- package/lib/test/gc/gcHelpers.spec.js.map +1 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
- package/lib/test/gc/gcStats.spec.js +390 -0
- package/lib/test/gc/gcStats.spec.js.map +1 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
- package/lib/test/gc/gcTelemetry.spec.js +530 -0
- package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
- package/lib/test/gc/gcUnitTestHelpers.js +29 -0
- package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
- package/lib/test/getPendingBlobs.spec.js +193 -0
- package/lib/test/getPendingBlobs.spec.js.map +1 -0
- package/lib/test/hardwareStats.spec.js +93 -0
- package/lib/test/hardwareStats.spec.js.map +1 -0
- package/lib/test/index.js +6 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/batchManager.spec.js +189 -0
- package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
- package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
- package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
- package/lib/test/opLifecycle/outbox.spec.js +675 -0
- package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
- package/lib/test/pendingStateManager.spec.js +329 -0
- package/lib/test/pendingStateManager.spec.js.map +1 -0
- package/lib/test/scheduleManager.spec.js +270 -0
- package/lib/test/scheduleManager.spec.js.map +1 -0
- package/lib/test/summarizerNode.spec.js +326 -0
- package/lib/test/summarizerNode.spec.js.map +1 -0
- package/lib/test/summarizerNodeWithGc.spec.js +318 -0
- package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
- package/lib/test/summary/orderedClientElection.spec.js +535 -0
- package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
- package/lib/test/summary/runningSummarizer.spec.js +1349 -0
- package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizer.spec.js +29 -0
- package/lib/test/summary/summarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizerClientElection.spec.js +436 -0
- package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
- package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
- package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
- package/lib/test/summary/summaryCollection.spec.js +200 -0
- package/lib/test/summary/summaryCollection.spec.js.map +1 -0
- package/lib/test/summary/summaryManager.spec.js +430 -0
- package/lib/test/summary/summaryManager.spec.js.map +1 -0
- package/lib/test/summary/testQuorumClients.js +34 -0
- package/lib/test/summary/testQuorumClients.js.map +1 -0
- package/lib/test/throttler.spec.js +175 -0
- package/lib/test/throttler.spec.js.map +1 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
- package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
- package/lib/throttler.d.ts.map +1 -0
- package/lib/{throttler.mjs → throttler.js} +1 -1
- package/lib/throttler.js.map +1 -0
- package/package.json +106 -87
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -15
- package/src/{dataStores.ts → channelCollection.ts} +622 -170
- package/src/connectionTelemetry.ts +42 -3
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +683 -483
- package/src/dataStore.ts +16 -15
- package/src/dataStoreContext.ts +378 -216
- package/src/dataStoreContexts.ts +2 -1
- package/src/deltaManagerSummarizerProxy.ts +132 -7
- package/src/gc/garbageCollection.ts +167 -71
- package/src/gc/gcConfigs.ts +17 -7
- package/src/gc/gcDefinitions.ts +42 -16
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +19 -7
- package/src/gc/gcTelemetry.ts +10 -9
- package/src/gc/gcUnreferencedStateTracker.ts +12 -1
- package/src/gc/index.ts +11 -9
- package/src/index.ts +29 -26
- package/src/messageTypes.ts +4 -4
- package/src/opLifecycle/README.md +2 -4
- package/src/opLifecycle/batchManager.ts +2 -2
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +8 -8
- package/src/opLifecycle/opCompressor.ts +3 -3
- package/src/opLifecycle/opDecompressor.ts +3 -3
- package/src/opLifecycle/opGroupingManager.ts +3 -12
- package/src/opLifecycle/opSplitter.ts +3 -3
- package/src/opLifecycle/outbox.ts +29 -9
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +19 -13
- package/src/scheduleManager.ts +4 -4
- package/src/summary/index.ts +13 -12
- package/src/summary/orderedClientElection.ts +1 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +141 -93
- package/src/summary/summarizer.ts +7 -7
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +3 -3
- package/src/summary/summarizerNode/index.ts +6 -3
- package/src/summary/summarizerNode/summarizerNode.ts +54 -69
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
- package/src/summary/summarizerTypes.ts +12 -24
- package/src/summary/summaryFormat.ts +16 -2
- package/src/summary/summaryGenerator.ts +16 -4
- package/src/summary/summaryManager.ts +6 -7
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/dist/dataStores.d.ts +0 -149
- package/dist/dataStores.d.ts.map +0 -1
- package/dist/dataStores.js.map +0 -1
- package/dist/deltaManagerProxyBase.d.ts.map +0 -1
- package/dist/deltaManagerProxyBase.js +0 -77
- package/dist/deltaManagerProxyBase.js.map +0 -1
- package/lib/batchTracker.d.mts.map +0 -1
- package/lib/batchTracker.mjs.map +0 -1
- package/lib/blobManager.d.mts.map +0 -1
- package/lib/blobManager.mjs.map +0 -1
- package/lib/connectionTelemetry.d.mts.map +0 -1
- package/lib/connectionTelemetry.mjs.map +0 -1
- package/lib/containerHandleContext.d.mts.map +0 -1
- package/lib/containerHandleContext.mjs.map +0 -1
- package/lib/containerRuntime.d.mts.map +0 -1
- package/lib/containerRuntime.mjs.map +0 -1
- package/lib/dataStore.d.mts.map +0 -1
- package/lib/dataStore.mjs.map +0 -1
- package/lib/dataStoreContext.d.mts.map +0 -1
- package/lib/dataStoreContext.mjs.map +0 -1
- package/lib/dataStoreContexts.d.mts.map +0 -1
- package/lib/dataStoreContexts.mjs.map +0 -1
- package/lib/dataStoreRegistry.d.mts.map +0 -1
- package/lib/dataStoreRegistry.mjs.map +0 -1
- package/lib/dataStores.d.mts +0 -149
- package/lib/dataStores.d.mts.map +0 -1
- package/lib/dataStores.mjs.map +0 -1
- package/lib/deltaManagerProxyBase.d.mts +0 -35
- package/lib/deltaManagerProxyBase.d.mts.map +0 -1
- package/lib/deltaManagerProxyBase.mjs +0 -73
- package/lib/deltaManagerProxyBase.mjs.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
- package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.mjs +0 -38
- package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
- package/lib/deltaScheduler.d.mts.map +0 -1
- package/lib/deltaScheduler.mjs.map +0 -1
- package/lib/error.d.mts.map +0 -1
- package/lib/error.mjs.map +0 -1
- package/lib/gc/garbageCollection.d.mts.map +0 -1
- package/lib/gc/garbageCollection.mjs.map +0 -1
- package/lib/gc/gcConfigs.d.mts.map +0 -1
- package/lib/gc/gcConfigs.mjs.map +0 -1
- package/lib/gc/gcDefinitions.d.mts.map +0 -1
- package/lib/gc/gcDefinitions.mjs.map +0 -1
- package/lib/gc/gcHelpers.mjs.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
- package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
- package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
- package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
- package/lib/gc/gcTelemetry.d.mts.map +0 -1
- package/lib/gc/gcTelemetry.mjs.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
- package/lib/gc/index.d.mts +0 -13
- package/lib/gc/index.d.mts.map +0 -1
- package/lib/gc/index.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs +0 -24
- package/lib/index.mjs.map +0 -1
- package/lib/messageTypes.d.mts.map +0 -1
- package/lib/messageTypes.mjs.map +0 -1
- package/lib/metadata.d.mts.map +0 -1
- package/lib/metadata.mjs.map +0 -1
- package/lib/opLifecycle/batchManager.d.mts.map +0 -1
- package/lib/opLifecycle/batchManager.mjs.map +0 -1
- package/lib/opLifecycle/definitions.d.mts.map +0 -1
- package/lib/opLifecycle/definitions.mjs.map +0 -1
- package/lib/opLifecycle/index.d.mts +0 -13
- package/lib/opLifecycle/index.d.mts.map +0 -1
- package/lib/opLifecycle/index.mjs +0 -12
- package/lib/opLifecycle/index.mjs.map +0 -1
- package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opCompressor.mjs.map +0 -1
- package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
- package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
- package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
- package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
- package/lib/opLifecycle/opSplitter.mjs.map +0 -1
- package/lib/opLifecycle/outbox.d.mts.map +0 -1
- package/lib/opLifecycle/outbox.mjs.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
- package/lib/opProperties.d.mts.map +0 -1
- package/lib/opProperties.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/pendingStateManager.d.mts.map +0 -1
- package/lib/pendingStateManager.mjs.map +0 -1
- package/lib/scheduleManager.d.mts.map +0 -1
- package/lib/scheduleManager.mjs.map +0 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
- package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
- package/lib/summary/index.d.mts.map +0 -1
- package/lib/summary/index.mjs.map +0 -1
- package/lib/summary/orderedClientElection.d.mts.map +0 -1
- package/lib/summary/orderedClientElection.mjs.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
- package/lib/summary/runningSummarizer.d.mts.map +0 -1
- package/lib/summary/runningSummarizer.mjs.map +0 -1
- package/lib/summary/summarizer.d.mts.map +0 -1
- package/lib/summary/summarizer.mjs.map +0 -1
- package/lib/summary/summarizerClientElection.d.mts.map +0 -1
- package/lib/summary/summarizerClientElection.mjs.map +0 -1
- package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
- package/lib/summary/summarizerHeuristics.mjs.map +0 -1
- package/lib/summary/summarizerNode/index.d.mts.map +0 -1
- package/lib/summary/summarizerNode/index.mjs +0 -7
- package/lib/summary/summarizerNode/index.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
- package/lib/summary/summarizerTypes.d.mts.map +0 -1
- package/lib/summary/summarizerTypes.mjs.map +0 -1
- package/lib/summary/summaryCollection.d.mts.map +0 -1
- package/lib/summary/summaryCollection.mjs.map +0 -1
- package/lib/summary/summaryFormat.d.mts.map +0 -1
- package/lib/summary/summaryFormat.mjs.map +0 -1
- package/lib/summary/summaryGenerator.d.mts.map +0 -1
- package/lib/summary/summaryGenerator.mjs.map +0 -1
- package/lib/summary/summaryManager.d.mts.map +0 -1
- package/lib/summary/summaryManager.mjs.map +0 -1
- package/lib/throttler.d.mts.map +0 -1
- package/lib/throttler.mjs.map +0 -1
- package/src/deltaManagerProxyBase.ts +0 -111
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -8,7 +8,7 @@ import {
|
|
|
8
8
|
UsageError,
|
|
9
9
|
validatePrecondition,
|
|
10
10
|
} from "@fluidframework/telemetry-utils";
|
|
11
|
-
import { IContainerRuntimeMetadata } from "../summary";
|
|
11
|
+
import { IContainerRuntimeMetadata } from "../summary/index.js";
|
|
12
12
|
import {
|
|
13
13
|
nextGCVersion,
|
|
14
14
|
defaultInactiveTimeoutMs,
|
|
@@ -32,8 +32,10 @@ import {
|
|
|
32
32
|
defaultSweepGracePeriodMs,
|
|
33
33
|
gcGenerationOptionName,
|
|
34
34
|
IGCMetadata_Deprecated,
|
|
35
|
-
|
|
36
|
-
|
|
35
|
+
disableDatastoreSweepKey,
|
|
36
|
+
gcDisableDataStoreSweepOptionName,
|
|
37
|
+
} from "./gcDefinitions.js";
|
|
38
|
+
import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
|
|
37
39
|
|
|
38
40
|
/**
|
|
39
41
|
* Generates configurations for the Garbage Collector that it uses to determine what to run and how.
|
|
@@ -137,18 +139,26 @@ export function generateGCConfigs(
|
|
|
137
139
|
* Whether sweep should run or not. This refers to whether Tombstones should fail on load and whether
|
|
138
140
|
* sweep-ready nodes should be deleted.
|
|
139
141
|
*
|
|
140
|
-
* Assuming overall GC is enabled and
|
|
142
|
+
* Assuming overall GC is enabled and tombstoneTimeout is provided, the following conditions have to be met to run sweep:
|
|
141
143
|
*
|
|
142
|
-
* 1. Sweep should be
|
|
143
|
-
* 2. Sweep should be enabled for this session.
|
|
144
|
+
* 1. Sweep should be allowed in this container.
|
|
145
|
+
* 2. Sweep should be enabled for this session, optionally restricted to attachment blobs only.
|
|
144
146
|
*
|
|
145
147
|
* These conditions can be overridden via the RunSweep feature flag.
|
|
146
148
|
*/
|
|
147
|
-
const
|
|
149
|
+
const sweepEnabled: boolean =
|
|
148
150
|
!shouldRunGC || tombstoneTimeoutMs === undefined
|
|
149
151
|
? false
|
|
150
152
|
: mc.config.getBoolean(runSweepKey) ??
|
|
151
153
|
(sweepAllowed && createParams.gcOptions.enableGCSweep === true);
|
|
154
|
+
const disableDatastoreSweep =
|
|
155
|
+
mc.config.getBoolean(disableDatastoreSweepKey) === true ||
|
|
156
|
+
createParams.gcOptions[gcDisableDataStoreSweepOptionName] === true;
|
|
157
|
+
const shouldRunSweep: IGarbageCollectorConfigs["shouldRunSweep"] = sweepEnabled
|
|
158
|
+
? disableDatastoreSweep
|
|
159
|
+
? "ONLY_BLOBS"
|
|
160
|
+
: "YES"
|
|
161
|
+
: "NO";
|
|
152
162
|
|
|
153
163
|
// Override inactive timeout if test config or gc options to override it is set.
|
|
154
164
|
const inactiveTimeoutMs =
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -18,9 +18,9 @@ import {
|
|
|
18
18
|
IContainerRuntimeMetadata,
|
|
19
19
|
ICreateContainerMetadata,
|
|
20
20
|
IRefreshSummaryResult,
|
|
21
|
-
} from "../summary";
|
|
22
|
-
import { RuntimeHeaderData } from "../containerRuntime";
|
|
23
|
-
import { ContainerRuntimeGCMessage } from "../messageTypes";
|
|
21
|
+
} from "../summary/index.js";
|
|
22
|
+
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
23
|
+
import { ContainerRuntimeGCMessage } from "../messageTypes.js";
|
|
24
24
|
|
|
25
25
|
/**
|
|
26
26
|
* @alpha
|
|
@@ -40,6 +40,12 @@ export const nextGCVersion: GCVersion = 4;
|
|
|
40
40
|
*/
|
|
41
41
|
export const gcDisableThrowOnTombstoneLoadOptionName = "gcDisableThrowOnTombstoneLoad";
|
|
42
42
|
|
|
43
|
+
/**
|
|
44
|
+
* This undocumented GC Option (on ContainerRuntime Options) allows an app to enable Sweep for blobs only.
|
|
45
|
+
* Only applies if enableGCSweep option is set to true.
|
|
46
|
+
*/
|
|
47
|
+
export const gcDisableDataStoreSweepOptionName = "disableDataStoreSweep";
|
|
48
|
+
|
|
43
49
|
/**
|
|
44
50
|
* This undocumented GC Option (on ContainerRuntime Options) allows configuring which documents can have Sweep enabled.
|
|
45
51
|
* This provides a way to disable both Tombstone Enforcement and Sweep.
|
|
@@ -70,12 +76,12 @@ export const throwOnTombstoneLoadOverrideKey =
|
|
|
70
76
|
export const throwOnTombstoneUsageKey = "Fluid.GarbageCollection.ThrowOnTombstoneUsage";
|
|
71
77
|
/** Config key to enable GC version upgrade. */
|
|
72
78
|
export const gcVersionUpgradeToV4Key = "Fluid.GarbageCollection.GCVersionUpgradeToV4";
|
|
73
|
-
/** Config key to disable GC sweep for datastores. */
|
|
79
|
+
/** Config key to disable GC sweep for datastores. They'll merely be Tombstoned. */
|
|
74
80
|
export const disableDatastoreSweepKey = "Fluid.GarbageCollection.DisableDataStoreSweep";
|
|
75
|
-
/** Config key to disable GC sweep for attachment blobs. */
|
|
76
|
-
export const disableAttachmentBlobSweepKey = "Fluid.GarbageCollection.DisableAttachmentBlobSweep";
|
|
77
81
|
/** Config key to revert new paradigm of detecting outbound routes in ContainerRuntime layer (use true) */
|
|
78
82
|
export const detectOutboundRoutesViaDDSKey = "Fluid.GarbageCollection.DetectOutboundRoutesViaDDS";
|
|
83
|
+
/** Config key to disable auto-recovery mechanism that protects Tombstones that are loaded from being swept (use true) */
|
|
84
|
+
export const disableAutoRecoveryKey = "Fluid.GarbageCollection.DisableAutoRecovery";
|
|
79
85
|
|
|
80
86
|
// One day in milliseconds.
|
|
81
87
|
export const oneDayMs = 1 * 24 * 60 * 60 * 1000;
|
|
@@ -253,6 +259,8 @@ export type GCNodeType = (typeof GCNodeType)[keyof typeof GCNodeType];
|
|
|
253
259
|
export const GarbageCollectionMessageType = {
|
|
254
260
|
/** Message sent directing GC to delete the given nodes */
|
|
255
261
|
Sweep: "Sweep",
|
|
262
|
+
/** Message sent notifying GC that a Tombstoned object was Loaded */
|
|
263
|
+
TombstoneLoaded: "TombstoneLoaded",
|
|
256
264
|
} as const;
|
|
257
265
|
|
|
258
266
|
/**
|
|
@@ -266,16 +274,28 @@ export type GarbageCollectionMessageType =
|
|
|
266
274
|
* @internal
|
|
267
275
|
*/
|
|
268
276
|
export interface ISweepMessage {
|
|
269
|
-
|
|
270
|
-
|
|
277
|
+
/** @see GarbageCollectionMessageType.Sweep */
|
|
278
|
+
type: typeof GarbageCollectionMessageType.Sweep;
|
|
279
|
+
/** The ids of nodes that are deleted. */
|
|
271
280
|
deletedNodeIds: string[];
|
|
272
281
|
}
|
|
273
282
|
|
|
283
|
+
/**
|
|
284
|
+
* The GC TombstoneLoaded message.
|
|
285
|
+
* @internal
|
|
286
|
+
*/
|
|
287
|
+
export interface ITombstoneLoadedMessage {
|
|
288
|
+
/** @see GarbageCollectionMessageType.TombstoneLoaded */
|
|
289
|
+
type: typeof GarbageCollectionMessageType.TombstoneLoaded;
|
|
290
|
+
/** The id of Tombstoned node that was loaded. */
|
|
291
|
+
nodePath: string;
|
|
292
|
+
}
|
|
293
|
+
|
|
274
294
|
/**
|
|
275
295
|
* Type for a message to be used for sending / received garbage collection messages.
|
|
276
296
|
* @internal
|
|
277
297
|
*/
|
|
278
|
-
export type GarbageCollectionMessage = ISweepMessage;
|
|
298
|
+
export type GarbageCollectionMessage = ISweepMessage | ITombstoneLoadedMessage;
|
|
279
299
|
|
|
280
300
|
/**
|
|
281
301
|
* Defines the APIs for the runtime object to be passed to the garbage collector.
|
|
@@ -287,8 +307,6 @@ export interface IGarbageCollectionRuntime {
|
|
|
287
307
|
getGCData(fullGC?: boolean): Promise<IGarbageCollectionData>;
|
|
288
308
|
/** After GC has run, called to notify the runtime of routes that are used in it. */
|
|
289
309
|
updateUsedRoutes(usedRoutes: readonly string[]): void;
|
|
290
|
-
/** After GC has run, called to notify the runtime of routes that are unused in it. */
|
|
291
|
-
updateUnusedRoutes(unusedRoutes: readonly string[]): void;
|
|
292
310
|
/**
|
|
293
311
|
* After GC has run and identified nodes that are sweep ready, called to delete the sweep ready nodes. The runtime
|
|
294
312
|
* should return the routes of nodes that were deleted.
|
|
@@ -307,6 +325,12 @@ export interface IGarbageCollectionRuntime {
|
|
|
307
325
|
|
|
308
326
|
/** Defines the contract for the garbage collector. */
|
|
309
327
|
export interface IGarbageCollector {
|
|
328
|
+
/**
|
|
329
|
+
* Tells the time at which session expiry timer started in a previous container.
|
|
330
|
+
* This is only set when loading from a stashed container and will be equal to the
|
|
331
|
+
* original container's local client time when it was loaded (and started the session expiry timer).
|
|
332
|
+
*/
|
|
333
|
+
readonly sessionExpiryTimerStarted: number | undefined;
|
|
310
334
|
/** Tells whether GC should run or not. */
|
|
311
335
|
readonly shouldRunGC: boolean;
|
|
312
336
|
/** Tells whether the GC state in summary needs to be reset in the next summary. */
|
|
@@ -355,7 +379,7 @@ export interface IGarbageCollector {
|
|
|
355
379
|
headerData?: RuntimeHeaderData,
|
|
356
380
|
): void;
|
|
357
381
|
/** Called when a reference is added to a node. Used to identify nodes that were referenced between summaries. */
|
|
358
|
-
addedOutboundReference(fromNodePath: string, toNodePath: string): void;
|
|
382
|
+
addedOutboundReference(fromNodePath: string, toNodePath: string, autorecovery?: true): void;
|
|
359
383
|
/** Called to process a garbage collection message. */
|
|
360
384
|
processMessage(message: ContainerRuntimeGCMessage, local: boolean): void;
|
|
361
385
|
/** Returns true if this node has been deleted by GC during sweep phase. */
|
|
@@ -378,6 +402,7 @@ export interface IGarbageCollectorCreateParams {
|
|
|
378
402
|
readonly getLastSummaryTimestampMs: () => number | undefined;
|
|
379
403
|
readonly readAndParseBlob: ReadAndParseBlob;
|
|
380
404
|
readonly submitMessage: (message: ContainerRuntimeGCMessage) => void;
|
|
405
|
+
readonly sessionExpiryTimerStarted?: number | undefined;
|
|
381
406
|
}
|
|
382
407
|
|
|
383
408
|
/**
|
|
@@ -449,7 +474,7 @@ export interface IGarbageCollectorConfigs {
|
|
|
449
474
|
*/
|
|
450
475
|
readonly gcEnabled: boolean;
|
|
451
476
|
/**
|
|
452
|
-
* Tracks if sweep phase is
|
|
477
|
+
* Tracks if sweep phase is allowed for this document. This is specified during document creation and doesn't change
|
|
453
478
|
* throughout its lifetime.
|
|
454
479
|
*/
|
|
455
480
|
readonly sweepEnabled: boolean;
|
|
@@ -459,10 +484,11 @@ export interface IGarbageCollectorConfigs {
|
|
|
459
484
|
*/
|
|
460
485
|
readonly shouldRunGC: boolean;
|
|
461
486
|
/**
|
|
462
|
-
* Tracks if sweep phase should run or not
|
|
463
|
-
*
|
|
487
|
+
* Tracks if sweep phase should run or not, or if it should run only for attachment blobs.
|
|
488
|
+
* Even if the sweep phase is allowed for a document (see sweepEnabled), it may be disabled or partially enabled
|
|
489
|
+
* for the session, depending on a variety of other configurations present.
|
|
464
490
|
*/
|
|
465
|
-
readonly shouldRunSweep:
|
|
491
|
+
readonly shouldRunSweep: "YES" | "ONLY_BLOBS" | "NO";
|
|
466
492
|
/**
|
|
467
493
|
* If true, bypass optimizations and generate GC data for all nodes irrespective of whether a node changed or not.
|
|
468
494
|
*/
|
package/src/gc/gcHelpers.ts
CHANGED
|
@@ -12,12 +12,12 @@ import {
|
|
|
12
12
|
IGarbageCollectionData,
|
|
13
13
|
IGarbageCollectionDetailsBase,
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
|
-
import { GCFeatureMatrix, GCVersion, IGCMetadata } from "./gcDefinitions";
|
|
15
|
+
import { GCFeatureMatrix, GCVersion, IGCMetadata } from "./gcDefinitions.js";
|
|
16
16
|
import {
|
|
17
17
|
IGarbageCollectionNodeData,
|
|
18
18
|
IGarbageCollectionSnapshotData,
|
|
19
19
|
IGarbageCollectionState,
|
|
20
|
-
} from "./gcSummaryDefinitions";
|
|
20
|
+
} from "./gcSummaryDefinitions.js";
|
|
21
21
|
|
|
22
22
|
export function getGCVersion(metadata?: IGCMetadata): GCVersion {
|
|
23
23
|
if (!metadata) {
|
|
@@ -13,10 +13,10 @@ import {
|
|
|
13
13
|
ISummaryTreeWithStats,
|
|
14
14
|
} from "@fluidframework/runtime-definitions";
|
|
15
15
|
import { mergeStats, SummaryTreeBuilder } from "@fluidframework/runtime-utils";
|
|
16
|
-
import { IRefreshSummaryResult } from "../summary";
|
|
17
|
-
import { GCVersion, IGarbageCollectorConfigs, IGCStats } from "./gcDefinitions";
|
|
18
|
-
import { generateSortedGCState } from "./gcHelpers";
|
|
19
|
-
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions";
|
|
16
|
+
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
17
|
+
import { GCVersion, IGarbageCollectorConfigs, IGCStats } from "./gcDefinitions.js";
|
|
18
|
+
import { generateSortedGCState } from "./gcHelpers.js";
|
|
19
|
+
import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
|
|
20
20
|
|
|
21
21
|
export const gcStateBlobKey = `${gcBlobPrefix}_root`;
|
|
22
22
|
|
|
@@ -51,6 +51,18 @@ export class GCSummaryStateTracker {
|
|
|
51
51
|
// to unreferenced or vice-versa.
|
|
52
52
|
public updatedDSCountSinceLastSummary: number = 0;
|
|
53
53
|
|
|
54
|
+
/** API for ensuring the correct auto-recovery mitigations */
|
|
55
|
+
public autoRecovery = {
|
|
56
|
+
requestFullGCOnNextRun: () => {
|
|
57
|
+
this.fullGCModeForAutoRecovery = true;
|
|
58
|
+
},
|
|
59
|
+
fullGCRequested: () => {
|
|
60
|
+
return this.fullGCModeForAutoRecovery;
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
/** If true, the next GC run will do fullGC mode to regenerate the GC data for each node */
|
|
64
|
+
private fullGCModeForAutoRecovery: boolean = false;
|
|
65
|
+
|
|
54
66
|
constructor(
|
|
55
67
|
// Tells whether GC should run or not.
|
|
56
68
|
private readonly configs: Pick<
|
|
@@ -133,7 +145,6 @@ export class GCSummaryStateTracker {
|
|
|
133
145
|
* If none of the components changed, it returns a summary handle for the entire GC data.
|
|
134
146
|
*/
|
|
135
147
|
public summarize(
|
|
136
|
-
fullTree: boolean,
|
|
137
148
|
trackState: boolean,
|
|
138
149
|
gcState: IGarbageCollectionState,
|
|
139
150
|
deletedNodes: Set<string>,
|
|
@@ -167,7 +178,7 @@ export class GCSummaryStateTracker {
|
|
|
167
178
|
serializedDeletedNodes,
|
|
168
179
|
};
|
|
169
180
|
|
|
170
|
-
if (trackState &&
|
|
181
|
+
if (trackState && this.latestSummaryData !== undefined) {
|
|
171
182
|
// If nothing changed since last summary, send a summary handle for the entire GC data.
|
|
172
183
|
if (
|
|
173
184
|
this.latestSummaryData.serializedGCState === serializedGCState &&
|
|
@@ -267,7 +278,7 @@ export class GCSummaryStateTracker {
|
|
|
267
278
|
}
|
|
268
279
|
|
|
269
280
|
/**
|
|
270
|
-
* Called to refresh the latest summary state. This happens when
|
|
281
|
+
* Called to refresh the latest summary state. This happens when a pending summary is acked.
|
|
271
282
|
*/
|
|
272
283
|
public async refreshLatestSummary(result: IRefreshSummaryResult): Promise<void> {
|
|
273
284
|
if (!result.isSummaryTracked) {
|
|
@@ -287,6 +298,7 @@ export class GCSummaryStateTracker {
|
|
|
287
298
|
this.latestSummaryData = this.pendingSummaryData;
|
|
288
299
|
this.pendingSummaryData = undefined;
|
|
289
300
|
this.updatedDSCountSinceLastSummary = 0;
|
|
301
|
+
this.fullGCModeForAutoRecovery = false;
|
|
290
302
|
return;
|
|
291
303
|
}
|
|
292
304
|
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -3,16 +3,16 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ITelemetryGenericEvent } from "@fluidframework/core-interfaces";
|
|
7
6
|
import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
|
|
8
7
|
import {
|
|
9
8
|
generateStack,
|
|
10
9
|
ITelemetryLoggerExt,
|
|
11
10
|
MonitoringContext,
|
|
12
11
|
tagCodeArtifacts,
|
|
12
|
+
type ITelemetryGenericEventExt,
|
|
13
13
|
} from "@fluidframework/telemetry-utils";
|
|
14
|
-
import { RuntimeHeaderData } from "../containerRuntime";
|
|
15
|
-
import { ICreateContainerMetadata } from "../summary";
|
|
14
|
+
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
15
|
+
import { ICreateContainerMetadata } from "../summary/index.js";
|
|
16
16
|
import {
|
|
17
17
|
GCNodeType,
|
|
18
18
|
UnreferencedState,
|
|
@@ -22,8 +22,8 @@ import {
|
|
|
22
22
|
throwOnTombstoneLoadOverrideKey,
|
|
23
23
|
runSweepKey,
|
|
24
24
|
GCFeatureMatrix,
|
|
25
|
-
} from "./gcDefinitions";
|
|
26
|
-
import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker";
|
|
25
|
+
} from "./gcDefinitions.js";
|
|
26
|
+
import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
|
|
27
27
|
|
|
28
28
|
type NodeUsageType = "Changed" | "Loaded" | "Revived";
|
|
29
29
|
|
|
@@ -63,6 +63,7 @@ interface INodeUsageProps extends ICommonProps {
|
|
|
63
63
|
currentReferenceTimestampMs: number | undefined;
|
|
64
64
|
packagePath: readonly string[] | undefined;
|
|
65
65
|
fromId?: string;
|
|
66
|
+
autorecovery?: true;
|
|
66
67
|
}
|
|
67
68
|
|
|
68
69
|
/**
|
|
@@ -189,8 +190,6 @@ export class GCTelemetryTracker {
|
|
|
189
190
|
};
|
|
190
191
|
|
|
191
192
|
// If the node that is used is tombstoned, log a tombstone telemetry.
|
|
192
|
-
// Note that this is done before checking if "nodeStateTracker" is undefined below because unreferenced
|
|
193
|
-
// tracking may not have yet been enabled. That happens only after the client transitions to write mode.
|
|
194
193
|
if (nodeUsageProps.isTombstoned) {
|
|
195
194
|
this.logTombstoneUsageTelemetry(nodeUsageProps, unrefEventProps, nodeType, usageType);
|
|
196
195
|
}
|
|
@@ -344,7 +343,9 @@ export class GCTelemetryTracker {
|
|
|
344
343
|
}
|
|
345
344
|
|
|
346
345
|
if (missingExplicitRoutes.length > 0) {
|
|
347
|
-
|
|
346
|
+
// Send as Generic not Error since there are known corner cases where this will fire.
|
|
347
|
+
// E.g. If an old client re-references a node via an attach op (that doesn't include GC Data)
|
|
348
|
+
logger.sendTelemetryEvent({
|
|
348
349
|
eventName: "gcUnknownOutboundReferences",
|
|
349
350
|
...tagCodeArtifacts({
|
|
350
351
|
id: nodeId,
|
|
@@ -412,7 +413,7 @@ export class GCTelemetryTracker {
|
|
|
412
413
|
*/
|
|
413
414
|
export function sendGCUnexpectedUsageEvent(
|
|
414
415
|
mc: MonitoringContext,
|
|
415
|
-
event:
|
|
416
|
+
event: ITelemetryGenericEventExt & {
|
|
416
417
|
category: "error" | "generic";
|
|
417
418
|
gcTombstoneEnforcementAllowed: boolean | undefined;
|
|
418
419
|
},
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { assert, Timer } from "@fluidframework/core-utils";
|
|
7
7
|
import { validatePrecondition } from "@fluidframework/telemetry-utils";
|
|
8
|
-
import { UnreferencedState } from "./gcDefinitions";
|
|
8
|
+
import { UnreferencedState } from "./gcDefinitions.js";
|
|
9
9
|
|
|
10
10
|
/** A wrapper around common-utils Timer that requires the timeout when calling start/restart */
|
|
11
11
|
class TimerWithNoDefaultTimeout extends Timer {
|
|
@@ -25,6 +25,17 @@ class TimerWithNoDefaultTimeout extends Timer {
|
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
+
/** The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting */
|
|
29
|
+
export class UnreferencedStateTrackerMap extends Map<string, UnreferencedStateTracker> {
|
|
30
|
+
/** Delete the given key, and stop tracking if that node was actually unreferenced */
|
|
31
|
+
delete(key: string): boolean {
|
|
32
|
+
// Stop tracking so as to clear out any running timers.
|
|
33
|
+
this.get(key)?.stopTracking();
|
|
34
|
+
// Delete the node as we don't need to track it any more.
|
|
35
|
+
return super.delete(key);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
28
39
|
/**
|
|
29
40
|
* Helper class that tracks the state of an unreferenced node such as the time it was unreferenced and if it can
|
|
30
41
|
* be tombstoned or deleted by the sweep phase.
|
package/src/gc/index.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export { GarbageCollector } from "./garbageCollection";
|
|
6
|
+
export { GarbageCollector } from "./garbageCollection.js";
|
|
7
7
|
export {
|
|
8
8
|
nextGCVersion,
|
|
9
9
|
defaultInactiveTimeoutMs,
|
|
@@ -11,6 +11,7 @@ export {
|
|
|
11
11
|
defaultSessionExpiryDurationMs,
|
|
12
12
|
GCNodeType,
|
|
13
13
|
gcTestModeKey,
|
|
14
|
+
gcDisableDataStoreSweepOptionName,
|
|
14
15
|
gcDisableThrowOnTombstoneLoadOptionName,
|
|
15
16
|
gcGenerationOptionName,
|
|
16
17
|
GCFeatureMatrix,
|
|
@@ -32,31 +33,32 @@ export {
|
|
|
32
33
|
runSessionExpiryKey,
|
|
33
34
|
runSweepKey,
|
|
34
35
|
stableGCVersion,
|
|
35
|
-
|
|
36
|
+
disableAutoRecoveryKey,
|
|
36
37
|
disableDatastoreSweepKey,
|
|
37
38
|
detectOutboundRoutesViaDDSKey,
|
|
38
39
|
UnreferencedState,
|
|
39
40
|
throwOnTombstoneLoadOverrideKey,
|
|
40
41
|
GarbageCollectionMessage,
|
|
42
|
+
GarbageCollectionMessageType,
|
|
41
43
|
ISweepMessage,
|
|
42
|
-
} from "./gcDefinitions";
|
|
44
|
+
} from "./gcDefinitions.js";
|
|
43
45
|
export {
|
|
44
46
|
cloneGCData,
|
|
45
47
|
concatGarbageCollectionStates,
|
|
46
48
|
trimLeadingAndTrailingSlashes,
|
|
47
49
|
unpackChildNodesGCDetails,
|
|
48
|
-
} from "./gcHelpers";
|
|
49
|
-
export { runGarbageCollection } from "./gcReferenceGraphAlgorithm";
|
|
50
|
+
} from "./gcHelpers.js";
|
|
51
|
+
export { runGarbageCollection } from "./gcReferenceGraphAlgorithm.js";
|
|
50
52
|
export {
|
|
51
53
|
IGarbageCollectionNodeData,
|
|
52
54
|
IGarbageCollectionSnapshotData,
|
|
53
55
|
IGarbageCollectionState,
|
|
54
56
|
IGarbageCollectionSummaryDetailsLegacy,
|
|
55
|
-
} from "./gcSummaryDefinitions";
|
|
57
|
+
} from "./gcSummaryDefinitions.js";
|
|
56
58
|
export {
|
|
57
59
|
gcStateBlobKey,
|
|
58
60
|
GCSummaryStateTracker,
|
|
59
61
|
IGCSummaryTrackingData,
|
|
60
|
-
} from "./gcSummaryStateTracker";
|
|
61
|
-
export { GCTelemetryTracker, sendGCUnexpectedUsageEvent } from "./gcTelemetry";
|
|
62
|
-
export { UnreferencedStateTracker } from "./gcUnreferencedStateTracker";
|
|
62
|
+
} from "./gcSummaryStateTracker.js";
|
|
63
|
+
export { GCTelemetryTracker, sendGCUnexpectedUsageEvent } from "./gcTelemetry.js";
|
|
64
|
+
export { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
|
package/src/index.ts
CHANGED
|
@@ -14,25 +14,31 @@ export {
|
|
|
14
14
|
RuntimeMessage,
|
|
15
15
|
agentSchedulerId,
|
|
16
16
|
ContainerRuntime,
|
|
17
|
-
RuntimeHeaders,
|
|
18
|
-
AllowTombstoneRequestHeaderKey,
|
|
19
|
-
AllowInactiveRequestHeaderKey,
|
|
20
17
|
TombstoneResponseHeaderKey,
|
|
21
18
|
InactiveResponseHeaderKey,
|
|
22
19
|
ISummaryConfiguration,
|
|
23
20
|
DefaultSummaryConfiguration,
|
|
24
21
|
ICompressionRuntimeOptions,
|
|
25
22
|
CompressionAlgorithms,
|
|
26
|
-
|
|
23
|
+
RuntimeHeaderData,
|
|
24
|
+
} from "./containerRuntime.js";
|
|
27
25
|
export {
|
|
28
26
|
ContainerMessageType,
|
|
29
27
|
ContainerRuntimeMessage,
|
|
30
28
|
IContainerRuntimeMessageCompatDetails,
|
|
31
29
|
CompatModeBehavior,
|
|
32
30
|
RecentlyAddedContainerRuntimeMessageDetails,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export {
|
|
31
|
+
UnknownContainerRuntimeMessage,
|
|
32
|
+
} from "./messageTypes.js";
|
|
33
|
+
export { IBlobManagerLoadInfo } from "./blobManager.js";
|
|
34
|
+
export { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
|
|
35
|
+
export {
|
|
36
|
+
detectOutboundReferences,
|
|
37
|
+
RuntimeHeaders,
|
|
38
|
+
ChannelCollectionFactory,
|
|
39
|
+
AllowTombstoneRequestHeaderKey,
|
|
40
|
+
AllowInactiveRequestHeaderKey,
|
|
41
|
+
} from "./channelCollection.js";
|
|
36
42
|
export {
|
|
37
43
|
GCNodeType,
|
|
38
44
|
IGCMetadata,
|
|
@@ -42,7 +48,7 @@ export {
|
|
|
42
48
|
IMarkPhaseStats,
|
|
43
49
|
ISweepPhaseStats,
|
|
44
50
|
IGCStats,
|
|
45
|
-
} from "./gc";
|
|
51
|
+
} from "./gc/index.js";
|
|
46
52
|
export {
|
|
47
53
|
IAckedSummary,
|
|
48
54
|
ISummarizer,
|
|
@@ -91,22 +97,19 @@ export {
|
|
|
91
97
|
SummaryStage,
|
|
92
98
|
IRetriableFailureResult,
|
|
93
99
|
ISummarizeEventProps,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
// Will be removed in the future.
|
|
100
|
+
IdCompressorMode,
|
|
101
|
+
} from "./summary/index.js";
|
|
102
|
+
export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.js";
|
|
103
|
+
export { ChannelCollection } from "./channelCollection.js";
|
|
99
104
|
export {
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
isStableId,
|
|
112
|
-
} from "@fluidframework/id-compressor";
|
|
105
|
+
IFluidDataStoreContextInternal,
|
|
106
|
+
ISnapshotDetails,
|
|
107
|
+
LocalFluidDataStoreContext,
|
|
108
|
+
LocalFluidDataStoreContextBase,
|
|
109
|
+
FluidDataStoreContext,
|
|
110
|
+
IFluidDataStoreContextProps,
|
|
111
|
+
ILocalFluidDataStoreContextProps,
|
|
112
|
+
ILocalDetachedFluidDataStoreContextProps,
|
|
113
|
+
IFluidDataStoreContextEvents,
|
|
114
|
+
} from "./dataStoreContext.js";
|
|
115
|
+
export { DataStoreContexts } from "./dataStoreContexts.js";
|
package/src/messageTypes.ts
CHANGED
|
@@ -10,9 +10,9 @@ import {
|
|
|
10
10
|
IAttachMessage,
|
|
11
11
|
} from "@fluidframework/runtime-definitions";
|
|
12
12
|
import type { IdCreationRange } from "@fluidframework/id-compressor";
|
|
13
|
-
import { IDataStoreAliasMessage } from "./dataStore";
|
|
14
|
-
import { GarbageCollectionMessage } from "./gc";
|
|
15
|
-
import { IChunkedOp } from "./opLifecycle";
|
|
13
|
+
import { IDataStoreAliasMessage } from "./dataStore.js";
|
|
14
|
+
import { GarbageCollectionMessage } from "./gc/index.js";
|
|
15
|
+
import { IChunkedOp } from "./opLifecycle/index.js";
|
|
16
16
|
|
|
17
17
|
/**
|
|
18
18
|
* @alpha
|
|
@@ -133,7 +133,7 @@ export type ContainerRuntimeGCMessage = TypedContainerRuntimeMessage<
|
|
|
133
133
|
>;
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
|
-
* Represents an unrecognized
|
|
136
|
+
* Represents an unrecognized TypedContainerRuntimeMessage, e.g. a message from a future version of the container runtime.
|
|
137
137
|
* @internal
|
|
138
138
|
*/
|
|
139
139
|
export interface UnknownContainerRuntimeMessage
|
|
@@ -65,8 +65,6 @@ Compression is relevant for both `FlushMode.TurnBased` and `FlushMode.Immediate`
|
|
|
65
65
|
|
|
66
66
|
## Grouped batching
|
|
67
67
|
|
|
68
|
-
**Note: This feature is currently considered experimental and is not ready for production usage.**
|
|
69
|
-
|
|
70
68
|
The `IContainerRuntimeOptions.enableGroupedBatching` option has been added to the container runtime layer and is **off by default**. This option will group all batch messages under a new "grouped" message to be sent to the service. Upon receiving this new "grouped" message, the batch messages will be extracted and given the sequence number of the parent "grouped" message.
|
|
71
69
|
|
|
72
70
|
The purpose for enabling grouped batching on top of compression is that regular compression won't include the empty messages in the chunks. Thus, if we have batches with many messages (i.e. more than 4k), we will go over the batch size limit just on empty op envelopes alone.
|
|
@@ -75,7 +73,7 @@ See [below](#how-grouped-batching-works) for an example.
|
|
|
75
73
|
|
|
76
74
|
### Risks
|
|
77
75
|
|
|
78
|
-
This option
|
|
76
|
+
This option should **ONLY** be enabled after observing that 99.9% of your application sessions contains these changes (runtime version "2.0.0-internal.7.0.0" or later). Containers created with this option may not open in future versions of the framework.
|
|
79
77
|
|
|
80
78
|
This option will change a couple of expectations around message structure and runtime layer expectations. Only enable this option after testing
|
|
81
79
|
and verifying that the following expectation changes won't have any effects:
|
|
@@ -91,7 +89,7 @@ Therefore, when grouped batching is enabled, all batches with reentrant ops are
|
|
|
91
89
|
|
|
92
90
|
### How to enable
|
|
93
91
|
|
|
94
|
-
**This feature is disabled by default
|
|
92
|
+
**This feature is disabled by default**
|
|
95
93
|
|
|
96
94
|
If all prerequisites in the previous section are met, enabling the feature can be done via the `IContainerRuntimeOptions` as following:
|
|
97
95
|
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ICompressionRuntimeOptions } from "../containerRuntime";
|
|
7
|
-
import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
|
|
6
|
+
import { ICompressionRuntimeOptions } from "../containerRuntime.js";
|
|
7
|
+
import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions.js";
|
|
8
8
|
|
|
9
9
|
export interface IBatchManagerOptions {
|
|
10
10
|
readonly hardLimit: number;
|
|
@@ -5,8 +5,8 @@
|
|
|
5
5
|
|
|
6
6
|
import { IBatchMessage } from "@fluidframework/container-definitions";
|
|
7
7
|
import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
|
|
8
|
-
import { CompressionAlgorithms } from "../containerRuntime";
|
|
9
|
-
import { ContainerMessageType } from "../messageTypes";
|
|
8
|
+
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
9
|
+
import { ContainerMessageType } from "../messageTypes.js";
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Batch message type used internally by the runtime
|
package/src/opLifecycle/index.ts
CHANGED
|
@@ -3,17 +3,17 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager";
|
|
6
|
+
export { BatchManager, estimateSocketSize, BatchSequenceNumbers } from "./batchManager.js";
|
|
7
7
|
export {
|
|
8
8
|
BatchMessage,
|
|
9
9
|
IBatch,
|
|
10
10
|
IBatchCheckpoint,
|
|
11
11
|
IChunkedOp,
|
|
12
12
|
IMessageProcessingResult,
|
|
13
|
-
} from "./definitions";
|
|
14
|
-
export { Outbox, getLongStack } from "./outbox";
|
|
15
|
-
export { OpCompressor } from "./opCompressor";
|
|
16
|
-
export { OpDecompressor } from "./opDecompressor";
|
|
17
|
-
export { OpSplitter, splitOp } from "./opSplitter";
|
|
18
|
-
export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor";
|
|
19
|
-
export { OpGroupingManager } from "./opGroupingManager";
|
|
13
|
+
} from "./definitions.js";
|
|
14
|
+
export { Outbox, getLongStack } from "./outbox.js";
|
|
15
|
+
export { OpCompressor } from "./opCompressor.js";
|
|
16
|
+
export { OpDecompressor } from "./opDecompressor.js";
|
|
17
|
+
export { OpSplitter, splitOp } from "./opSplitter.js";
|
|
18
|
+
export { RemoteMessageProcessor, unpackRuntimeMessage } from "./remoteMessageProcessor.js";
|
|
19
|
+
export { OpGroupingManager } from "./opGroupingManager.js";
|
|
@@ -8,9 +8,9 @@ import { assert } from "@fluidframework/core-utils";
|
|
|
8
8
|
import { IsoBuffer } from "@fluid-internal/client-utils";
|
|
9
9
|
import { compress } from "lz4js";
|
|
10
10
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
11
|
-
import { CompressionAlgorithms } from "../containerRuntime";
|
|
12
|
-
import { estimateSocketSize } from "./batchManager";
|
|
13
|
-
import { IBatch, BatchMessage } from "./definitions";
|
|
11
|
+
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
12
|
+
import { estimateSocketSize } from "./batchManager.js";
|
|
13
|
+
import { IBatch, BatchMessage } from "./definitions.js";
|
|
14
14
|
|
|
15
15
|
/**
|
|
16
16
|
* Compresses batches of ops. It generates a single compressed op that contains
|
|
@@ -9,9 +9,9 @@ import { assert } from "@fluidframework/core-utils";
|
|
|
9
9
|
import { IsoBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
|
|
10
10
|
import { createChildLogger } from "@fluidframework/telemetry-utils";
|
|
11
11
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
12
|
-
import { CompressionAlgorithms } from "../containerRuntime";
|
|
13
|
-
import { IBatchMetadata } from "../metadata";
|
|
14
|
-
import { IMessageProcessingResult } from "./definitions";
|
|
12
|
+
import { CompressionAlgorithms } from "../containerRuntime.js";
|
|
13
|
+
import { IBatchMetadata } from "../metadata.js";
|
|
14
|
+
import { IMessageProcessingResult } from "./definitions.js";
|
|
15
15
|
|
|
16
16
|
/**
|
|
17
17
|
* Compression makes assumptions about the shape of message contents. This interface codifies those assumptions, but does not validate them.
|