@fluidframework/container-runtime 2.13.0 → 2.21.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 +71 -5
- package/CHANGELOG.md +84 -0
- package/api-report/container-runtime.legacy.alpha.api.md +38 -232
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +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 +30 -13
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/dist/blobManager/blobManagerSnapSum.js +7 -5
- 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 +85 -53
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +10 -6
- 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 +87 -94
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +312 -226
- 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 +8 -4
- 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 +47 -29
- 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 +7 -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 +48 -19
- 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 +5 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +218 -70
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +40 -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 +14 -7
- 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 +2 -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 +35 -17
- 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/layerCompatState.d.ts +19 -0
- package/dist/layerCompatState.d.ts.map +1 -0
- package/dist/layerCompatState.js +64 -0
- package/dist/layerCompatState.js.map +1 -0
- 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 +11 -5
- package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +3 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -19
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +6 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +16 -8
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -2
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +9 -6
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +13 -10
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +16 -11
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +17 -16
- 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 +3 -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 +22 -11
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +24 -15
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +7 -0
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +8 -4
- 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 +94 -31
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +28 -16
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +7 -2
- 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 +48 -19
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +10 -5
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +26 -11
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +1 -0
- 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 +13 -5
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.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 +45 -36
- 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 +13 -5
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +253 -135
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +3 -4
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +10 -8
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +28 -9
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +3 -2
- 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 +22 -9
- 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 +20 -9
- 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 +1 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +2 -2
- 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 +30 -13
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
- package/lib/blobManager/blobManagerSnapSum.js +7 -5
- 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 +88 -54
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +11 -7
- 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 +87 -94
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +319 -228
- 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 +8 -4
- 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 +47 -29
- 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 +7 -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 +96 -90
- 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 +51 -20
- 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 +4 -2
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +218 -70
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +40 -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 +14 -7
- 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 +2 -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 +38 -18
- 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/layerCompatState.d.ts +19 -0
- package/lib/layerCompatState.d.ts.map +1 -0
- package/lib/layerCompatState.js +60 -0
- package/lib/layerCompatState.js.map +1 -0
- 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 +11 -5
- package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +3 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +14 -20
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +6 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +17 -9
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +10 -7
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +13 -10
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +16 -11
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +4 -4
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +17 -16
- 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 +3 -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 +22 -11
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +25 -16
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +7 -0
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +8 -4
- 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 +94 -31
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +28 -16
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +7 -2
- 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 +48 -19
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +10 -5
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +26 -11
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -0
- 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 +13 -5
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/index.d.ts.map +1 -1
- package/lib/summary/summarizerNode/index.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 +45 -36
- 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 +13 -5
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +15 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +253 -135
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +3 -4
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +10 -8
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +28 -9
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +9 -3
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +22 -9
- 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 +20 -9
- 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 +22 -31
- package/src/batchTracker.ts +34 -36
- package/src/blobManager/blobManager.ts +54 -33
- package/src/blobManager/blobManagerSnapSum.ts +10 -10
- package/src/channelCollection.ts +108 -82
- package/src/connectionTelemetry.ts +43 -19
- package/src/containerHandleContext.ts +2 -2
- package/src/containerRuntime.ts +492 -364
- package/src/dataStore.ts +17 -9
- package/src/dataStoreContext.ts +94 -73
- package/src/dataStoreContexts.ts +17 -12
- package/src/dataStoreRegistry.ts +1 -1
- package/src/deltaManagerProxies.ts +5 -5
- package/src/deltaScheduler.ts +24 -18
- package/src/gc/garbageCollection.ts +89 -40
- package/src/gc/gcConfigs.ts +13 -5
- package/src/gc/gcDefinitions.ts +224 -70
- package/src/gc/gcHelpers.ts +22 -11
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryDefinitions.ts +18 -6
- package/src/gc/gcSummaryStateTracker.ts +7 -3
- package/src/gc/gcTelemetry.ts +73 -30
- package/src/gc/gcUnreferencedStateTracker.ts +40 -16
- package/src/gc/index.ts +1 -0
- package/src/{scheduleManager.ts → inboundBatchAggregator.ts} +55 -122
- package/src/index.ts +0 -3
- package/src/layerCompatState.ts +75 -0
- package/src/messageTypes.ts +16 -5
- package/src/metadata.ts +12 -4
- package/src/opLifecycle/README.md +43 -34
- package/src/opLifecycle/batchManager.ts +12 -6
- package/src/opLifecycle/duplicateBatchDetector.ts +12 -6
- package/src/opLifecycle/opCompressor.ts +22 -25
- package/src/opLifecycle/opDecompressor.ts +23 -11
- package/src/opLifecycle/opGroupingManager.ts +16 -11
- package/src/opLifecycle/opSplitter.ts +24 -18
- package/src/opLifecycle/outbox.ts +35 -33
- package/src/opLifecycle/remoteMessageProcessor.ts +13 -5
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +49 -26
- package/src/summary/documentSchema.ts +41 -22
- package/src/summary/index.ts +0 -3
- package/src/summary/orderedClientElection.ts +114 -49
- package/src/summary/runWhileConnectedCoordinator.ts +12 -3
- package/src/summary/runningSummarizer.ts +79 -36
- package/src/summary/summarizer.ts +51 -25
- package/src/summary/summarizerClientElection.ts +4 -2
- package/src/summary/summarizerHeuristics.ts +23 -12
- package/src/summary/summarizerNode/index.ts +1 -0
- package/src/summary/summarizerNode/summarizerNode.ts +54 -43
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +48 -16
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +25 -15
- package/src/summary/summarizerTypes.ts +253 -139
- package/src/summary/summaryCollection.ts +41 -31
- package/src/summary/summaryFormat.ts +34 -13
- package/src/summary/summaryGenerator.ts +39 -18
- package/src/summary/summaryManager.ts +36 -24
- package/src/throttler.ts +23 -11
- package/container-runtime.test-files.tar +0 -0
- 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
|
@@ -32,11 +32,17 @@ export interface IGarbageCollectionState {
|
|
|
32
32
|
* The GC data that is read from a snapshot. It contains the Garbage CollectionState state and tombstone state.
|
|
33
33
|
*/
|
|
34
34
|
export interface IGarbageCollectionSnapshotData {
|
|
35
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* The garbage collection state. It is a list of nodes in the container and their GC data.
|
|
37
|
+
*/
|
|
36
38
|
gcState: IGarbageCollectionState | undefined;
|
|
37
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* A list of nodes that have been tombstoned by GC.
|
|
41
|
+
*/
|
|
38
42
|
tombstones: string[] | undefined;
|
|
39
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* A list of nodes that have been deleted by GC.
|
|
45
|
+
*/
|
|
40
46
|
deletedNodes: string[] | undefined;
|
|
41
47
|
}
|
|
42
48
|
|
|
@@ -45,10 +51,16 @@ export interface IGarbageCollectionSnapshotData {
|
|
|
45
51
|
* Legacy GC details from when the GC details were written at the data store's summary tree.
|
|
46
52
|
*/
|
|
47
53
|
export interface IGarbageCollectionSummaryDetailsLegacy {
|
|
48
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* A list of routes to Fluid objects that are used in this node.
|
|
56
|
+
*/
|
|
49
57
|
usedRoutes?: string[];
|
|
50
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* The GC data of this node.
|
|
60
|
+
*/
|
|
51
61
|
gcData?: IGarbageCollectionData;
|
|
52
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* If this node is unreferenced, the time when it was marked as such.
|
|
64
|
+
*/
|
|
53
65
|
unrefTimestamp?: number;
|
|
54
66
|
}
|
|
@@ -16,6 +16,7 @@ import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/in
|
|
|
16
16
|
|
|
17
17
|
import { IRefreshSummaryResult } from "../summary/index.js";
|
|
18
18
|
|
|
19
|
+
// eslint-disable-next-line import/no-deprecated
|
|
19
20
|
import { IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
|
|
20
21
|
import { generateSortedGCState } from "./gcHelpers.js";
|
|
21
22
|
import {
|
|
@@ -61,7 +62,9 @@ export class GCSummaryStateTracker {
|
|
|
61
62
|
/**
|
|
62
63
|
* Called during GC initialization. Initialize the latest summary data from the base snapshot data.
|
|
63
64
|
*/
|
|
64
|
-
public initializeBaseState(
|
|
65
|
+
public initializeBaseState(
|
|
66
|
+
baseSnapshotData: IGarbageCollectionSnapshotData | undefined,
|
|
67
|
+
): void {
|
|
65
68
|
if (baseSnapshotData === undefined) {
|
|
66
69
|
return;
|
|
67
70
|
}
|
|
@@ -96,7 +99,7 @@ export class GCSummaryStateTracker {
|
|
|
96
99
|
// Serialize and write deleted nodes, if any. This is done irrespective of whether sweep is enabled or not so
|
|
97
100
|
// to identify deleted nodes' usage.
|
|
98
101
|
const serializedDeletedNodes =
|
|
99
|
-
deletedNodes.size > 0 ? JSON.stringify(
|
|
102
|
+
deletedNodes.size > 0 ? JSON.stringify([...deletedNodes].sort()) : undefined;
|
|
100
103
|
// Serialize and write tombstones, if any.
|
|
101
104
|
const serializedTombstones =
|
|
102
105
|
tombstones.length > 0 ? JSON.stringify(tombstones.sort()) : undefined;
|
|
@@ -228,7 +231,8 @@ export class GCSummaryStateTracker {
|
|
|
228
231
|
/**
|
|
229
232
|
* Called to update the state from a GC run's stats. Used to update the count of data stores whose state updated.
|
|
230
233
|
*/
|
|
231
|
-
|
|
234
|
+
// eslint-disable-next-line import/no-deprecated
|
|
235
|
+
public updateStateFromGCRunStats(stats: IGCStats): void {
|
|
232
236
|
this.updatedDSCountSinceLastSummary += stats.updatedDataStoreCount;
|
|
233
237
|
}
|
|
234
238
|
}
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -14,10 +14,13 @@ import {
|
|
|
14
14
|
} from "@fluidframework/telemetry-utils/internal";
|
|
15
15
|
|
|
16
16
|
import { RuntimeHeaderData } from "../containerRuntime.js";
|
|
17
|
+
// eslint-disable-next-line import/no-deprecated
|
|
17
18
|
import { ICreateContainerMetadata } from "../summary/index.js";
|
|
18
19
|
|
|
19
20
|
import {
|
|
21
|
+
// eslint-disable-next-line import/no-deprecated
|
|
20
22
|
GCFeatureMatrix,
|
|
23
|
+
// eslint-disable-next-line import/no-deprecated
|
|
21
24
|
GCNodeType,
|
|
22
25
|
IGarbageCollectorConfigs,
|
|
23
26
|
UnreferencedState,
|
|
@@ -26,7 +29,9 @@ import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
|
|
|
26
29
|
|
|
27
30
|
type NodeUsageType = "Changed" | "Loaded" | "Revived" | "Realized";
|
|
28
31
|
|
|
29
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Properties that are common to IUnreferencedEventProps and INodeUsageProps
|
|
34
|
+
*/
|
|
30
35
|
interface ICommonProps {
|
|
31
36
|
usageType: NodeUsageType;
|
|
32
37
|
completedGCRuns: number;
|
|
@@ -36,39 +41,64 @@ interface ICommonProps {
|
|
|
36
41
|
additionalProps?: ITelemetryPropertiesExt;
|
|
37
42
|
}
|
|
38
43
|
|
|
39
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* The event that is logged when unreferenced node is used after a certain time.
|
|
46
|
+
*/
|
|
47
|
+
// eslint-disable-next-line import/no-deprecated
|
|
40
48
|
interface IUnreferencedEventProps extends ICreateContainerMetadata, ICommonProps {
|
|
41
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* The id that GC uses to track the node. May or may not match id
|
|
51
|
+
*/
|
|
42
52
|
trackedId: string;
|
|
43
53
|
state: UnreferencedState;
|
|
44
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* The full path (in GC Path format) to the node in question
|
|
56
|
+
*/
|
|
45
57
|
id: Tagged<string>;
|
|
46
58
|
fromId?: Tagged<string>;
|
|
59
|
+
// eslint-disable-next-line import/no-deprecated
|
|
47
60
|
type: GCNodeType;
|
|
48
61
|
unrefTime: number;
|
|
49
62
|
age: number;
|
|
50
63
|
// Expanding GC feature matrix. Without doing this, the configs cannot be logged in telemetry directly.
|
|
51
64
|
gcConfigs: Omit<IGarbageCollectorConfigs, "persistedGcFeatureMatrix"> & {
|
|
65
|
+
// eslint-disable-next-line import/no-deprecated
|
|
52
66
|
[K in keyof GCFeatureMatrix]: GCFeatureMatrix[K];
|
|
53
67
|
};
|
|
54
68
|
timeout?: number;
|
|
55
69
|
}
|
|
56
70
|
|
|
57
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Properties passed to nodeUsed function when a node is used.
|
|
73
|
+
*/
|
|
58
74
|
interface INodeUsageProps extends ICommonProps {
|
|
59
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* The full path (in GC Path format) to the node in question
|
|
77
|
+
*/
|
|
60
78
|
id: string;
|
|
61
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Latest timestamp received from the server, as a baseline for computing GC state/age
|
|
81
|
+
*/
|
|
62
82
|
currentReferenceTimestampMs: number;
|
|
63
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* The package path of the node. This may not be available if the node hasn't been loaded yet
|
|
85
|
+
*/
|
|
64
86
|
packagePath: readonly string[] | undefined;
|
|
65
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* In case of Revived - what node added the reference?
|
|
89
|
+
*/
|
|
66
90
|
fromId?: string;
|
|
67
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* In case of Revived - was it revived due to autorecovery?
|
|
93
|
+
*/
|
|
68
94
|
autorecovery?: true;
|
|
69
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* URL (including query string) if this usage came from a request
|
|
97
|
+
*/
|
|
70
98
|
requestUrl?: string;
|
|
71
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Original request headers if this usage came from a request or handle.get
|
|
101
|
+
*/
|
|
72
102
|
requestHeaders?: string;
|
|
73
103
|
}
|
|
74
104
|
|
|
@@ -99,7 +129,9 @@ export class GCTelemetryTracker {
|
|
|
99
129
|
private readonly mc: MonitoringContext,
|
|
100
130
|
private readonly configs: IGarbageCollectorConfigs,
|
|
101
131
|
private readonly isSummarizerClient: boolean,
|
|
132
|
+
// eslint-disable-next-line import/no-deprecated
|
|
102
133
|
private readonly createContainerMetadata: ICreateContainerMetadata,
|
|
134
|
+
// eslint-disable-next-line import/no-deprecated
|
|
103
135
|
private readonly getNodeType: (nodeId: string) => GCNodeType,
|
|
104
136
|
private readonly getNodeStateTracker: (
|
|
105
137
|
nodeId: string,
|
|
@@ -110,27 +142,34 @@ export class GCTelemetryTracker {
|
|
|
110
142
|
) {}
|
|
111
143
|
|
|
112
144
|
/**
|
|
113
|
-
* Returns whether an event should be logged for a node that isn't active anymore.
|
|
114
|
-
*
|
|
145
|
+
* Returns whether an event should be logged for a node that isn't active anymore.
|
|
146
|
+
*
|
|
147
|
+
* @remarks
|
|
148
|
+
* This does not apply to tombstoned nodes for which an event is always logged. Some scenarios where we won't log:
|
|
149
|
+
*
|
|
115
150
|
* 1. When a DDS is changed. The corresponding data store's event will be logged instead.
|
|
151
|
+
*
|
|
116
152
|
* 2. An event is logged only once per container instance per event per node.
|
|
117
153
|
*/
|
|
118
154
|
private shouldLogNonActiveEvent(
|
|
155
|
+
// eslint-disable-next-line import/no-deprecated
|
|
119
156
|
nodeType: GCNodeType,
|
|
120
157
|
usageType: NodeUsageType,
|
|
121
158
|
nodeStateTracker: UnreferencedStateTracker,
|
|
122
159
|
uniqueEventId: string,
|
|
123
|
-
) {
|
|
160
|
+
): boolean {
|
|
124
161
|
if (nodeStateTracker.state === UnreferencedState.Active) {
|
|
125
162
|
return false;
|
|
126
163
|
}
|
|
127
164
|
|
|
165
|
+
// eslint-disable-next-line import/no-deprecated
|
|
128
166
|
if (nodeType === GCNodeType.Other) {
|
|
129
167
|
return false;
|
|
130
168
|
}
|
|
131
169
|
|
|
132
170
|
// For sub data store (DDS) nodes, if they are changed, its data store will also be changed,
|
|
133
171
|
// so skip logging to make the telemetry less noisy.
|
|
172
|
+
// eslint-disable-next-line import/no-deprecated
|
|
134
173
|
if (nodeType === GCNodeType.SubDataStore && usageType === "Changed") {
|
|
135
174
|
return false;
|
|
136
175
|
}
|
|
@@ -160,7 +199,7 @@ export class GCTelemetryTracker {
|
|
|
160
199
|
isTombstoned,
|
|
161
200
|
...otherNodeUsageProps
|
|
162
201
|
}: INodeUsageProps,
|
|
163
|
-
) {
|
|
202
|
+
): void {
|
|
164
203
|
// Note: For SubDataStore Load usage, trackedId will be the DataStore's id, not the full path in question.
|
|
165
204
|
// This is necessary because the SubDataStore path may be unrecognized by GC (if suited for a custom request handler)
|
|
166
205
|
const nodeStateTracker = this.getNodeStateTracker(trackedId);
|
|
@@ -168,17 +207,21 @@ export class GCTelemetryTracker {
|
|
|
168
207
|
|
|
169
208
|
const timeout = (() => {
|
|
170
209
|
switch (nodeStateTracker?.state) {
|
|
171
|
-
case UnreferencedState.Inactive:
|
|
210
|
+
case UnreferencedState.Inactive: {
|
|
172
211
|
return this.configs.inactiveTimeoutMs;
|
|
173
|
-
|
|
212
|
+
}
|
|
213
|
+
case UnreferencedState.TombstoneReady: {
|
|
174
214
|
return this.configs.tombstoneTimeoutMs;
|
|
175
|
-
|
|
215
|
+
}
|
|
216
|
+
case UnreferencedState.SweepReady: {
|
|
176
217
|
return (
|
|
177
218
|
this.configs.tombstoneTimeoutMs &&
|
|
178
219
|
this.configs.tombstoneTimeoutMs + this.configs.sweepGracePeriodMs
|
|
179
220
|
);
|
|
180
|
-
|
|
221
|
+
}
|
|
222
|
+
default: {
|
|
181
223
|
return undefined;
|
|
224
|
+
}
|
|
182
225
|
}
|
|
183
226
|
})();
|
|
184
227
|
const { persistedGcFeatureMatrix, ...configs } = this.configs;
|
|
@@ -187,9 +230,9 @@ export class GCTelemetryTracker {
|
|
|
187
230
|
type: nodeType,
|
|
188
231
|
unrefTime: nodeStateTracker?.unreferencedTimestampMs ?? -1,
|
|
189
232
|
age:
|
|
190
|
-
nodeStateTracker
|
|
191
|
-
?
|
|
192
|
-
: -
|
|
233
|
+
nodeStateTracker === undefined
|
|
234
|
+
? -1
|
|
235
|
+
: currentReferenceTimestampMs - nodeStateTracker.unreferencedTimestampMs,
|
|
193
236
|
timeout,
|
|
194
237
|
isTombstoned,
|
|
195
238
|
...tagCodeArtifacts({ id: untaggedId, fromId: untaggedFromId }),
|
|
@@ -262,10 +305,11 @@ export class GCTelemetryTracker {
|
|
|
262
305
|
*/
|
|
263
306
|
private logTombstoneUsageTelemetry(
|
|
264
307
|
unrefEventProps: Omit<IUnreferencedEventProps, "state" | "usageType">,
|
|
308
|
+
// eslint-disable-next-line import/no-deprecated
|
|
265
309
|
nodeType: GCNodeType,
|
|
266
310
|
usageType: NodeUsageType,
|
|
267
311
|
packagePath?: readonly string[],
|
|
268
|
-
) {
|
|
312
|
+
): void {
|
|
269
313
|
// This will log the following events:
|
|
270
314
|
// GC_Tombstone_DataStore_Requested, GC_Tombstone_DataStore_Changed, GC_Tombstone_DataStore_Revived
|
|
271
315
|
// GC_Tombstone_SubDataStore_Requested, GC_Tombstone_SubDataStore_Changed, GC_Tombstone_SubDataStore_Revived
|
|
@@ -312,7 +356,7 @@ export class GCTelemetryTracker {
|
|
|
312
356
|
previousGCData: IGarbageCollectionData,
|
|
313
357
|
explicitReferences: Map<string, string[]>,
|
|
314
358
|
logger: ITelemetryLoggerExt,
|
|
315
|
-
) {
|
|
359
|
+
): void {
|
|
316
360
|
for (const [nodeId, currentOutboundRoutes] of Object.entries(currentGCData.gcNodes)) {
|
|
317
361
|
const previousRoutes = previousGCData.gcNodes[nodeId] ?? [];
|
|
318
362
|
const explicitRoutes = explicitReferences.get(nodeId) ?? [];
|
|
@@ -329,6 +373,7 @@ export class GCTelemetryTracker {
|
|
|
329
373
|
for (const route of currentOutboundRoutes) {
|
|
330
374
|
const nodeType = this.getNodeType(route);
|
|
331
375
|
if (
|
|
376
|
+
// eslint-disable-next-line import/no-deprecated
|
|
332
377
|
(nodeType === GCNodeType.DataStore || nodeType === GCNodeType.Blob) &&
|
|
333
378
|
!nodeId.startsWith(route) &&
|
|
334
379
|
!previousRoutes.includes(route) &&
|
|
@@ -356,7 +401,7 @@ export class GCTelemetryTracker {
|
|
|
356
401
|
* Log events that are pending in pendingEventsQueue. This is called after GC runs in the summarizer client
|
|
357
402
|
* so that the state of an unreferenced node is updated.
|
|
358
403
|
*/
|
|
359
|
-
public async logPendingEvents(logger: ITelemetryLoggerExt) {
|
|
404
|
+
public async logPendingEvents(logger: ITelemetryLoggerExt): Promise<void> {
|
|
360
405
|
// Events sent come only from the summarizer client. In between summaries, events are pushed to a queue and at
|
|
361
406
|
// summary time they are then logged.
|
|
362
407
|
// Events generated:
|
|
@@ -383,10 +428,8 @@ export class GCTelemetryTracker {
|
|
|
383
428
|
const active =
|
|
384
429
|
nodeStateTracker === undefined || nodeStateTracker.state === UnreferencedState.Active;
|
|
385
430
|
if ((usageType === "Revived") === active) {
|
|
386
|
-
const pkg = await this.getNodePackagePath(
|
|
387
|
-
const fromPkg =
|
|
388
|
-
? await this.getNodePackagePath(eventProps.fromId.value)
|
|
389
|
-
: undefined;
|
|
431
|
+
const pkg = await this.getNodePackagePath(id.value);
|
|
432
|
+
const fromPkg = fromId ? await this.getNodePackagePath(fromId.value) : undefined;
|
|
390
433
|
const event = {
|
|
391
434
|
eventName: `${state}Object_${usageType}`,
|
|
392
435
|
id,
|
|
@@ -8,7 +8,9 @@ import { validatePrecondition } from "@fluidframework/telemetry-utils/internal";
|
|
|
8
8
|
|
|
9
9
|
import { UnreferencedState } from "./gcDefinitions.js";
|
|
10
10
|
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* A wrapper around common-utils Timer that requires the timeout when calling start/restart
|
|
13
|
+
*/
|
|
12
14
|
class TimerWithNoDefaultTimeout extends Timer {
|
|
13
15
|
constructor(private readonly callback: () => void) {
|
|
14
16
|
// The default timeout/handlers will never be used since start/restart pass overrides below
|
|
@@ -17,7 +19,7 @@ class TimerWithNoDefaultTimeout extends Timer {
|
|
|
17
19
|
});
|
|
18
20
|
}
|
|
19
21
|
|
|
20
|
-
start(timeoutMs: number) {
|
|
22
|
+
start(timeoutMs: number): void {
|
|
21
23
|
super.start(timeoutMs, this.callback);
|
|
22
24
|
}
|
|
23
25
|
|
|
@@ -26,9 +28,13 @@ class TimerWithNoDefaultTimeout extends Timer {
|
|
|
26
28
|
}
|
|
27
29
|
}
|
|
28
30
|
|
|
29
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* The collection of UnreferencedStateTrackers for all unreferenced nodes. Ensures stopTracking is called when deleting
|
|
33
|
+
*/
|
|
30
34
|
export class UnreferencedStateTrackerMap extends Map<string, UnreferencedStateTracker> {
|
|
31
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Delete the given key, and stop tracking if that node was actually unreferenced
|
|
37
|
+
*/
|
|
32
38
|
delete(key: string): boolean {
|
|
33
39
|
// Stop tracking so as to clear out any running timers.
|
|
34
40
|
this.get(key)?.stopTracking();
|
|
@@ -47,22 +53,36 @@ export class UnreferencedStateTracker {
|
|
|
47
53
|
return this._state;
|
|
48
54
|
}
|
|
49
55
|
|
|
50
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Timer to indicate when an unreferenced object is considered Inactive
|
|
58
|
+
*/
|
|
51
59
|
private readonly inactiveTimer: TimerWithNoDefaultTimeout;
|
|
52
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Timer to indicate when an unreferenced object is Tombstone-Ready
|
|
62
|
+
*/
|
|
53
63
|
private readonly tombstoneTimer: TimerWithNoDefaultTimeout;
|
|
54
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Timer to indicate when an unreferenced object is Sweep-Ready
|
|
66
|
+
*/
|
|
55
67
|
private readonly sweepTimer: TimerWithNoDefaultTimeout;
|
|
56
68
|
|
|
57
69
|
constructor(
|
|
58
70
|
public readonly unreferencedTimestampMs: number,
|
|
59
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* The time after which node transitions to Inactive state.
|
|
73
|
+
*/
|
|
60
74
|
private readonly inactiveTimeoutMs: number,
|
|
61
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* The current reference timestamp used to track how long this node has been unreferenced for.
|
|
77
|
+
*/
|
|
62
78
|
currentReferenceTimestampMs: number,
|
|
63
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* The time after which node transitions to TombstoneReady state; undefined if session expiry is disabled.
|
|
81
|
+
*/
|
|
64
82
|
private readonly tombstoneTimeoutMs: number | undefined,
|
|
65
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* The delay from TombstoneReady to SweepReady (only applies if tombstoneTimeoutMs is defined)
|
|
85
|
+
*/
|
|
66
86
|
private readonly sweepGracePeriodMs: number,
|
|
67
87
|
) {
|
|
68
88
|
validatePrecondition(
|
|
@@ -106,8 +126,10 @@ export class UnreferencedStateTracker {
|
|
|
106
126
|
this.updateTracking(currentReferenceTimestampMs);
|
|
107
127
|
}
|
|
108
128
|
|
|
109
|
-
|
|
110
|
-
|
|
129
|
+
/**
|
|
130
|
+
* Updates the unreferenced state based on the provided timestamp.
|
|
131
|
+
*/
|
|
132
|
+
public updateTracking(currentReferenceTimestampMs: number): void {
|
|
111
133
|
const unreferencedDurationMs = currentReferenceTimestampMs - this.unreferencedTimestampMs;
|
|
112
134
|
|
|
113
135
|
// Below we will set the appropriate timer (or none). Any running timers are superceded by the new currentReferenceTimestampMs
|
|
@@ -151,14 +173,16 @@ export class UnreferencedStateTracker {
|
|
|
151
173
|
this.inactiveTimer.restart(this.inactiveTimeoutMs - unreferencedDurationMs);
|
|
152
174
|
}
|
|
153
175
|
|
|
154
|
-
private clearTimers() {
|
|
176
|
+
private clearTimers(): void {
|
|
155
177
|
this.inactiveTimer.clear();
|
|
156
178
|
this.tombstoneTimer.clear();
|
|
157
179
|
this.sweepTimer.clear();
|
|
158
180
|
}
|
|
159
181
|
|
|
160
|
-
/**
|
|
161
|
-
|
|
182
|
+
/**
|
|
183
|
+
* Stop tracking this node. Reset the unreferenced timers and state, if any.
|
|
184
|
+
*/
|
|
185
|
+
public stopTracking(): void {
|
|
162
186
|
this.clearTimers();
|
|
163
187
|
this._state = UnreferencedState.Active;
|
|
164
188
|
}
|