@fluidframework/container-runtime 2.0.0-rc.1.0.3 → 2.0.0-rc.2.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/{.eslintrc.js → .eslintrc.cjs} +5 -5
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +45 -0
- 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 +68 -30
- 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.js.map +1 -1
- package/dist/channelCollection.d.ts +223 -0
- package/dist/channelCollection.d.ts.map +1 -0
- package/dist/{dataStores.js → channelCollection.js} +399 -83
- 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 +98 -40
- package/dist/container-runtime-beta.d.ts +27 -9
- package/dist/container-runtime-public.d.ts +27 -9
- package/dist/container-runtime-untrimmed.d.ts +123 -40
- 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 +79 -55
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +541 -411
- 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 +71 -30
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +182 -141
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- 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 +22 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +134 -75
- 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 +21 -21
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +29 -6
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +5 -1
- 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 +8 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -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 -1
- package/lib/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.mjs → blobManager.js} +1 -1
- package/lib/blobManager.js.map +1 -0
- package/lib/channelCollection.d.ts +223 -0
- package/lib/channelCollection.d.ts.map +1 -0
- package/lib/{dataStores.mjs → channelCollection.js} +384 -71
- 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} +98 -40
- package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
- package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
- package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +123 -40
- 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} +84 -56
- package/lib/containerRuntime.d.ts.map +1 -0
- package/lib/{containerRuntime.mjs → containerRuntime.js} +460 -332
- 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} +72 -31
- package/lib/dataStoreContext.d.ts.map +1 -0
- package/lib/{dataStoreContext.mjs → dataStoreContext.js} +174 -133
- package/lib/dataStoreContext.js.map +1 -0
- package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
- package/lib/dataStoreContexts.d.ts.map +1 -0
- package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -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} +23 -6
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +103 -44
- 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} +3 -3
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +30 -7
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +5 -1
- 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.mts → index.d.ts} +9 -9
- 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} +9 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -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 +141 -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 +801 -0
- package/lib/test/dataStoreContext.spec.js.map +1 -0
- package/lib/test/dataStoreCreation.spec.js +312 -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 +1465 -0
- package/lib/test/gc/garbageCollection.spec.js.map +1 -0
- package/lib/test/gc/gcConfigs.spec.js +690 -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 +391 -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 +99 -88
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -1
- package/src/{dataStores.ts → channelCollection.ts} +520 -84
- package/src/connectionTelemetry.ts +42 -3
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +661 -464
- package/src/dataStore.ts +13 -15
- package/src/dataStoreContext.ts +257 -184
- package/src/dataStoreContexts.ts +1 -1
- package/src/deltaManagerSummarizerProxy.ts +132 -7
- package/src/gc/garbageCollection.ts +121 -46
- package/src/gc/gcConfigs.ts +3 -3
- package/src/gc/gcDefinitions.ts +30 -7
- 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 +10 -8
- package/src/index.ts +16 -27
- 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.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
|
@@ -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,
|
|
@@ -33,30 +33,32 @@ export {
|
|
|
33
33
|
runSessionExpiryKey,
|
|
34
34
|
runSweepKey,
|
|
35
35
|
stableGCVersion,
|
|
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,30 @@ 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
|
-
} from "./containerRuntime";
|
|
23
|
+
} from "./containerRuntime.js";
|
|
27
24
|
export {
|
|
28
25
|
ContainerMessageType,
|
|
29
26
|
ContainerRuntimeMessage,
|
|
30
27
|
IContainerRuntimeMessageCompatDetails,
|
|
31
28
|
CompatModeBehavior,
|
|
32
29
|
RecentlyAddedContainerRuntimeMessageDetails,
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
export {
|
|
30
|
+
UnknownContainerRuntimeMessage,
|
|
31
|
+
} from "./messageTypes.js";
|
|
32
|
+
export { IBlobManagerLoadInfo } from "./blobManager.js";
|
|
33
|
+
export { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
|
|
34
|
+
export {
|
|
35
|
+
detectOutboundReferences,
|
|
36
|
+
RuntimeHeaders,
|
|
37
|
+
ChannelCollectionFactory,
|
|
38
|
+
AllowTombstoneRequestHeaderKey,
|
|
39
|
+
AllowInactiveRequestHeaderKey,
|
|
40
|
+
} from "./channelCollection.js";
|
|
36
41
|
export {
|
|
37
42
|
GCNodeType,
|
|
38
43
|
IGCMetadata,
|
|
@@ -42,7 +47,7 @@ export {
|
|
|
42
47
|
IMarkPhaseStats,
|
|
43
48
|
ISweepPhaseStats,
|
|
44
49
|
IGCStats,
|
|
45
|
-
} from "./gc";
|
|
50
|
+
} from "./gc/index.js";
|
|
46
51
|
export {
|
|
47
52
|
IAckedSummary,
|
|
48
53
|
ISummarizer,
|
|
@@ -91,22 +96,6 @@ export {
|
|
|
91
96
|
SummaryStage,
|
|
92
97
|
IRetriableFailureResult,
|
|
93
98
|
ISummarizeEventProps,
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
// Re-exports for backwards compatibility.
|
|
98
|
-
// Will be removed in the future.
|
|
99
|
-
export {
|
|
100
|
-
/**
|
|
101
|
-
* @deprecated Import from `@fluidframework/id-compressor` instead.
|
|
102
|
-
*/
|
|
103
|
-
assertIsStableId,
|
|
104
|
-
/**
|
|
105
|
-
* @deprecated Import from `@fluidframework/id-compressor` instead.
|
|
106
|
-
*/
|
|
107
|
-
generateStableId,
|
|
108
|
-
/**
|
|
109
|
-
* @deprecated Import from `@fluidframework/id-compressor` instead.
|
|
110
|
-
*/
|
|
111
|
-
isStableId,
|
|
112
|
-
} from "@fluidframework/id-compressor";
|
|
99
|
+
IdCompressorMode,
|
|
100
|
+
} from "./summary/index.js";
|
|
101
|
+
export { IChunkedOp, unpackRuntimeMessage } from "./opLifecycle/index.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.
|
|
@@ -7,8 +7,8 @@ import { assert } from "@fluidframework/core-utils";
|
|
|
7
7
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
8
8
|
import { createChildLogger } from "@fluidframework/telemetry-utils";
|
|
9
9
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
10
|
-
import { ContainerMessageType } from "../messageTypes";
|
|
11
|
-
import { IBatch } from "./definitions";
|
|
10
|
+
import { ContainerMessageType } from "../messageTypes.js";
|
|
11
|
+
import { IBatch } from "./definitions.js";
|
|
12
12
|
|
|
13
13
|
/**
|
|
14
14
|
* Grouping makes assumptions about the shape of message contents. This interface codifies those assumptions, but does not validate them.
|
|
@@ -96,21 +96,12 @@ export class OpGroupingManager {
|
|
|
96
96
|
}
|
|
97
97
|
|
|
98
98
|
public ungroupOp(op: ISequencedDocumentMessage): ISequencedDocumentMessage[] {
|
|
99
|
-
let fakeCsn = 1;
|
|
100
99
|
if (!isGroupContents(op.contents)) {
|
|
101
|
-
// Align the worlds of what clientSequenceNumber represents when grouped batching is enabled
|
|
102
|
-
if (this.config.groupedBatchingEnabled) {
|
|
103
|
-
return [
|
|
104
|
-
{
|
|
105
|
-
...op,
|
|
106
|
-
clientSequenceNumber: fakeCsn,
|
|
107
|
-
},
|
|
108
|
-
];
|
|
109
|
-
}
|
|
110
100
|
return [op];
|
|
111
101
|
}
|
|
112
102
|
|
|
113
103
|
const messages = op.contents.contents;
|
|
104
|
+
let fakeCsn = 1;
|
|
114
105
|
return messages.map((subMessage) => ({
|
|
115
106
|
...op,
|
|
116
107
|
clientSequenceNumber: fakeCsn++,
|
|
@@ -12,9 +12,9 @@ import { assert } from "@fluidframework/core-utils";
|
|
|
12
12
|
import { IBatchMessage } from "@fluidframework/container-definitions";
|
|
13
13
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
14
14
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
15
|
-
import { ContainerMessageType, ContainerRuntimeChunkedOpMessage } from "../messageTypes";
|
|
16
|
-
import { estimateSocketSize } from "./batchManager";
|
|
17
|
-
import { BatchMessage, IBatch, IChunkedOp, IMessageProcessingResult } from "./definitions";
|
|
15
|
+
import { ContainerMessageType, ContainerRuntimeChunkedOpMessage } from "../messageTypes.js";
|
|
16
|
+
import { estimateSocketSize } from "./batchManager.js";
|
|
17
|
+
import { BatchMessage, IBatch, IChunkedOp, IMessageProcessingResult } from "./definitions.js";
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Responsible for creating and reconstructing chunked messages.
|
|
@@ -12,18 +12,19 @@ import {
|
|
|
12
12
|
import { assert } from "@fluidframework/core-utils";
|
|
13
13
|
import { IBatchMessage, ICriticalContainerError } from "@fluidframework/container-definitions";
|
|
14
14
|
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
15
|
-
import { ICompressionRuntimeOptions } from "../containerRuntime";
|
|
16
|
-
import { IPendingBatchMessage, PendingStateManager } from "../pendingStateManager";
|
|
15
|
+
import { ICompressionRuntimeOptions } from "../containerRuntime.js";
|
|
16
|
+
import { IPendingBatchMessage, PendingStateManager } from "../pendingStateManager.js";
|
|
17
|
+
import { ContainerMessageType } from "../messageTypes.js";
|
|
17
18
|
import {
|
|
18
19
|
BatchManager,
|
|
19
20
|
BatchSequenceNumbers,
|
|
20
21
|
estimateSocketSize,
|
|
21
22
|
sequenceNumbersMatch,
|
|
22
|
-
} from "./batchManager";
|
|
23
|
-
import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
|
|
24
|
-
import { OpCompressor } from "./opCompressor";
|
|
25
|
-
import { OpGroupingManager } from "./opGroupingManager";
|
|
26
|
-
import { OpSplitter } from "./opSplitter";
|
|
23
|
+
} from "./batchManager.js";
|
|
24
|
+
import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions.js";
|
|
25
|
+
import { OpCompressor } from "./opCompressor.js";
|
|
26
|
+
import { OpGroupingManager } from "./opGroupingManager.js";
|
|
27
|
+
import { OpSplitter } from "./opSplitter.js";
|
|
27
28
|
|
|
28
29
|
export interface IOutboxConfig {
|
|
29
30
|
readonly compressionOptions: ICompressionRuntimeOptions;
|
|
@@ -136,10 +137,12 @@ export class Outbox {
|
|
|
136
137
|
const mainBatchSeqNums = this.mainBatch.sequenceNumbers;
|
|
137
138
|
const attachFlowBatchSeqNums = this.attachFlowBatch.sequenceNumbers;
|
|
138
139
|
const blobAttachSeqNums = this.blobAttachBatch.sequenceNumbers;
|
|
140
|
+
const idAllocSeqNums = this.idAllocationBatch.sequenceNumbers;
|
|
139
141
|
assert(
|
|
140
142
|
this.params.config.disablePartialFlush ||
|
|
141
143
|
(sequenceNumbersMatch(mainBatchSeqNums, attachFlowBatchSeqNums) &&
|
|
142
|
-
sequenceNumbersMatch(mainBatchSeqNums, blobAttachSeqNums)
|
|
144
|
+
sequenceNumbersMatch(mainBatchSeqNums, blobAttachSeqNums) &&
|
|
145
|
+
sequenceNumbersMatch(mainBatchSeqNums, idAllocSeqNums)),
|
|
143
146
|
0x58d /* Reference sequence numbers from both batches must be in sync */,
|
|
144
147
|
);
|
|
145
148
|
|
|
@@ -148,7 +151,8 @@ export class Outbox {
|
|
|
148
151
|
if (
|
|
149
152
|
sequenceNumbersMatch(mainBatchSeqNums, currentSequenceNumbers) &&
|
|
150
153
|
sequenceNumbersMatch(attachFlowBatchSeqNums, currentSequenceNumbers) &&
|
|
151
|
-
sequenceNumbersMatch(blobAttachSeqNums, currentSequenceNumbers)
|
|
154
|
+
sequenceNumbersMatch(blobAttachSeqNums, currentSequenceNumbers) &&
|
|
155
|
+
sequenceNumbersMatch(idAllocSeqNums, currentSequenceNumbers)
|
|
152
156
|
) {
|
|
153
157
|
// The reference sequence numbers are stable, there is nothing to do
|
|
154
158
|
return;
|
|
@@ -178,12 +182,20 @@ export class Outbox {
|
|
|
178
182
|
}
|
|
179
183
|
|
|
180
184
|
public submit(message: BatchMessage) {
|
|
185
|
+
assert(
|
|
186
|
+
message.type !== ContainerMessageType.IdAllocation,
|
|
187
|
+
0x8f8 /* Allocation message submitted to mainBatch. */,
|
|
188
|
+
);
|
|
181
189
|
this.maybeFlushPartialBatch();
|
|
182
190
|
|
|
183
191
|
this.addMessageToBatchManager(this.mainBatch, message);
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
public submitAttach(message: BatchMessage) {
|
|
195
|
+
assert(
|
|
196
|
+
message.type === ContainerMessageType.Attach,
|
|
197
|
+
0x8f9 /* Non attach message submitted to attachFlowBatch. */,
|
|
198
|
+
);
|
|
187
199
|
this.maybeFlushPartialBatch();
|
|
188
200
|
|
|
189
201
|
if (
|
|
@@ -215,6 +227,10 @@ export class Outbox {
|
|
|
215
227
|
}
|
|
216
228
|
|
|
217
229
|
public submitBlobAttach(message: BatchMessage) {
|
|
230
|
+
assert(
|
|
231
|
+
message.type === ContainerMessageType.BlobAttach,
|
|
232
|
+
0x8fa /* Non blobAttach message submitted to blobAttachBatch. */,
|
|
233
|
+
);
|
|
218
234
|
this.maybeFlushPartialBatch();
|
|
219
235
|
|
|
220
236
|
this.addMessageToBatchManager(this.blobAttachBatch, message);
|
|
@@ -233,6 +249,10 @@ export class Outbox {
|
|
|
233
249
|
}
|
|
234
250
|
|
|
235
251
|
public submitIdAllocation(message: BatchMessage) {
|
|
252
|
+
assert(
|
|
253
|
+
message.type === ContainerMessageType.IdAllocation,
|
|
254
|
+
0x8fb /* Non allocation message submitted to idAllocationBatch. */,
|
|
255
|
+
);
|
|
236
256
|
this.maybeFlushPartialBatch();
|
|
237
257
|
|
|
238
258
|
if (
|
|
@@ -10,10 +10,10 @@ import {
|
|
|
10
10
|
type InboundSequencedContainerRuntimeMessage,
|
|
11
11
|
type InboundSequencedContainerRuntimeMessageOrSystemMessage,
|
|
12
12
|
type InboundSequencedRecentlyAddedContainerRuntimeMessage,
|
|
13
|
-
} from "../messageTypes";
|
|
14
|
-
import { OpDecompressor } from "./opDecompressor";
|
|
15
|
-
import { OpGroupingManager } from "./opGroupingManager";
|
|
16
|
-
import { OpSplitter } from "./opSplitter";
|
|
13
|
+
} from "../messageTypes.js";
|
|
14
|
+
import { OpDecompressor } from "./opDecompressor.js";
|
|
15
|
+
import { OpGroupingManager } from "./opGroupingManager.js";
|
|
16
|
+
import { OpSplitter } from "./opSplitter.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* Stateful class for processing incoming remote messages as the virtualization measures are unwrapped,
|
package/src/packageVersion.ts
CHANGED
|
@@ -11,9 +11,9 @@ import { ICriticalContainerError } from "@fluidframework/container-definitions";
|
|
|
11
11
|
import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
|
|
12
12
|
import { DataProcessingError, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
13
13
|
|
|
14
|
-
import { InboundSequencedContainerRuntimeMessage } from "./messageTypes";
|
|
15
|
-
import { pkgVersion } from "./packageVersion";
|
|
16
|
-
import { IBatchMetadata } from "./metadata";
|
|
14
|
+
import { InboundSequencedContainerRuntimeMessage } from "./messageTypes.js";
|
|
15
|
+
import { pkgVersion } from "./packageVersion.js";
|
|
16
|
+
import { IBatchMetadata } from "./metadata.js";
|
|
17
17
|
|
|
18
18
|
/**
|
|
19
19
|
* This represents a message that has been submitted and is added to the pending queue when `submit` is called on the
|
|
@@ -48,6 +48,7 @@ export interface IRuntimeStateHandler {
|
|
|
48
48
|
reSubmit(message: IPendingBatchMessage): void;
|
|
49
49
|
reSubmitBatch(batch: IPendingBatchMessage[]): void;
|
|
50
50
|
isActiveConnection: () => boolean;
|
|
51
|
+
isAttached: () => boolean;
|
|
51
52
|
}
|
|
52
53
|
|
|
53
54
|
/** Union of keys of T */
|
|
@@ -182,28 +183,33 @@ export class PendingStateManager implements IDisposable {
|
|
|
182
183
|
public async applyStashedOpsAt(seqNum?: number) {
|
|
183
184
|
// apply stashed ops at sequence number
|
|
184
185
|
while (!this.initialMessages.isEmpty()) {
|
|
185
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
186
|
-
const nextMessage = this.initialMessages.peekFront()!;
|
|
187
186
|
if (seqNum !== undefined) {
|
|
188
|
-
|
|
187
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
188
|
+
const peekMessage = this.initialMessages.peekFront()!;
|
|
189
|
+
if (peekMessage.referenceSequenceNumber > seqNum) {
|
|
189
190
|
break; // nothing left to do at this sequence number
|
|
190
191
|
}
|
|
191
|
-
if (
|
|
192
|
+
if (peekMessage.referenceSequenceNumber < seqNum) {
|
|
192
193
|
throw new Error("loaded from snapshot too recent to apply stashed ops");
|
|
193
194
|
}
|
|
194
195
|
}
|
|
195
|
-
|
|
196
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
197
|
+
const nextMessage = this.initialMessages.shift()!;
|
|
196
198
|
try {
|
|
197
199
|
// applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it
|
|
198
200
|
const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);
|
|
199
|
-
|
|
201
|
+
if (!this.stateHandler.isAttached()) {
|
|
202
|
+
if (localOpMetadata !== undefined) {
|
|
203
|
+
throw new Error("Local Op Metadata must be undefined when not attached");
|
|
204
|
+
}
|
|
205
|
+
} else {
|
|
206
|
+
nextMessage.localOpMetadata = localOpMetadata;
|
|
207
|
+
// then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
|
|
208
|
+
this.pendingMessages.push(nextMessage);
|
|
209
|
+
}
|
|
200
210
|
} catch (error) {
|
|
201
211
|
throw DataProcessingError.wrapIfUnrecognized(error, "applyStashedOp", nextMessage);
|
|
202
212
|
}
|
|
203
|
-
|
|
204
|
-
// then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
|
|
205
|
-
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
206
|
-
this.pendingMessages.push(this.initialMessages.shift()!);
|
|
207
213
|
}
|
|
208
214
|
}
|
|
209
215
|
|