@fluidframework/container-runtime 2.0.0-dev.5.2.0.169897 → 2.0.0-dev.6.4.0.191258
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +147 -0
- package/README.md +4 -3
- package/dist/batchTracker.d.ts +3 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js +6 -5
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +15 -18
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +212 -171
- package/dist/blobManager.js.map +1 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +33 -17
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerRuntime.d.ts +172 -35
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +722 -425
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +15 -7
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +4 -4
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +87 -90
- 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 +10 -10
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js +2 -2
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/dataStores.d.ts +23 -7
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +125 -82
- package/dist/dataStores.js.map +1 -1
- package/dist/deltaManagerProxyBase.d.ts +35 -0
- package/dist/deltaManagerProxyBase.d.ts.map +1 -0
- package/dist/deltaManagerProxyBase.js +77 -0
- package/dist/deltaManagerProxyBase.js.map +1 -0
- package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +4 -2
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +10 -10
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.d.ts +14 -0
- package/dist/error.d.ts.map +1 -0
- package/dist/error.js +21 -0
- package/dist/error.js.map +1 -0
- package/dist/gc/garbageCollection.d.ts +10 -9
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +65 -56
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +18 -14
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +17 -5
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +14 -15
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +0 -8
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +11 -24
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +4 -7
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +19 -58
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +45 -35
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +4 -4
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +2 -2
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +3 -5
- package/dist/gc/index.js.map +1 -1
- package/dist/id-compressor/appendOnlySortedMap.d.ts +8 -30
- package/dist/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
- package/dist/id-compressor/appendOnlySortedMap.js +26 -68
- package/dist/id-compressor/appendOnlySortedMap.js.map +1 -1
- package/dist/id-compressor/finalSpace.d.ts +29 -0
- package/dist/id-compressor/finalSpace.d.ts.map +1 -0
- package/dist/id-compressor/finalSpace.js +62 -0
- package/dist/id-compressor/finalSpace.js.map +1 -0
- package/dist/id-compressor/idCompressor.d.ts +25 -250
- package/dist/id-compressor/idCompressor.d.ts.map +1 -1
- package/dist/id-compressor/idCompressor.js +390 -1153
- package/dist/id-compressor/idCompressor.js.map +1 -1
- package/dist/id-compressor/identifiers.d.ts +32 -0
- package/dist/id-compressor/identifiers.d.ts.map +1 -0
- package/dist/id-compressor/identifiers.js +15 -0
- package/dist/id-compressor/identifiers.js.map +1 -0
- package/dist/id-compressor/index.d.ts +5 -6
- package/dist/id-compressor/index.d.ts.map +1 -1
- package/dist/id-compressor/index.js +20 -26
- package/dist/id-compressor/index.js.map +1 -1
- package/dist/id-compressor/persistanceUtilities.d.ts +22 -0
- package/dist/id-compressor/persistanceUtilities.d.ts.map +1 -0
- package/dist/id-compressor/persistanceUtilities.js +43 -0
- package/dist/id-compressor/persistanceUtilities.js.map +1 -0
- package/dist/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
- package/dist/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
- package/dist/id-compressor/sessionSpaceNormalizer.js +80 -0
- package/dist/id-compressor/sessionSpaceNormalizer.js.map +1 -0
- package/dist/id-compressor/sessions.d.ts +115 -0
- package/dist/id-compressor/sessions.d.ts.map +1 -0
- package/dist/id-compressor/sessions.js +305 -0
- package/dist/id-compressor/sessions.js.map +1 -0
- package/dist/id-compressor/utilities.d.ts +49 -0
- package/dist/id-compressor/utilities.d.ts.map +1 -0
- package/dist/id-compressor/utilities.js +166 -0
- package/dist/id-compressor/utilities.js.map +1 -0
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -4
- package/dist/index.js.map +1 -1
- package/dist/metadata.d.ts +18 -0
- package/dist/metadata.d.ts.map +1 -0
- package/dist/metadata.js +7 -0
- package/dist/metadata.js.map +1 -0
- package/dist/opLifecycle/batchManager.d.ts +2 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +15 -7
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +11 -0
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +2 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +2 -2
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +12 -7
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +2 -2
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +30 -21
- 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 +19 -13
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +2 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +24 -19
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +39 -6
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +138 -61
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +6 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +22 -8
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.js +1 -2
- package/dist/opProperties.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +25 -10
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +101 -64
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +43 -33
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +4 -4
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +3 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +3 -3
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +26 -27
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +3 -3
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +31 -10
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +271 -139
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +8 -7
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +79 -78
- 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 +7 -11
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +10 -14
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +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 +40 -23
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +144 -149
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +25 -29
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -4
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +21 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +74 -123
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +44 -24
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +2 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +16 -13
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +4 -0
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +8 -5
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +21 -6
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +117 -54
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +8 -7
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +38 -28
- package/dist/summary/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +3 -2
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js +5 -4
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +15 -18
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +187 -146
- package/lib/blobManager.js.map +1 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +23 -7
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerRuntime.d.ts +172 -35
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +678 -380
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js +13 -5
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +4 -4
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +49 -52
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.d.ts +1 -1
- package/lib/dataStoreContexts.d.ts.map +1 -1
- package/lib/dataStoreContexts.js +3 -3
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/dataStores.d.ts +23 -7
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +107 -64
- package/lib/dataStores.js.map +1 -1
- package/lib/deltaManagerProxyBase.d.ts +35 -0
- package/lib/deltaManagerProxyBase.d.ts.map +1 -0
- package/lib/deltaManagerProxyBase.js +73 -0
- package/lib/deltaManagerProxyBase.js.map +1 -0
- package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/lib/deltaManagerSummarizerProxy.js +3 -1
- package/lib/deltaManagerSummarizerProxy.js.map +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +7 -7
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.d.ts +14 -0
- package/lib/error.d.ts.map +1 -0
- package/lib/error.js +17 -0
- package/lib/error.js.map +1 -0
- package/lib/gc/garbageCollection.d.ts +10 -9
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +61 -52
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +16 -12
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +17 -5
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +13 -14
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +0 -8
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +5 -17
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +4 -7
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +20 -59
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +46 -36
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +2 -2
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +2 -2
- package/lib/gc/index.js.map +1 -1
- package/lib/id-compressor/appendOnlySortedMap.d.ts +8 -30
- package/lib/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
- package/lib/id-compressor/appendOnlySortedMap.js +25 -66
- package/lib/id-compressor/appendOnlySortedMap.js.map +1 -1
- package/lib/id-compressor/finalSpace.d.ts +29 -0
- package/lib/id-compressor/finalSpace.d.ts.map +1 -0
- package/lib/id-compressor/finalSpace.js +58 -0
- package/lib/id-compressor/finalSpace.js.map +1 -0
- package/lib/id-compressor/idCompressor.d.ts +25 -250
- package/lib/id-compressor/idCompressor.d.ts.map +1 -1
- package/lib/id-compressor/idCompressor.js +385 -1142
- package/lib/id-compressor/idCompressor.js.map +1 -1
- package/lib/id-compressor/identifiers.d.ts +32 -0
- package/lib/id-compressor/identifiers.d.ts.map +1 -0
- package/lib/id-compressor/identifiers.js +11 -0
- package/lib/id-compressor/identifiers.js.map +1 -0
- package/lib/id-compressor/index.d.ts +5 -6
- package/lib/id-compressor/index.d.ts.map +1 -1
- package/lib/id-compressor/index.js +5 -6
- package/lib/id-compressor/index.js.map +1 -1
- package/lib/id-compressor/persistanceUtilities.d.ts +22 -0
- package/lib/id-compressor/persistanceUtilities.d.ts.map +1 -0
- package/lib/id-compressor/persistanceUtilities.js +34 -0
- package/lib/id-compressor/persistanceUtilities.js.map +1 -0
- package/lib/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
- package/lib/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
- package/lib/id-compressor/sessionSpaceNormalizer.js +76 -0
- package/lib/id-compressor/sessionSpaceNormalizer.js.map +1 -0
- package/lib/id-compressor/sessions.d.ts +115 -0
- package/lib/id-compressor/sessions.d.ts.map +1 -0
- package/lib/id-compressor/sessions.js +290 -0
- package/lib/id-compressor/sessions.js.map +1 -0
- package/lib/id-compressor/utilities.d.ts +49 -0
- package/lib/id-compressor/utilities.d.ts.map +1 -0
- package/lib/id-compressor/utilities.js +148 -0
- package/lib/id-compressor/utilities.js.map +1 -0
- package/lib/index.d.ts +3 -3
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -2
- package/lib/index.js.map +1 -1
- package/lib/metadata.d.ts +18 -0
- package/lib/metadata.d.ts.map +1 -0
- package/lib/metadata.js +6 -0
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/batchManager.d.ts +2 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +15 -7
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +11 -0
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +10 -5
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +22 -13
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +17 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +15 -10
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +39 -6
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +132 -56
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +6 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +23 -9
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.js +1 -2
- package/lib/opProperties.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +25 -10
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +90 -53
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +25 -15
- package/lib/scheduleManager.js.map +1 -1
- package/lib/summary/index.d.ts +4 -4
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js +2 -2
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +3 -3
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +21 -22
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +31 -10
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +265 -133
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +8 -7
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +75 -74
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +2 -2
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +6 -10
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +9 -13
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/index.d.ts +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 +40 -23
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +132 -137
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +25 -29
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -4
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +21 -16
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +70 -119
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +44 -24
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +2 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +9 -6
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +4 -0
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +7 -4
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +21 -6
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +109 -47
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.d.ts +8 -7
- package/lib/summary/summaryManager.d.ts.map +1 -1
- package/lib/summary/summaryManager.js +35 -25
- package/lib/summary/summaryManager.js.map +1 -1
- package/package.json +30 -32
- package/src/batchTracker.ts +7 -5
- package/src/blobManager.ts +235 -172
- package/src/connectionTelemetry.ts +19 -5
- package/src/containerRuntime.ts +853 -431
- package/src/dataStore.ts +12 -4
- package/src/dataStoreContext.ts +49 -46
- package/src/dataStoreContexts.ts +4 -4
- package/src/dataStoreRegistry.ts +1 -1
- package/src/dataStores.ts +119 -80
- package/src/deltaManagerProxyBase.ts +111 -0
- package/src/deltaManagerSummarizerProxy.ts +4 -1
- package/src/deltaScheduler.ts +7 -11
- package/src/error.ts +18 -0
- package/src/gc/garbageCollection.md +53 -5
- package/src/gc/garbageCollection.ts +58 -51
- package/src/gc/gcConfigs.ts +4 -2
- package/src/gc/gcDefinitions.ts +17 -21
- package/src/gc/gcEarlyAdoption.md +145 -0
- package/src/gc/gcHelpers.ts +1 -12
- package/src/gc/gcSummaryStateTracker.ts +19 -65
- package/src/gc/gcTelemetry.ts +15 -13
- package/src/gc/gcUnreferencedStateTracker.ts +1 -1
- package/src/gc/index.ts +2 -4
- package/src/id-compressor/appendOnlySortedMap.ts +26 -87
- package/src/id-compressor/finalSpace.ts +67 -0
- package/src/id-compressor/idCompressor.ts +458 -1682
- package/src/id-compressor/identifiers.ts +42 -0
- package/src/id-compressor/index.ts +11 -20
- package/src/id-compressor/persistanceUtilities.ts +58 -0
- package/src/id-compressor/sessionSpaceNormalizer.ts +83 -0
- package/src/id-compressor/sessions.ts +405 -0
- package/src/id-compressor/utilities.ts +187 -0
- package/src/index.ts +9 -2
- package/src/metadata.ts +19 -0
- package/src/opLifecycle/README.md +20 -0
- package/src/opLifecycle/batchManager.ts +9 -1
- package/src/opLifecycle/definitions.ts +11 -0
- package/src/opLifecycle/index.ts +1 -1
- package/src/opLifecycle/opCompressor.ts +6 -5
- package/src/opLifecycle/opDecompressor.ts +47 -17
- package/src/opLifecycle/opGroupingManager.ts +18 -8
- package/src/opLifecycle/opSplitter.ts +10 -7
- package/src/opLifecycle/outbox.ts +177 -72
- package/src/opLifecycle/remoteMessageProcessor.ts +32 -9
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +123 -78
- package/src/scheduleManager.ts +22 -11
- package/src/summary/index.ts +7 -4
- package/src/summary/orderedClientElection.ts +10 -6
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +291 -163
- package/src/summary/summarizer.ts +27 -16
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +1 -1
- package/src/summary/summarizerNode/index.ts +2 -2
- package/src/summary/summarizerNode/summarizerNode.ts +142 -184
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +27 -35
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +72 -148
- package/src/summary/summarizerTypes.ts +49 -24
- package/src/summary/summaryCollection.ts +9 -4
- package/src/summary/summaryFormat.ts +9 -2
- package/src/summary/summaryGenerator.ts +72 -49
- package/src/summary/summaryManager.ts +44 -16
- package/dist/id-compressor/idRange.d.ts +0 -11
- package/dist/id-compressor/idRange.d.ts.map +0 -1
- package/dist/id-compressor/idRange.js +0 -29
- package/dist/id-compressor/idRange.js.map +0 -1
- package/dist/id-compressor/numericUuid.d.ts +0 -59
- package/dist/id-compressor/numericUuid.d.ts.map +0 -1
- package/dist/id-compressor/numericUuid.js +0 -325
- package/dist/id-compressor/numericUuid.js.map +0 -1
- package/dist/id-compressor/sessionIdNormalizer.d.ts +0 -138
- package/dist/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
- package/dist/id-compressor/sessionIdNormalizer.js +0 -488
- package/dist/id-compressor/sessionIdNormalizer.js.map +0 -1
- package/dist/id-compressor/utils.d.ts +0 -57
- package/dist/id-compressor/utils.d.ts.map +0 -1
- package/dist/id-compressor/utils.js +0 -90
- package/dist/id-compressor/utils.js.map +0 -1
- package/dist/id-compressor/uuidUtilities.d.ts +0 -30
- package/dist/id-compressor/uuidUtilities.d.ts.map +0 -1
- package/dist/id-compressor/uuidUtilities.js +0 -106
- package/dist/id-compressor/uuidUtilities.js.map +0 -1
- package/lib/id-compressor/idRange.d.ts +0 -11
- package/lib/id-compressor/idRange.d.ts.map +0 -1
- package/lib/id-compressor/idRange.js +0 -25
- package/lib/id-compressor/idRange.js.map +0 -1
- package/lib/id-compressor/numericUuid.d.ts +0 -59
- package/lib/id-compressor/numericUuid.d.ts.map +0 -1
- package/lib/id-compressor/numericUuid.js +0 -315
- package/lib/id-compressor/numericUuid.js.map +0 -1
- package/lib/id-compressor/sessionIdNormalizer.d.ts +0 -138
- package/lib/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
- package/lib/id-compressor/sessionIdNormalizer.js +0 -484
- package/lib/id-compressor/sessionIdNormalizer.js.map +0 -1
- package/lib/id-compressor/utils.d.ts +0 -57
- package/lib/id-compressor/utils.d.ts.map +0 -1
- package/lib/id-compressor/utils.js +0 -79
- package/lib/id-compressor/utils.js.map +0 -1
- package/lib/id-compressor/uuidUtilities.d.ts +0 -30
- package/lib/id-compressor/uuidUtilities.d.ts.map +0 -1
- package/lib/id-compressor/uuidUtilities.js +0 -98
- package/lib/id-compressor/uuidUtilities.js.map +0 -1
- package/src/id-compressor/idRange.ts +0 -35
- package/src/id-compressor/numericUuid.ts +0 -383
- package/src/id-compressor/sessionIdNormalizer.ts +0 -609
- package/src/id-compressor/utils.ts +0 -114
- package/src/id-compressor/uuidUtilities.ts +0 -123
|
@@ -8,7 +8,7 @@ exports.createRootSummarizerNode = exports.SummarizerNode = void 0;
|
|
|
8
8
|
const runtime_definitions_1 = require("@fluidframework/runtime-definitions");
|
|
9
9
|
const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
|
|
10
10
|
const telemetry_utils_1 = require("@fluidframework/telemetry-utils");
|
|
11
|
-
const
|
|
11
|
+
const core_utils_1 = require("@fluidframework/core-utils");
|
|
12
12
|
const runtime_utils_1 = require("@fluidframework/runtime-utils");
|
|
13
13
|
const summarizerNodeUtils_1 = require("./summarizerNodeUtils");
|
|
14
14
|
/**
|
|
@@ -34,7 +34,6 @@ class SummarizerNode {
|
|
|
34
34
|
_latestSummary, initialSummary, wipSummaryLogger,
|
|
35
35
|
/** A unique id of this node to be logged when sending telemetry. */
|
|
36
36
|
telemetryNodeId) {
|
|
37
|
-
var _a;
|
|
38
37
|
this.summarizeInternalFn = summarizeInternalFn;
|
|
39
38
|
this._changeSequenceNumber = _changeSequenceNumber;
|
|
40
39
|
this._latestSummary = _latestSummary;
|
|
@@ -44,14 +43,12 @@ class SummarizerNode {
|
|
|
44
43
|
this.children = new Map();
|
|
45
44
|
this.pendingSummaries = new Map();
|
|
46
45
|
this.wipSkipRecursion = false;
|
|
47
|
-
this.canReuseHandle =
|
|
46
|
+
this.canReuseHandle = config.canReuseHandle ?? true;
|
|
48
47
|
// All logs posted by the summarizer node should include the telemetryNodeId.
|
|
49
|
-
this.logger = telemetry_utils_1.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
value: this.telemetryNodeId,
|
|
54
|
-
},
|
|
48
|
+
this.logger = (0, telemetry_utils_1.createChildLogger)({
|
|
49
|
+
logger: baseLogger,
|
|
50
|
+
properties: {
|
|
51
|
+
all: (0, telemetry_utils_1.tagCodeArtifacts)({ id: this.telemetryNodeId }),
|
|
55
52
|
},
|
|
56
53
|
});
|
|
57
54
|
}
|
|
@@ -60,12 +57,11 @@ class SummarizerNode {
|
|
|
60
57
|
* Returns 0 if there is not yet an acked summary.
|
|
61
58
|
*/
|
|
62
59
|
get referenceSequenceNumber() {
|
|
63
|
-
|
|
64
|
-
return (_b = (_a = this._latestSummary) === null || _a === void 0 ? void 0 : _a.referenceSequenceNumber) !== null && _b !== void 0 ? _b : 0;
|
|
60
|
+
return this._latestSummary?.referenceSequenceNumber ?? 0;
|
|
65
61
|
}
|
|
66
62
|
startSummary(referenceSequenceNumber, summaryLogger) {
|
|
67
|
-
(0,
|
|
68
|
-
(0,
|
|
63
|
+
(0, core_utils_1.assert)(this.wipSummaryLogger === undefined, 0x19f /* "wipSummaryLogger should not be set yet in startSummary" */);
|
|
64
|
+
(0, core_utils_1.assert)(this.wipReferenceSequenceNumber === undefined, 0x1a0 /* "Already tracking a summary" */);
|
|
69
65
|
this.wipSummaryLogger = summaryLogger;
|
|
70
66
|
for (const child of this.children.values()) {
|
|
71
67
|
child.startSummary(referenceSequenceNumber, this.wipSummaryLogger);
|
|
@@ -73,8 +69,8 @@ class SummarizerNode {
|
|
|
73
69
|
this.wipReferenceSequenceNumber = referenceSequenceNumber;
|
|
74
70
|
}
|
|
75
71
|
async summarize(fullTree, trackState = true, telemetryContext) {
|
|
76
|
-
(0,
|
|
77
|
-
(0,
|
|
72
|
+
(0, core_utils_1.assert)(this.isSummaryInProgress(), 0x1a1 /* "summarize should not be called when not tracking the summary" */);
|
|
73
|
+
(0, core_utils_1.assert)(this.wipSummaryLogger !== undefined, 0x1a2 /* "wipSummaryLogger should have been set in startSummary or ctor" */);
|
|
78
74
|
// Try to reuse the tree if unchanged
|
|
79
75
|
if (this.canReuseHandle && !fullTree && !this.hasChanged()) {
|
|
80
76
|
const latestSummary = this._latestSummary;
|
|
@@ -98,7 +94,7 @@ class SummarizerNode {
|
|
|
98
94
|
}
|
|
99
95
|
// This assert is the same the other 0a1x1 assert `isSummaryInProgress`, the only difference is that typescript
|
|
100
96
|
// complains if this assert isn't done this way
|
|
101
|
-
(0,
|
|
97
|
+
(0, core_utils_1.assert)(this.wipReferenceSequenceNumber !== undefined, 0x5df /* Summarize should not be called when not tracking the summary */);
|
|
102
98
|
const incrementalSummaryContext = this._latestSummary !== undefined
|
|
103
99
|
? {
|
|
104
100
|
summarySequenceNumber: this.wipReferenceSequenceNumber,
|
|
@@ -115,17 +111,97 @@ class SummarizerNode {
|
|
|
115
111
|
return { summary: result.summary, stats: result.stats };
|
|
116
112
|
}
|
|
117
113
|
/**
|
|
118
|
-
*
|
|
114
|
+
* Validates that the in-progress summary is correct, i.e., summarize should have run for all non-skipped
|
|
115
|
+
* nodes. This will only be called for the root summarizer node and is called by it recursively on all child nodes.
|
|
116
|
+
*
|
|
117
|
+
* @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.
|
|
118
|
+
* In case of failure, additional information is returned indicating type of failure and where it was.
|
|
119
119
|
*/
|
|
120
|
-
|
|
121
|
-
this.
|
|
120
|
+
validateSummary() {
|
|
121
|
+
return this.validateSummaryCore(false /* parentSkipRecursion */);
|
|
122
122
|
}
|
|
123
123
|
/**
|
|
124
|
-
*
|
|
124
|
+
* Validates that the in-progress summary is correct for all nodes, i.e., summarize should have run for all
|
|
125
|
+
* non-skipped nodes.
|
|
126
|
+
* @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.
|
|
127
|
+
* In that case, the children will not have work-in-progress state.
|
|
128
|
+
*
|
|
129
|
+
* @returns ValidateSummaryResult which contains a boolean success indicating whether the validation was successful.
|
|
130
|
+
* In case of failure, additional information is returned indicating type of failure and where it was.
|
|
125
131
|
*/
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
132
|
+
validateSummaryCore(parentSkipRecursion) {
|
|
133
|
+
if (this.wasSummarizeMissed(parentSkipRecursion)) {
|
|
134
|
+
return {
|
|
135
|
+
success: false,
|
|
136
|
+
reason: "NodeDidNotSummarize",
|
|
137
|
+
id: {
|
|
138
|
+
tag: telemetry_utils_1.TelemetryDataTag.CodeArtifact,
|
|
139
|
+
value: this.telemetryNodeId,
|
|
140
|
+
},
|
|
141
|
+
// These errors are usually transient and should go away when summarize is retried.
|
|
142
|
+
retryAfterSeconds: 1,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
if (parentSkipRecursion) {
|
|
146
|
+
return { success: true };
|
|
147
|
+
}
|
|
148
|
+
for (const child of this.children.values()) {
|
|
149
|
+
const result = child.validateSummaryCore(this.wipSkipRecursion || parentSkipRecursion);
|
|
150
|
+
// If any child fails, return the failure.
|
|
151
|
+
if (!result.success) {
|
|
152
|
+
return result;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return { success: true };
|
|
156
|
+
}
|
|
157
|
+
wasSummarizeMissed(parentSkipRecursion) {
|
|
158
|
+
(0, core_utils_1.assert)(this.wipSummaryLogger !== undefined, 0x6fc /* wipSummaryLogger should have been set in startSummary or ctor */);
|
|
159
|
+
(0, core_utils_1.assert)(this.wipReferenceSequenceNumber !== undefined, 0x6fd /* Not tracking a summary */);
|
|
160
|
+
// If the parent node skipped recursion, it did not call summarize on this node. So, summarize was not missed
|
|
161
|
+
// but was intentionally not called.
|
|
162
|
+
// Otherwise, summarize should have been called on this node and wipLocalPaths must be set.
|
|
163
|
+
if (parentSkipRecursion || this.wipLocalPaths !== undefined) {
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* The absence of wip local path indicates that summarize was not called for this node. Return failure.
|
|
168
|
+
* This can happen if:
|
|
169
|
+
* 1. A child node was created after summarize was already called on the parent. For example, a data store
|
|
170
|
+
* is realized (loaded) after summarize was called on it creating summarizer nodes for its DDSes. In this case,
|
|
171
|
+
* parentSkipRecursion will be true and the if block above would handle it.
|
|
172
|
+
* 2. A new node was created but summarize was never called on it. This can mean that the summary that is
|
|
173
|
+
* generated may not have the data from this node. We should not continue, log and throw an error. This
|
|
174
|
+
* will help us identify these cases and take appropriate action.
|
|
175
|
+
*
|
|
176
|
+
* This happens due to scenarios such as data store created during summarize. Such errors should go away when
|
|
177
|
+
* summarize is attempted again.
|
|
178
|
+
*/
|
|
179
|
+
return true;
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Called after summary has been uploaded to the server. Add the work-in-progress state to the pending summary
|
|
183
|
+
* queue. We track this until we get an ack from the server for this summary.
|
|
184
|
+
* @param proposalHandle - The handle of the summary that was uploaded to the server.
|
|
185
|
+
*/
|
|
186
|
+
completeSummary(proposalHandle, validate) {
|
|
187
|
+
this.completeSummaryCore(proposalHandle, undefined /* parentPath */, false /* parentSkipRecursion */, validate);
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Recursive implementation for completeSummary, with additional internal-only parameters.
|
|
191
|
+
* @param proposalHandle - The handle of the summary that was uploaded to the server.
|
|
192
|
+
* @param parentPath - The path of the parent node which is used to build the path of this node.
|
|
193
|
+
* @param parentSkipRecursion - true if the parent of this node skipped recursing the child nodes when summarizing.
|
|
194
|
+
* In that case, the children will not have work-in-progress state.
|
|
195
|
+
* @param validate - true to validate that the in-progress summary is correct for all nodes.
|
|
196
|
+
*/
|
|
197
|
+
completeSummaryCore(proposalHandle, parentPath, parentSkipRecursion, validate) {
|
|
198
|
+
if (validate && this.wasSummarizeMissed(parentSkipRecursion)) {
|
|
199
|
+
this.throwUnexpectedError({
|
|
200
|
+
eventName: "NodeDidNotSummarize",
|
|
201
|
+
proposalHandle,
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
(0, core_utils_1.assert)(this.wipReferenceSequenceNumber !== undefined, 0x1a4 /* "Not tracking a summary" */);
|
|
129
205
|
let localPathsToUse = this.wipLocalPaths;
|
|
130
206
|
if (parentSkipRecursion) {
|
|
131
207
|
const latestSummary = this._latestSummary;
|
|
@@ -152,25 +228,17 @@ class SummarizerNode {
|
|
|
152
228
|
return;
|
|
153
229
|
}
|
|
154
230
|
}
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
*/
|
|
164
|
-
if (localPathsToUse === undefined) {
|
|
165
|
-
this.throwUnexpectedError({
|
|
166
|
-
eventName: "NodeNotSummarized",
|
|
167
|
-
proposalHandle,
|
|
168
|
-
});
|
|
169
|
-
}
|
|
170
|
-
const summary = new summarizerNodeUtils_1.SummaryNode(Object.assign(Object.assign({}, localPathsToUse), { referenceSequenceNumber: this.wipReferenceSequenceNumber, basePath: parentPath }));
|
|
231
|
+
// If localPathsToUse is undefined, it means summarize didn't run for this node and in that case the validate
|
|
232
|
+
// step should have failed.
|
|
233
|
+
(0, core_utils_1.assert)(localPathsToUse !== undefined, 0x6fe /* summarize didn't run for node */);
|
|
234
|
+
const summary = new summarizerNodeUtils_1.SummaryNode({
|
|
235
|
+
...localPathsToUse,
|
|
236
|
+
referenceSequenceNumber: this.wipReferenceSequenceNumber,
|
|
237
|
+
basePath: parentPath,
|
|
238
|
+
});
|
|
171
239
|
const fullPathForChildren = summary.fullPathForChildren;
|
|
172
240
|
for (const child of this.children.values()) {
|
|
173
|
-
child.completeSummaryCore(proposalHandle, fullPathForChildren, this.wipSkipRecursion || parentSkipRecursion);
|
|
241
|
+
child.completeSummaryCore(proposalHandle, fullPathForChildren, this.wipSkipRecursion || parentSkipRecursion, validate);
|
|
174
242
|
}
|
|
175
243
|
// Note that this overwrites existing pending summary with
|
|
176
244
|
// the same proposalHandle. If proposalHandle is something like
|
|
@@ -192,26 +260,21 @@ class SummarizerNode {
|
|
|
192
260
|
}
|
|
193
261
|
/**
|
|
194
262
|
* Refreshes the latest summary tracked by this node. If we have a pending summary for the given proposal handle,
|
|
195
|
-
* it becomes the latest summary. If the current summary is already ahead
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
* @returns A RefreshSummaryResult type which returns information based on the following three scenarios:
|
|
199
|
-
*
|
|
200
|
-
* 1. The latest summary was not updated.
|
|
263
|
+
* it becomes the latest summary. If the current summary is already ahead, we skip the update.
|
|
264
|
+
* If the current summary is behind, then we do not refresh.
|
|
201
265
|
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
* 3. The latest summary was updated but the summary corresponding to the params was not tracked. In this
|
|
205
|
-
* case, the latest summary is updated based on the downloaded snapshot which is also returned.
|
|
266
|
+
* @returns true if the summary is tracked by this node, false otherwise.
|
|
206
267
|
*/
|
|
207
|
-
async refreshLatestSummary(proposalHandle, summaryRefSeq
|
|
268
|
+
async refreshLatestSummary(proposalHandle, summaryRefSeq) {
|
|
208
269
|
const eventProps = {
|
|
209
270
|
proposalHandle,
|
|
210
271
|
summaryRefSeq,
|
|
211
272
|
referenceSequenceNumber: this.referenceSequenceNumber,
|
|
212
273
|
};
|
|
213
|
-
return telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger,
|
|
214
|
-
|
|
274
|
+
return telemetry_utils_1.PerformanceEvent.timedExecAsync(this.logger, {
|
|
275
|
+
eventName: "refreshLatestSummary",
|
|
276
|
+
...eventProps,
|
|
277
|
+
}, async (event) => {
|
|
215
278
|
// Refresh latest summary should not happen while a summary is in progress. If it does, it can result
|
|
216
279
|
// in inconsistent state, so, we should not continue;
|
|
217
280
|
if (this.isSummaryInProgress()) {
|
|
@@ -219,57 +282,18 @@ class SummarizerNode {
|
|
|
219
282
|
inProgressSummaryRefSeq: this.wipReferenceSequenceNumber,
|
|
220
283
|
});
|
|
221
284
|
}
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
eventProps.wasSummaryTracked = true;
|
|
227
|
-
eventProps.latestSummaryUpdated = true;
|
|
228
|
-
event.end(eventProps);
|
|
229
|
-
return {
|
|
230
|
-
latestSummaryUpdated: true,
|
|
231
|
-
wasSummaryTracked: true,
|
|
232
|
-
summaryRefSeq,
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
const props = {
|
|
236
|
-
summaryRefSeq,
|
|
237
|
-
pendingSize: (_a = this.pendingSummaries.size) !== null && _a !== void 0 ? _a : undefined,
|
|
238
|
-
};
|
|
239
|
-
this.logger.sendTelemetryEvent({
|
|
240
|
-
eventName: "PendingSummaryNotFound",
|
|
241
|
-
proposalHandle,
|
|
242
|
-
referenceSequenceNumber: this.referenceSequenceNumber,
|
|
243
|
-
details: JSON.stringify(props),
|
|
244
|
-
});
|
|
285
|
+
let isSummaryTracked = false;
|
|
286
|
+
let isSummaryNewer = false;
|
|
287
|
+
if (summaryRefSeq > this.referenceSequenceNumber) {
|
|
288
|
+
isSummaryNewer = true;
|
|
245
289
|
}
|
|
246
|
-
|
|
247
|
-
if (
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
return { latestSummaryUpdated: false };
|
|
290
|
+
const maybeSummaryNode = this.pendingSummaries.get(proposalHandle);
|
|
291
|
+
if (maybeSummaryNode !== undefined) {
|
|
292
|
+
this.refreshLatestSummaryFromPending(proposalHandle, maybeSummaryNode.referenceSequenceNumber);
|
|
293
|
+
isSummaryTracked = true;
|
|
251
294
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
const { snapshotTree, snapshotRefSeq: fetchedSnapshotRefSeq } = await fetchLatestSnapshot();
|
|
255
|
-
// Possible re-entrancy. We may have updated latest summary state while fetching the snapshot. If the fetched
|
|
256
|
-
// snapshot is older than the latest tracked summary, ignore it.
|
|
257
|
-
if (this.referenceSequenceNumber >= fetchedSnapshotRefSeq) {
|
|
258
|
-
eventProps.latestSummaryUpdated = false;
|
|
259
|
-
event.end(eventProps);
|
|
260
|
-
return { latestSummaryUpdated: false };
|
|
261
|
-
}
|
|
262
|
-
await this.refreshLatestSummaryFromSnapshot(fetchedSnapshotRefSeq, snapshotTree, undefined, summarizerNodeUtils_1.EscapedPath.create(""), correlatedSummaryLogger, readAndParseBlob);
|
|
263
|
-
eventProps.latestSummaryUpdated = true;
|
|
264
|
-
eventProps.wasSummaryTracked = false;
|
|
265
|
-
eventProps.summaryRefSeq = fetchedSnapshotRefSeq;
|
|
266
|
-
event.end(eventProps);
|
|
267
|
-
return {
|
|
268
|
-
latestSummaryUpdated: true,
|
|
269
|
-
wasSummaryTracked: false,
|
|
270
|
-
snapshotTree,
|
|
271
|
-
summaryRefSeq: fetchedSnapshotRefSeq,
|
|
272
|
-
};
|
|
295
|
+
event.end({ ...eventProps, isSummaryNewer, pendingSummaryFound: isSummaryTracked });
|
|
296
|
+
return { isSummaryTracked, isSummaryNewer };
|
|
273
297
|
}, { start: true, end: true, cancel: "error" });
|
|
274
298
|
}
|
|
275
299
|
/**
|
|
@@ -282,11 +306,11 @@ class SummarizerNode {
|
|
|
282
306
|
const summaryNode = this.pendingSummaries.get(proposalHandle);
|
|
283
307
|
if (summaryNode === undefined) {
|
|
284
308
|
// This should only happen if parent skipped recursion AND no prior summary existed.
|
|
285
|
-
(0,
|
|
309
|
+
(0, core_utils_1.assert)(this._latestSummary === undefined, 0x1a6 /* "Not found pending summary, but this node has previously completed a summary" */);
|
|
286
310
|
return;
|
|
287
311
|
}
|
|
288
312
|
else {
|
|
289
|
-
(0,
|
|
313
|
+
(0, core_utils_1.assert)(referenceSequenceNumber === summaryNode.referenceSequenceNumber, 0x1a7 /* Pending summary reference sequence number should be consistent */);
|
|
290
314
|
// Clear earlier pending summaries
|
|
291
315
|
this.pendingSummaries.delete(proposalHandle);
|
|
292
316
|
}
|
|
@@ -297,37 +321,6 @@ class SummarizerNode {
|
|
|
297
321
|
child.refreshLatestSummaryFromPending(proposalHandle, referenceSequenceNumber);
|
|
298
322
|
}
|
|
299
323
|
}
|
|
300
|
-
async refreshLatestSummaryFromSnapshot(referenceSequenceNumber, snapshotTree, basePath, localPath, correlatedSummaryLogger, readAndParseBlob) {
|
|
301
|
-
// Possible re-entrancy. If we have already seen a summary later than this one, ignore it.
|
|
302
|
-
if (this.referenceSequenceNumber >= referenceSequenceNumber) {
|
|
303
|
-
return;
|
|
304
|
-
}
|
|
305
|
-
this.refreshLatestSummaryCore(referenceSequenceNumber);
|
|
306
|
-
this._latestSummary = new summarizerNodeUtils_1.SummaryNode({
|
|
307
|
-
referenceSequenceNumber,
|
|
308
|
-
basePath,
|
|
309
|
-
localPath,
|
|
310
|
-
});
|
|
311
|
-
const pathParts = [];
|
|
312
|
-
const { childrenTree, childrenPathPart } = (0, summarizerNodeUtils_1.parseSummaryForSubtrees)(snapshotTree);
|
|
313
|
-
if (childrenPathPart !== undefined) {
|
|
314
|
-
pathParts.push(childrenPathPart);
|
|
315
|
-
}
|
|
316
|
-
if (pathParts.length > 0) {
|
|
317
|
-
this._latestSummary.additionalPath = summarizerNodeUtils_1.EscapedPath.createAndConcat(pathParts);
|
|
318
|
-
}
|
|
319
|
-
// Propagate update to all child nodes
|
|
320
|
-
const pathForChildren = this._latestSummary.fullPathForChildren;
|
|
321
|
-
await Promise.all(Array.from(this.children)
|
|
322
|
-
.filter(([id]) => {
|
|
323
|
-
// Assuming subtrees missing from snapshot are newer than the snapshot,
|
|
324
|
-
// but might be nice to assert this using earliest seq for node.
|
|
325
|
-
return childrenTree.trees[id] !== undefined;
|
|
326
|
-
})
|
|
327
|
-
.map(async ([id, child]) => {
|
|
328
|
-
return child.refreshLatestSummaryFromSnapshot(referenceSequenceNumber, childrenTree.trees[id], pathForChildren, summarizerNodeUtils_1.EscapedPath.create(id), correlatedSummaryLogger, readAndParseBlob);
|
|
329
|
-
}));
|
|
330
|
-
}
|
|
331
324
|
refreshLatestSummaryCore(referenceSequenceNumber) {
|
|
332
325
|
for (const [key, value] of this.pendingSummaries) {
|
|
333
326
|
if (value.referenceSequenceNumber < referenceSequenceNumber) {
|
|
@@ -373,7 +366,7 @@ class SummarizerNode {
|
|
|
373
366
|
* Attach information if it is created from an attach op.
|
|
374
367
|
*/
|
|
375
368
|
createParam, config = {}) {
|
|
376
|
-
(0,
|
|
369
|
+
(0, core_utils_1.assert)(!this.children.has(id), 0x1ab /* "Create SummarizerNode child already exists" */);
|
|
377
370
|
const createDetails = this.getCreateDetailsForChild(id, createParam);
|
|
378
371
|
const child = new SummarizerNode(this.logger, summarizeInternalFn, config, createDetails.changeSequenceNumber, createDetails.latestSummary, createDetails.initialSummary, this.wipSummaryLogger, createDetails.telemetryNodeId);
|
|
379
372
|
// There may be additional state that has to be updated in this child. For example, if a summary is being
|
|
@@ -393,7 +386,6 @@ class SummarizerNode {
|
|
|
393
386
|
* @returns the details needed to create the child node.
|
|
394
387
|
*/
|
|
395
388
|
getCreateDetailsForChild(id, createParam) {
|
|
396
|
-
var _a, _b;
|
|
397
389
|
let initialSummary;
|
|
398
390
|
let latestSummary;
|
|
399
391
|
let changeSequenceNumber;
|
|
@@ -418,7 +410,7 @@ class SummarizerNode {
|
|
|
418
410
|
}
|
|
419
411
|
case runtime_definitions_1.CreateSummarizerNodeSource.FromSummary: {
|
|
420
412
|
if (this.initialSummary === undefined) {
|
|
421
|
-
(0,
|
|
413
|
+
(0, core_utils_1.assert)(!!parentLatestSummary, 0x1ac /* "Cannot create child from summary if parent does not have latest summary" */);
|
|
422
414
|
}
|
|
423
415
|
// fallthrough to local
|
|
424
416
|
}
|
|
@@ -428,16 +420,16 @@ class SummarizerNode {
|
|
|
428
420
|
let childSummary;
|
|
429
421
|
if (parentInitialSummary.summary !== undefined) {
|
|
430
422
|
const { childrenTree } = (0, summarizerNodeUtils_1.parseSummaryTreeForSubtrees)(parentInitialSummary.summary.summary);
|
|
431
|
-
(0,
|
|
423
|
+
(0, core_utils_1.assert)(childrenTree.type === protocol_definitions_1.SummaryType.Tree, 0x1d6 /* "Parent summary object is not a tree" */);
|
|
432
424
|
childSummary = childrenTree.tree[id];
|
|
433
425
|
}
|
|
434
426
|
if (createParam.type === runtime_definitions_1.CreateSummarizerNodeSource.FromSummary) {
|
|
435
427
|
// Locally created would not have differential subtree.
|
|
436
|
-
(0,
|
|
428
|
+
(0, core_utils_1.assert)(!!childSummary, 0x1ad /* "Missing child summary tree" */);
|
|
437
429
|
}
|
|
438
430
|
let childSummaryWithStats;
|
|
439
431
|
if (childSummary !== undefined) {
|
|
440
|
-
(0,
|
|
432
|
+
(0, core_utils_1.assert)(childSummary.type === protocol_definitions_1.SummaryType.Tree, 0x1ae /* "Child summary object is not a tree" */);
|
|
441
433
|
childSummaryWithStats = {
|
|
442
434
|
summary: childSummary,
|
|
443
435
|
stats: (0, runtime_utils_1.calculateStats)(childSummary),
|
|
@@ -449,16 +441,16 @@ class SummarizerNode {
|
|
|
449
441
|
summary: childSummaryWithStats,
|
|
450
442
|
};
|
|
451
443
|
}
|
|
452
|
-
latestSummary = parentLatestSummary
|
|
453
|
-
changeSequenceNumber =
|
|
444
|
+
latestSummary = parentLatestSummary?.createForChild(id);
|
|
445
|
+
changeSequenceNumber = parentLatestSummary?.referenceSequenceNumber ?? -1;
|
|
454
446
|
break;
|
|
455
447
|
}
|
|
456
448
|
default: {
|
|
457
449
|
const type = createParam.type;
|
|
458
|
-
(0,
|
|
450
|
+
(0, core_utils_1.unreachableCase)(createParam, `Unexpected CreateSummarizerNodeSource: ${type}`);
|
|
459
451
|
}
|
|
460
452
|
}
|
|
461
|
-
const childtelemetryNodeId = `${
|
|
453
|
+
const childtelemetryNodeId = `${this.telemetryNodeId ?? ""}/${id}`;
|
|
462
454
|
return {
|
|
463
455
|
initialSummary,
|
|
464
456
|
latestSummary,
|
|
@@ -506,10 +498,13 @@ class SummarizerNode {
|
|
|
506
498
|
* Creates and throws an error due to unexpected conditions.
|
|
507
499
|
*/
|
|
508
500
|
throwUnexpectedError(eventProps) {
|
|
509
|
-
const error = new telemetry_utils_1.LoggingError(eventProps.eventName,
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
501
|
+
const error = new telemetry_utils_1.LoggingError(eventProps.eventName, {
|
|
502
|
+
...eventProps,
|
|
503
|
+
referenceSequenceNumber: this.wipReferenceSequenceNumber,
|
|
504
|
+
...(0, telemetry_utils_1.tagCodeArtifacts)({
|
|
505
|
+
id: this.telemetryNodeId,
|
|
506
|
+
}),
|
|
507
|
+
});
|
|
513
508
|
this.logger.sendErrorEvent(eventProps, error);
|
|
514
509
|
throw error;
|
|
515
510
|
}
|