@fluidframework/container-runtime 2.13.0 → 2.20.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.cjs +36 -0
- package/CHANGELOG.md +46 -0
- package/api-report/container-runtime.legacy.alpha.api.md +9 -203
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager/blobManager.d.ts +5 -1
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +16 -2
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
- package/dist/channelCollection.d.ts +23 -12
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +22 -12
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +6 -2
- package/dist/connectionTelemetry.js.map +1 -1
- 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 +74 -65
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +53 -37
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +7 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +2 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +41 -25
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +31 -18
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +6 -2
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js +6 -2
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.d.ts +1 -1
- package/dist/dataStoreRegistry.d.ts.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +1 -17
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +9 -6
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +95 -89
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +21 -7
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +12 -5
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +11 -0
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +3 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +210 -70
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +39 -13
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +6 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +6 -2
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +18 -6
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +33 -11
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +6 -2
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +27 -9
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -0
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +3 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/inboundBatchAggregator.d.ts +34 -0
- package/dist/inboundBatchAggregator.d.ts.map +1 -0
- package/dist/inboundBatchAggregator.js +185 -0
- package/dist/inboundBatchAggregator.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +0 -4
- package/dist/messageTypes.d.ts +14 -5
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/metadata.d.ts +12 -4
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +6 -2
- package/dist/metadata.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +9 -3
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +3 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/dist/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/dist/opLifecycle/duplicateBatchDetector.js +9 -3
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +3 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +12 -7
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +0 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +5 -4
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +2 -0
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +1 -1
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +6 -1
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/package.json +2 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +19 -7
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +13 -5
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -0
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +1 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +93 -31
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +15 -5
- package/dist/summary/orderedClientElection.js.map +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 +17 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +12 -4
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +9 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +9 -3
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +6 -2
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js +12 -4
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +24 -8
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +15 -5
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +246 -135
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +1 -2
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +24 -8
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +9 -3
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +3 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +8 -4
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +12 -4
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.d.ts +26 -10
- package/dist/throttler.d.ts.map +1 -1
- package/dist/throttler.js +12 -4
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +5 -1
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +16 -2
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
- package/lib/channelCollection.d.ts +23 -12
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +22 -12
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +6 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +1 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +74 -65
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +53 -37
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts +7 -3
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +2 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +41 -25
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +31 -18
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +6 -2
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +6 -2
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.d.ts +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +1 -17
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +9 -6
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +95 -89
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +21 -7
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +12 -5
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +11 -0
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +2 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +210 -70
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +39 -13
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +6 -2
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +6 -2
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +18 -6
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +33 -11
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +6 -2
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts +42 -13
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +27 -9
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -0
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -0
- package/lib/gc/index.js.map +1 -1
- package/lib/inboundBatchAggregator.d.ts +34 -0
- package/lib/inboundBatchAggregator.d.ts.map +1 -0
- package/lib/inboundBatchAggregator.js +181 -0
- package/lib/inboundBatchAggregator.js.map +1 -0
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +0 -4
- package/lib/messageTypes.d.ts +14 -5
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/metadata.d.ts +12 -4
- package/lib/metadata.d.ts.map +1 -1
- package/lib/metadata.js +6 -2
- package/lib/metadata.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +9 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +3 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.d.ts +9 -3
- package/lib/opLifecycle/duplicateBatchDetector.d.ts.map +1 -1
- package/lib/opLifecycle/duplicateBatchDetector.js +9 -3
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +1 -1
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +3 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +13 -8
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +0 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +6 -5
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +2 -0
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +1 -1
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +6 -1
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +9 -3
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +19 -7
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +13 -5
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -0
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +1 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +93 -31
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +15 -5
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +17 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +12 -4
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +9 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +9 -3
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.d.ts +6 -2
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
- package/lib/summary/summarizerHeuristics.js +12 -4
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +24 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +15 -5
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +48 -16
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +3 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +12 -4
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +12 -4
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +246 -135
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +1 -2
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +24 -8
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +9 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +3 -1
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +8 -4
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +12 -4
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.d.ts +26 -10
- package/lib/throttler.d.ts.map +1 -1
- package/lib/throttler.js +12 -4
- package/lib/throttler.js.map +1 -1
- package/package.json +43 -30
- package/src/batchTracker.ts +31 -33
- package/src/blobManager/blobManager.ts +38 -19
- package/src/blobManager/blobManagerSnapSum.ts +2 -2
- package/src/channelCollection.ts +45 -38
- package/src/connectionTelemetry.ts +31 -13
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +199 -142
- package/src/dataStore.ts +11 -6
- package/src/dataStoreContext.ts +80 -59
- package/src/dataStoreContexts.ts +16 -12
- package/src/dataStoreRegistry.ts +1 -1
- package/src/deltaManagerProxies.ts +5 -5
- package/src/deltaScheduler.ts +19 -13
- package/src/gc/garbageCollection.ts +42 -20
- package/src/gc/gcConfigs.ts +4 -4
- package/src/gc/gcDefinitions.ts +212 -70
- package/src/gc/gcHelpers.ts +13 -7
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +18 -6
- package/src/gc/gcSummaryStateTracker.ts +4 -2
- package/src/gc/gcTelemetry.ts +47 -19
- package/src/gc/gcUnreferencedStateTracker.ts +40 -16
- package/src/gc/index.ts +1 -0
- package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +53 -120
- package/src/index.ts +0 -3
- package/src/messageTypes.ts +14 -5
- package/src/metadata.ts +12 -4
- package/src/opLifecycle/batchManager.ts +12 -6
- package/src/opLifecycle/duplicateBatchDetector.ts +10 -4
- package/src/opLifecycle/opCompressor.ts +8 -4
- package/src/opLifecycle/opDecompressor.ts +19 -10
- package/src/opLifecycle/opGroupingManager.ts +12 -8
- package/src/opLifecycle/opSplitter.ts +10 -7
- package/src/opLifecycle/outbox.ts +22 -13
- package/src/opLifecycle/remoteMessageProcessor.ts +10 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +34 -16
- package/src/summary/documentSchema.ts +30 -18
- package/src/summary/index.ts +0 -3
- package/src/summary/orderedClientElection.ts +100 -38
- package/src/summary/runWhileConnectedCoordinator.ts +6 -3
- package/src/summary/runningSummarizer.ts +38 -19
- package/src/summary/summarizer.ts +29 -16
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +22 -11
- package/src/summary/summarizerNode/summarizerNode.ts +22 -12
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +21 -11
- package/src/summary/summarizerTypes.ts +246 -139
- package/src/summary/summaryCollection.ts +22 -23
- package/src/summary/summaryFormat.ts +24 -8
- package/src/summary/summaryGenerator.ts +14 -8
- package/src/summary/summaryManager.ts +28 -18
- package/src/throttler.ts +23 -11
- package/dist/scheduleManager.d.ts +0 -28
- package/dist/scheduleManager.d.ts.map +0 -1
- package/dist/scheduleManager.js +0 -233
- package/dist/scheduleManager.js.map +0 -1
- package/lib/scheduleManager.d.ts +0 -28
- package/lib/scheduleManager.d.ts.map +0 -1
- package/lib/scheduleManager.js +0 -229
- package/lib/scheduleManager.js.map +0 -1
|
@@ -55,14 +55,21 @@ export class SummarizingWarning
|
|
|
55
55
|
super(errorMessage);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
static wrap(
|
|
59
|
-
|
|
58
|
+
static wrap(
|
|
59
|
+
error: unknown,
|
|
60
|
+
logged: boolean = false,
|
|
61
|
+
logger: ITelemetryLoggerExt,
|
|
62
|
+
): SummarizingWarning {
|
|
63
|
+
const newErrorFn = (errMsg: string): SummarizingWarning =>
|
|
64
|
+
new SummarizingWarning(errMsg, logged);
|
|
60
65
|
return wrapErrorAndLog<SummarizingWarning>(error, newErrorFn, logger);
|
|
61
66
|
}
|
|
62
67
|
}
|
|
63
68
|
|
|
64
|
-
export const createSummarizingWarning = (
|
|
65
|
-
|
|
69
|
+
export const createSummarizingWarning = (
|
|
70
|
+
errorMessage: string,
|
|
71
|
+
logged: boolean,
|
|
72
|
+
): SummarizingWarning => new SummarizingWarning(errorMessage, logged);
|
|
66
73
|
|
|
67
74
|
/**
|
|
68
75
|
* Summarizer is responsible for coordinating when to generate and send summaries.
|
|
@@ -72,7 +79,7 @@ export const createSummarizingWarning = (errorMessage: string, logged: boolean)
|
|
|
72
79
|
* @alpha
|
|
73
80
|
*/
|
|
74
81
|
export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
|
|
75
|
-
public get ISummarizer() {
|
|
82
|
+
public get ISummarizer(): this {
|
|
76
83
|
return this;
|
|
77
84
|
}
|
|
78
85
|
|
|
@@ -84,12 +91,14 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
|
|
|
84
91
|
private readonly stopDeferred = new Deferred<SummarizerStopReason>();
|
|
85
92
|
|
|
86
93
|
constructor(
|
|
87
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Reference to runtime that created this object.
|
|
88
96
|
* i.e. runtime with clientType === "summarizer"
|
|
89
97
|
*/
|
|
90
98
|
private readonly runtime: ISummarizerRuntime,
|
|
91
99
|
private readonly configurationGetter: () => ISummaryConfiguration,
|
|
92
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Represents an object that can generate summary.
|
|
93
102
|
* In practical terms, it's same runtime (this.runtime) with clientType === "summarizer".
|
|
94
103
|
*/
|
|
95
104
|
private readonly internalsProvider: ISummarizerInternalsProvider,
|
|
@@ -134,11 +143,11 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
|
|
|
134
143
|
* the run promise, and also close the container.
|
|
135
144
|
* @param reason - reason code for stopping
|
|
136
145
|
*/
|
|
137
|
-
public stop(reason: SummarizerStopReason) {
|
|
146
|
+
public stop(reason: SummarizerStopReason): void {
|
|
138
147
|
this.stopDeferred.resolve(reason);
|
|
139
148
|
}
|
|
140
149
|
|
|
141
|
-
public close() {
|
|
150
|
+
public close(): void {
|
|
142
151
|
// This will result in "summarizerClientDisconnected" stop reason recorded in telemetry,
|
|
143
152
|
// unless stop() was called earlier
|
|
144
153
|
this.dispose();
|
|
@@ -259,7 +268,9 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
|
|
|
259
268
|
this._heuristicData = new SummarizeHeuristicData(
|
|
260
269
|
this.runtime.deltaManager.lastSequenceNumber,
|
|
261
270
|
{
|
|
262
|
-
/**
|
|
271
|
+
/**
|
|
272
|
+
* summary attempt baseline for heuristics
|
|
273
|
+
*/
|
|
263
274
|
refSequenceNumber: this.runtime.deltaManager.initialSequenceNumber,
|
|
264
275
|
summaryTime: Date.now(),
|
|
265
276
|
} as const,
|
|
@@ -289,7 +300,7 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
|
|
|
289
300
|
* properties.
|
|
290
301
|
* Called by ContainerRuntime when it is disposed, as well as at the end the run().
|
|
291
302
|
*/
|
|
292
|
-
public dispose() {
|
|
303
|
+
public dispose(): void {
|
|
293
304
|
// Given that the call can come from own ContainerRuntime, ensure that we stop all the processes.
|
|
294
305
|
this.stop("summarizerClientDisconnected");
|
|
295
306
|
|
|
@@ -372,23 +383,25 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
|
|
|
372
383
|
return this.runningSummarizer.enqueueSummarize(options);
|
|
373
384
|
}
|
|
374
385
|
|
|
375
|
-
public recordSummaryAttempt?(summaryRefSeqNum?: number) {
|
|
386
|
+
public recordSummaryAttempt?(summaryRefSeqNum?: number): void {
|
|
376
387
|
this._heuristicData?.recordAttempt(summaryRefSeqNum);
|
|
377
388
|
}
|
|
378
389
|
|
|
379
|
-
private readonly forwardedEvents = new Map<
|
|
390
|
+
private readonly forwardedEvents = new Map<string, () => void>();
|
|
380
391
|
|
|
381
|
-
private setupForwardedEvents() {
|
|
392
|
+
private setupForwardedEvents(): void {
|
|
382
393
|
["summarize", "summarizeAllAttemptsFailed"].forEach((event) => {
|
|
383
|
-
const listener = (...args: any[]) => {
|
|
394
|
+
const listener = (...args: any[]): void => {
|
|
384
395
|
this.emit(event, ...args);
|
|
385
396
|
};
|
|
397
|
+
// TODO: better typing here
|
|
398
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
386
399
|
this.runningSummarizer?.on(event as any, listener);
|
|
387
400
|
this.forwardedEvents.set(event, listener);
|
|
388
401
|
});
|
|
389
402
|
}
|
|
390
403
|
|
|
391
|
-
private cleanupForwardedEvents() {
|
|
404
|
+
private cleanupForwardedEvents(): void {
|
|
392
405
|
this.forwardedEvents.forEach((listener, event) =>
|
|
393
406
|
this.runningSummarizer?.off(event, listener),
|
|
394
407
|
);
|
|
@@ -51,10 +51,10 @@ export class SummarizerClientElection
|
|
|
51
51
|
*/
|
|
52
52
|
private lastReportedSeq = 0;
|
|
53
53
|
|
|
54
|
-
public get electedClientId() {
|
|
54
|
+
public get electedClientId(): string | undefined {
|
|
55
55
|
return this.clientElection.electedClient?.clientId;
|
|
56
56
|
}
|
|
57
|
-
public get electedParentId() {
|
|
57
|
+
public get electedParentId(): string | undefined {
|
|
58
58
|
return this.clientElection.electedParent?.clientId;
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -16,7 +16,9 @@ import {
|
|
|
16
16
|
} from "./summarizerTypes.js";
|
|
17
17
|
import { SummarizeReason } from "./summaryGenerator.js";
|
|
18
18
|
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Simple implementation of class for tracking summarize heuristic data.
|
|
21
|
+
*/
|
|
20
22
|
export class SummarizeHeuristicData implements ISummarizeHeuristicData {
|
|
21
23
|
protected _lastAttempt: ISummarizeAttempt;
|
|
22
24
|
public get lastAttempt(): ISummarizeAttempt {
|
|
@@ -57,19 +59,21 @@ export class SummarizeHeuristicData implements ISummarizeHeuristicData {
|
|
|
57
59
|
|
|
58
60
|
constructor(
|
|
59
61
|
public lastOpSequenceNumber: number,
|
|
60
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Baseline attempt data used for comparisons with subsequent attempts/calculations.
|
|
64
|
+
*/
|
|
61
65
|
attemptBaseline: ISummarizeAttempt,
|
|
62
66
|
) {
|
|
63
67
|
this._lastAttempt = attemptBaseline;
|
|
64
68
|
this._lastSuccessfulSummary = { ...attemptBaseline };
|
|
65
69
|
}
|
|
66
70
|
|
|
67
|
-
public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>) {
|
|
71
|
+
public updateWithLastSummaryAckInfo(lastSummary: Readonly<ISummarizeAttempt>): void {
|
|
68
72
|
this._lastAttempt = lastSummary;
|
|
69
73
|
this._lastSuccessfulSummary = { ...lastSummary };
|
|
70
74
|
}
|
|
71
75
|
|
|
72
|
-
public recordAttempt(refSequenceNumber?: number) {
|
|
76
|
+
public recordAttempt(refSequenceNumber?: number): void {
|
|
73
77
|
this._lastAttempt = {
|
|
74
78
|
refSequenceNumber: refSequenceNumber ?? this.lastOpSequenceNumber,
|
|
75
79
|
summaryTime: Date.now(),
|
|
@@ -80,7 +84,7 @@ export class SummarizeHeuristicData implements ISummarizeHeuristicData {
|
|
|
80
84
|
this.totalOpsSizeBefore = this.totalOpsSize;
|
|
81
85
|
}
|
|
82
86
|
|
|
83
|
-
public markLastAttemptAsSuccessful() {
|
|
87
|
+
public markLastAttemptAsSuccessful(): void {
|
|
84
88
|
this._lastSuccessfulSummary = { ...this.lastAttempt };
|
|
85
89
|
|
|
86
90
|
this.numNonRuntimeOps -= this.numNonRuntimeOpsBefore;
|
|
@@ -147,11 +151,11 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
|
|
|
147
151
|
);
|
|
148
152
|
}
|
|
149
153
|
|
|
150
|
-
public start() {
|
|
154
|
+
public start(): void {
|
|
151
155
|
this.idleTimer?.start(this.idleTime);
|
|
152
156
|
}
|
|
153
157
|
|
|
154
|
-
public run() {
|
|
158
|
+
public run(): void {
|
|
155
159
|
for (const strategy of this.summarizeStrategies) {
|
|
156
160
|
if (strategy.shouldRunSummary(this.configuration, this.heuristicData)) {
|
|
157
161
|
return this.runSummarize(strategy.summarizeReason);
|
|
@@ -179,12 +183,14 @@ export class SummarizeHeuristicRunner implements ISummarizeHeuristicRunner {
|
|
|
179
183
|
return weightedOpsSinceLastAck >= minOpsForLastSummaryAttempt;
|
|
180
184
|
}
|
|
181
185
|
|
|
182
|
-
public dispose() {
|
|
186
|
+
public dispose(): void {
|
|
183
187
|
this.idleTimer?.clear();
|
|
184
188
|
}
|
|
185
189
|
}
|
|
186
190
|
|
|
187
|
-
/**
|
|
191
|
+
/**
|
|
192
|
+
* Strategy used to run a summary when it's been a while since our last successful summary
|
|
193
|
+
*/
|
|
188
194
|
class MaxTimeSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
|
|
189
195
|
public readonly summarizeReason: Readonly<SummarizeReason> = "maxTime";
|
|
190
196
|
|
|
@@ -206,7 +212,9 @@ function getWeightedNumberOfOps(
|
|
|
206
212
|
return runtimeOpWeight * runtimeOpCount + nonRuntimeOpWeight * nonRuntimeOpCount;
|
|
207
213
|
}
|
|
208
214
|
|
|
209
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* Strategy used to do a weighted analysis on the ops we've processed since the last successful summary
|
|
217
|
+
*/
|
|
210
218
|
class WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
|
|
211
219
|
public readonly summarizeReason: Readonly<SummarizeReason> = "maxOps";
|
|
212
220
|
|
|
@@ -224,6 +232,9 @@ class WeightedOpsSummaryHeuristicStrategy implements ISummaryHeuristicStrategy {
|
|
|
224
232
|
}
|
|
225
233
|
}
|
|
226
234
|
|
|
227
|
-
function getDefaultSummaryHeuristicStrategies()
|
|
235
|
+
function getDefaultSummaryHeuristicStrategies(): (
|
|
236
|
+
| MaxTimeSummaryHeuristicStrategy
|
|
237
|
+
| WeightedOpsSummaryHeuristicStrategy
|
|
238
|
+
)[] {
|
|
228
239
|
return [new MaxTimeSummaryHeuristicStrategy(), new WeightedOpsSummaryHeuristicStrategy()];
|
|
229
240
|
}
|
|
@@ -61,7 +61,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
61
61
|
* The reference sequence number of the most recent acked summary.
|
|
62
62
|
* Returns 0 if there is not yet an acked summary.
|
|
63
63
|
*/
|
|
64
|
-
public get referenceSequenceNumber() {
|
|
64
|
+
public get referenceSequenceNumber(): number {
|
|
65
65
|
return this._lastSummaryReferenceSequenceNumber ?? 0;
|
|
66
66
|
}
|
|
67
67
|
|
|
@@ -98,13 +98,19 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
98
98
|
baseLogger: ITelemetryBaseLogger,
|
|
99
99
|
private readonly summarizeInternalFn: SummarizeInternalFn,
|
|
100
100
|
config: ISummarizerNodeConfig,
|
|
101
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Encoded handle or path to the node
|
|
103
|
+
*/
|
|
102
104
|
private readonly _summaryHandleId: EscapedPath,
|
|
103
105
|
private _changeSequenceNumber: number,
|
|
104
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Summary reference sequence number, i.e. last sequence number seen when last successful summary was created
|
|
108
|
+
*/
|
|
105
109
|
private _lastSummaryReferenceSequenceNumber?: number,
|
|
106
110
|
protected wipSummaryLogger?: ITelemetryBaseLogger,
|
|
107
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* A unique id of this node to be logged when sending telemetry.
|
|
113
|
+
*/
|
|
108
114
|
protected telemetryNodeId?: string,
|
|
109
115
|
) {
|
|
110
116
|
this.canReuseHandle = config.canReuseHandle ?? true;
|
|
@@ -317,7 +323,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
317
323
|
* queue. We track this until we get an ack from the server for this summary.
|
|
318
324
|
* @param proposalHandle - The handle of the summary that was uploaded to the server.
|
|
319
325
|
*/
|
|
320
|
-
public completeSummary(proposalHandle: string) {
|
|
326
|
+
public completeSummary(proposalHandle: string): void {
|
|
321
327
|
this.completeSummaryCore(proposalHandle, false /* parentSkipRecursion */);
|
|
322
328
|
}
|
|
323
329
|
|
|
@@ -329,7 +335,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
329
335
|
* In that case, the children will not have work-in-progress state.
|
|
330
336
|
* @param validate - true to validate that the in-progress summary is correct for all nodes.
|
|
331
337
|
*/
|
|
332
|
-
protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean) {
|
|
338
|
+
protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean): void {
|
|
333
339
|
assert(
|
|
334
340
|
this.wipReferenceSequenceNumber !== undefined,
|
|
335
341
|
0x1a4 /* "Not tracking a summary" */,
|
|
@@ -362,7 +368,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
362
368
|
this.clearSummary();
|
|
363
369
|
}
|
|
364
370
|
|
|
365
|
-
public clearSummary() {
|
|
371
|
+
public clearSummary(): void {
|
|
366
372
|
this.wipReferenceSequenceNumber = undefined;
|
|
367
373
|
this.wipSummarizeCalled = false;
|
|
368
374
|
this.wipSkipRecursion = false;
|
|
@@ -476,7 +482,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
476
482
|
}
|
|
477
483
|
}
|
|
478
484
|
|
|
479
|
-
public updateBaseSummaryState(snapshot: ISnapshotTree) {
|
|
485
|
+
public updateBaseSummaryState(snapshot: ISnapshotTree): void {
|
|
480
486
|
// Function deprecated. Empty declaration is kept around to compat failures.
|
|
481
487
|
}
|
|
482
488
|
|
|
@@ -502,9 +508,13 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
502
508
|
protected readonly canReuseHandle: boolean;
|
|
503
509
|
|
|
504
510
|
public createChild(
|
|
505
|
-
/**
|
|
511
|
+
/**
|
|
512
|
+
* Summarize function
|
|
513
|
+
*/
|
|
506
514
|
summarizeInternalFn: SummarizeInternalFn,
|
|
507
|
-
/**
|
|
515
|
+
/**
|
|
516
|
+
* Initial id or path part of this node
|
|
517
|
+
*/
|
|
508
518
|
id: string,
|
|
509
519
|
/**
|
|
510
520
|
* Information needed to create the node.
|
|
@@ -599,7 +609,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
599
609
|
* @param id - Initial id or path part of this node
|
|
600
610
|
*
|
|
601
611
|
*/
|
|
602
|
-
protected maybeUpdateChildState(child: SummarizerNode, id: string) {
|
|
612
|
+
protected maybeUpdateChildState(child: SummarizerNode, id: string): void {
|
|
603
613
|
// If a summary is in progress, this child was created after the summary started. So, we need to update the
|
|
604
614
|
// child's summary state as well.
|
|
605
615
|
if (this.isSummaryInProgress()) {
|
|
@@ -613,7 +623,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
613
623
|
}
|
|
614
624
|
}
|
|
615
625
|
|
|
616
|
-
protected addPendingSummary(key: string, pendingSummaryInfo: PendingSummaryInfo) {
|
|
626
|
+
protected addPendingSummary(key: string, pendingSummaryInfo: PendingSummaryInfo): void {
|
|
617
627
|
this.pendingSummaries.set(key, pendingSummaryInfo);
|
|
618
628
|
}
|
|
619
629
|
|
|
@@ -12,18 +12,28 @@ import {
|
|
|
12
12
|
} from "@fluidframework/telemetry-utils/internal";
|
|
13
13
|
|
|
14
14
|
export interface IRefreshSummaryResult {
|
|
15
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Tells whether this summary is tracked by this client.
|
|
17
|
+
*/
|
|
16
18
|
isSummaryTracked: boolean;
|
|
17
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Tells whether this summary is newer than the latest one tracked by this client.
|
|
21
|
+
*/
|
|
18
22
|
isSummaryNewer: boolean;
|
|
19
23
|
}
|
|
20
24
|
|
|
21
25
|
export interface IStartSummaryResult {
|
|
22
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* The number of summarizerNodes at the start of the summary.
|
|
28
|
+
*/
|
|
23
29
|
nodes: number;
|
|
24
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* The number of summarizerNodes in the wrong state.
|
|
32
|
+
*/
|
|
25
33
|
invalidNodes: number;
|
|
26
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* The invalid sequence numbers and their values. It should be in the format of validateSequenceNumber-nodeSequenceNumber
|
|
36
|
+
*/
|
|
27
37
|
mismatchNumbers: Set<string>;
|
|
28
38
|
}
|
|
29
39
|
|
|
@@ -38,14 +48,20 @@ export type ValidateSummaryResult =
|
|
|
38
48
|
}
|
|
39
49
|
| {
|
|
40
50
|
success: false;
|
|
41
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* The failure reason
|
|
53
|
+
*/
|
|
42
54
|
reason: string;
|
|
43
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* id of the node that failed during validation
|
|
57
|
+
*/
|
|
44
58
|
id: {
|
|
45
59
|
tag: TelemetryDataTag.CodeArtifact;
|
|
46
60
|
value: string | undefined;
|
|
47
61
|
};
|
|
48
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* If the error can be retried, time to wait before retrying
|
|
64
|
+
*/
|
|
49
65
|
retryAfterSeconds?: number;
|
|
50
66
|
};
|
|
51
67
|
|
|
@@ -64,7 +80,9 @@ export interface ISummarizerNodeRootContract {
|
|
|
64
80
|
): Promise<IRefreshSummaryResult>;
|
|
65
81
|
}
|
|
66
82
|
|
|
67
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Class to build paths for nodes in a tree with escaped special characters
|
|
85
|
+
*/
|
|
68
86
|
export class EscapedPath {
|
|
69
87
|
private constructor(public readonly path: string) {}
|
|
70
88
|
|
|
@@ -88,7 +106,9 @@ export class EscapedPath {
|
|
|
88
106
|
}
|
|
89
107
|
}
|
|
90
108
|
export interface PendingSummaryInfo {
|
|
91
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* The sequence number at which the summary was created.
|
|
111
|
+
*/
|
|
92
112
|
referenceSequenceNumber: number;
|
|
93
113
|
}
|
|
94
114
|
|
|
@@ -96,19 +116,31 @@ export interface PendingSummaryInfo {
|
|
|
96
116
|
* Represents the details needed to create a child summarizer node.
|
|
97
117
|
*/
|
|
98
118
|
export interface ICreateChildDetails {
|
|
99
|
-
/**
|
|
119
|
+
/**
|
|
120
|
+
* Sequence number of latest known change to the node
|
|
121
|
+
*/
|
|
100
122
|
changeSequenceNumber: number;
|
|
101
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* A unique id of this child to be logged when sending telemetry.
|
|
125
|
+
*/
|
|
102
126
|
telemetryNodeId: string;
|
|
103
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Summary handle for child node
|
|
129
|
+
*/
|
|
104
130
|
summaryHandleId: EscapedPath;
|
|
105
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* the reference sequence number of the last successful summary.
|
|
133
|
+
*/
|
|
106
134
|
lastSummaryReferenceSequenceNumber: number | undefined;
|
|
107
135
|
}
|
|
108
136
|
|
|
109
137
|
export interface ISubtreeInfo<T extends ISnapshotTree | SummaryObject> {
|
|
110
|
-
/**
|
|
138
|
+
/**
|
|
139
|
+
* Tree to use to find children subtrees
|
|
140
|
+
*/
|
|
111
141
|
childrenTree: T;
|
|
112
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* Additional path part where children are isolated
|
|
144
|
+
*/
|
|
113
145
|
childrenPathPart: string | undefined;
|
|
114
146
|
}
|
|
@@ -95,12 +95,16 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
95
95
|
config: ISummarizerNodeConfigWithGC,
|
|
96
96
|
_summaryHandleId: EscapedPath,
|
|
97
97
|
changeSequenceNumber: number,
|
|
98
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* Summary reference sequence number, i.e. last sequence number seen when it was created
|
|
100
|
+
*/
|
|
99
101
|
lastSummaryReferenceSequenceNumber?: number,
|
|
100
102
|
wipSummaryLogger?: ITelemetryBaseLogger,
|
|
101
103
|
private readonly getGCDataFn?: (fullGC?: boolean) => Promise<IGarbageCollectionData>,
|
|
102
104
|
getBaseGCDetailsFn?: () => Promise<IGarbageCollectionDetailsBase>,
|
|
103
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* A unique id of this node to be logged when sending telemetry.
|
|
107
|
+
*/
|
|
104
108
|
telemetryId?: string,
|
|
105
109
|
) {
|
|
106
110
|
super(
|
|
@@ -132,7 +136,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
132
136
|
* - usedRoutes: This is used to figure out if the used state of this node changed since last summary.
|
|
133
137
|
* - gcData: The garbage collection data of this node that is required for running GC.
|
|
134
138
|
*/
|
|
135
|
-
private async loadBaseGCDetails() {
|
|
139
|
+
private async loadBaseGCDetails(): Promise<void> {
|
|
136
140
|
if (this.baseGCDetailsLoaded) {
|
|
137
141
|
return;
|
|
138
142
|
}
|
|
@@ -263,7 +267,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
263
267
|
* @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.
|
|
264
268
|
* In that case, the children will not have work-in-progress state.
|
|
265
269
|
*/
|
|
266
|
-
protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean) {
|
|
270
|
+
protected completeSummaryCore(proposalHandle: string, parentSkipRecursion: boolean): void {
|
|
267
271
|
let wipSerializedUsedRoutes: string | undefined;
|
|
268
272
|
// If GC is disabled, don't set wip used routes.
|
|
269
273
|
if (!this.gcDisabled) {
|
|
@@ -288,7 +292,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
288
292
|
/**
|
|
289
293
|
* Clears the work-in-progress state.
|
|
290
294
|
*/
|
|
291
|
-
public clearSummary() {
|
|
295
|
+
public clearSummary(): void {
|
|
292
296
|
this.wipSerializedUsedRoutes = undefined;
|
|
293
297
|
this.wipChildNodesUsedRoutes = undefined;
|
|
294
298
|
super.clearSummary();
|
|
@@ -324,7 +328,9 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
324
328
|
);
|
|
325
329
|
throw error;
|
|
326
330
|
}
|
|
327
|
-
this.referenceUsedRoutes = JSON.parse(
|
|
331
|
+
this.referenceUsedRoutes = JSON.parse(
|
|
332
|
+
summaryNodeWithGC.serializedUsedRoutes,
|
|
333
|
+
) as string[];
|
|
328
334
|
}
|
|
329
335
|
}
|
|
330
336
|
|
|
@@ -335,9 +341,13 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
335
341
|
* Override the createChild method to return an instance of SummarizerNodeWithGC.
|
|
336
342
|
*/
|
|
337
343
|
public createChild(
|
|
338
|
-
/**
|
|
344
|
+
/**
|
|
345
|
+
* Summarize function
|
|
346
|
+
*/
|
|
339
347
|
summarizeInternalFn: SummarizeInternalFn,
|
|
340
|
-
/**
|
|
348
|
+
/**
|
|
349
|
+
* Initial id or path part of this node
|
|
350
|
+
*/
|
|
341
351
|
id: string,
|
|
342
352
|
/**
|
|
343
353
|
* Information needed to create the node.
|
|
@@ -355,7 +365,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
355
365
|
* snapshot and the child node wasn't created then. If a child is created after that, its GC details should be
|
|
356
366
|
* the one from the downloaded snapshot and not the base GC details.
|
|
357
367
|
*/
|
|
358
|
-
const getChildBaseGCDetailsFn = async () => {
|
|
368
|
+
const getChildBaseGCDetailsFn = async (): Promise<IGarbageCollectionDetailsBase> => {
|
|
359
369
|
const childNodesBaseGCDetails = await this.childNodesBaseGCDetailsP;
|
|
360
370
|
return childNodesBaseGCDetails.get(id) ?? {};
|
|
361
371
|
};
|
|
@@ -395,7 +405,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
395
405
|
* @param child - The child node whose state is to be updated.
|
|
396
406
|
* @param id - Initial id or path part of this node
|
|
397
407
|
*/
|
|
398
|
-
protected maybeUpdateChildState(child: SummarizerNodeWithGC, id: string) {
|
|
408
|
+
protected maybeUpdateChildState(child: SummarizerNodeWithGC, id: string): void {
|
|
399
409
|
super.maybeUpdateChildState(child, id);
|
|
400
410
|
|
|
401
411
|
// If GC has run on this node and summarization isn't complete, this.wipSerializedUsedRoutes will be defined.
|
|
@@ -447,7 +457,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
|
|
|
447
457
|
return this.usedRoutes.includes("") || this.usedRoutes.includes("/");
|
|
448
458
|
}
|
|
449
459
|
|
|
450
|
-
public updateUsedRoutes(usedRoutes: string[]) {
|
|
460
|
+
public updateUsedRoutes(usedRoutes: string[]): void {
|
|
451
461
|
// Sort the given routes before updating. This will ensure that the routes compared in hasUsedStateChanged()
|
|
452
462
|
// are in the same order.
|
|
453
463
|
this.usedRoutes = usedRoutes.sort();
|