@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
|
@@ -7,22 +7,22 @@ import {
|
|
|
7
7
|
ITelemetryLoggerExt,
|
|
8
8
|
PerformanceEvent,
|
|
9
9
|
LoggingError,
|
|
10
|
-
ChildLogger,
|
|
11
10
|
} from "@fluidframework/telemetry-utils";
|
|
11
|
+
import { ITelemetryProperties } from "@fluidframework/core-interfaces";
|
|
12
|
+
|
|
12
13
|
import {
|
|
13
14
|
assert,
|
|
14
15
|
Deferred,
|
|
15
16
|
IPromiseTimer,
|
|
16
17
|
IPromiseTimerResult,
|
|
17
18
|
Timer,
|
|
18
|
-
} from "@fluidframework/
|
|
19
|
+
} from "@fluidframework/core-utils";
|
|
19
20
|
import { MessageType } from "@fluidframework/protocol-definitions";
|
|
20
21
|
import { getRetryDelaySecondsFromError } from "@fluidframework/driver-utils";
|
|
21
|
-
import {
|
|
22
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
22
23
|
import {
|
|
23
24
|
IAckSummaryResult,
|
|
24
25
|
INackSummaryResult,
|
|
25
|
-
ISummarizeOptions,
|
|
26
26
|
IBroadcastSummaryResult,
|
|
27
27
|
ISummarizeResults,
|
|
28
28
|
ISummarizeHeuristicData,
|
|
@@ -30,8 +30,8 @@ import {
|
|
|
30
30
|
SubmitSummaryResult,
|
|
31
31
|
SummarizeResultPart,
|
|
32
32
|
ISummaryCancellationToken,
|
|
33
|
-
ISummarizeTelemetryProperties,
|
|
34
33
|
SummaryGeneratorTelemetry,
|
|
34
|
+
SubmitSummaryFailureData,
|
|
35
35
|
} from "./summarizerTypes";
|
|
36
36
|
import { IClientSummaryWatcher } from "./summaryCollection";
|
|
37
37
|
|
|
@@ -129,7 +129,9 @@ export const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
|
|
|
129
129
|
`${errorCode}: ${summarizeErrors[errorCode]}`;
|
|
130
130
|
|
|
131
131
|
export class SummarizeResultBuilder {
|
|
132
|
-
public readonly summarySubmitted = new Deferred<
|
|
132
|
+
public readonly summarySubmitted = new Deferred<
|
|
133
|
+
SummarizeResultPart<SubmitSummaryResult, SubmitSummaryFailureData>
|
|
134
|
+
>();
|
|
133
135
|
public readonly summaryOpBroadcasted = new Deferred<
|
|
134
136
|
SummarizeResultPart<IBroadcastSummaryResult>
|
|
135
137
|
>();
|
|
@@ -137,11 +139,17 @@ export class SummarizeResultBuilder {
|
|
|
137
139
|
SummarizeResultPart<IAckSummaryResult, INackSummaryResult>
|
|
138
140
|
>();
|
|
139
141
|
|
|
142
|
+
/**
|
|
143
|
+
* Fails one or more of the three results as per the passed params.
|
|
144
|
+
* If submit fails, all three results fail.
|
|
145
|
+
* If op broadcast fails, only op broadcast result and ack nack result fails.
|
|
146
|
+
* If ack nack fails, only ack nack result fails.
|
|
147
|
+
*/
|
|
140
148
|
public fail(
|
|
141
149
|
message: string,
|
|
142
150
|
error: any,
|
|
151
|
+
submitFailureResult?: SubmitSummaryFailureData,
|
|
143
152
|
nackSummaryResult?: INackSummaryResult,
|
|
144
|
-
retryAfterSeconds?: number,
|
|
145
153
|
) {
|
|
146
154
|
assert(
|
|
147
155
|
!this.receivedSummaryAckOrNack.isCompleted,
|
|
@@ -153,9 +161,11 @@ export class SummarizeResultBuilder {
|
|
|
153
161
|
message,
|
|
154
162
|
data: undefined,
|
|
155
163
|
error,
|
|
156
|
-
retryAfterSeconds,
|
|
157
164
|
} as const;
|
|
158
|
-
|
|
165
|
+
|
|
166
|
+
// Note that if any of these are already resolved, it will be a no-op. For example, if ack nack failed but
|
|
167
|
+
// submit summary and op broadcast has already been resolved as passed, only ack nack result will get modified.
|
|
168
|
+
this.summarySubmitted.resolve({ ...result, data: submitFailureResult });
|
|
159
169
|
this.summaryOpBroadcasted.resolve(result);
|
|
160
170
|
this.receivedSummaryAckOrNack.resolve({ ...result, data: nackSummaryResult });
|
|
161
171
|
}
|
|
@@ -168,6 +178,20 @@ export class SummarizeResultBuilder {
|
|
|
168
178
|
}
|
|
169
179
|
}
|
|
170
180
|
|
|
181
|
+
/**
|
|
182
|
+
* Errors type for errors hit during summary that may be retriable.
|
|
183
|
+
*/
|
|
184
|
+
export class RetriableSummaryError extends LoggingError {
|
|
185
|
+
public readonly canRetry = this.retryAfterSeconds !== undefined;
|
|
186
|
+
constructor(
|
|
187
|
+
message: string,
|
|
188
|
+
public readonly retryAfterSeconds?: number,
|
|
189
|
+
props?: ITelemetryProperties,
|
|
190
|
+
) {
|
|
191
|
+
super(message, props);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
|
|
171
195
|
/**
|
|
172
196
|
* This class generates and tracks a summary attempt.
|
|
173
197
|
*/
|
|
@@ -196,30 +220,23 @@ export class SummaryGenerator {
|
|
|
196
220
|
* fullTree to generate tree without any summary handles even if unchanged
|
|
197
221
|
*/
|
|
198
222
|
public summarize(
|
|
199
|
-
|
|
200
|
-
options: ISummarizeOptions,
|
|
201
|
-
cancellationToken: ISummaryCancellationToken,
|
|
223
|
+
summaryOptions: ISubmitSummaryOptions,
|
|
202
224
|
resultsBuilder = new SummarizeResultBuilder(),
|
|
203
225
|
): ISummarizeResults {
|
|
204
|
-
this.summarizeCore(
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
},
|
|
210
|
-
);
|
|
226
|
+
this.summarizeCore(summaryOptions, resultsBuilder).catch((error) => {
|
|
227
|
+
const message = "UnexpectedSummarizeError";
|
|
228
|
+
summaryOptions.summaryLogger.sendErrorEvent({ eventName: message }, error);
|
|
229
|
+
resultsBuilder.fail(message, error);
|
|
230
|
+
});
|
|
211
231
|
|
|
212
232
|
return resultsBuilder.build();
|
|
213
233
|
}
|
|
214
234
|
|
|
215
235
|
private async summarizeCore(
|
|
216
|
-
|
|
217
|
-
options: ISummarizeOptions,
|
|
236
|
+
submitSummaryOptions: ISubmitSummaryOptions,
|
|
218
237
|
resultsBuilder: SummarizeResultBuilder,
|
|
219
|
-
cancellationToken: ISummaryCancellationToken,
|
|
220
238
|
): Promise<void> {
|
|
221
|
-
const {
|
|
222
|
-
const logger = ChildLogger.create(this.logger, undefined, { all: summarizeProps });
|
|
239
|
+
const { summaryLogger, cancellationToken, ...summarizeOptions } = submitSummaryOptions;
|
|
223
240
|
|
|
224
241
|
// Note: timeSinceLastAttempt and timeSinceLastSummary for the
|
|
225
242
|
// first summary are basically the time since the summarizer was loaded.
|
|
@@ -227,36 +244,40 @@ export class SummaryGenerator {
|
|
|
227
244
|
const timeSinceLastSummary =
|
|
228
245
|
Date.now() - this.heuristicData.lastSuccessfulSummary.summaryTime;
|
|
229
246
|
let summarizeTelemetryProps: SummaryGeneratorTelemetry = {
|
|
230
|
-
|
|
247
|
+
...summarizeOptions,
|
|
248
|
+
fullTree: summarizeOptions.fullTree ?? false,
|
|
231
249
|
timeSinceLastAttempt,
|
|
232
250
|
timeSinceLastSummary,
|
|
233
251
|
};
|
|
234
252
|
|
|
235
253
|
const summarizeEvent = PerformanceEvent.start(
|
|
236
|
-
|
|
254
|
+
summaryLogger,
|
|
237
255
|
{
|
|
238
256
|
eventName: "Summarize",
|
|
239
|
-
refreshLatestAck,
|
|
240
257
|
...summarizeTelemetryProps,
|
|
241
258
|
},
|
|
242
259
|
{ start: true, end: true, cancel: "generic" },
|
|
243
260
|
);
|
|
244
261
|
|
|
262
|
+
let summaryData: SubmitSummaryResult | undefined;
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* Summarization can fail during submit, during op broadcast or during nack.
|
|
266
|
+
* For submit failures, submitFailureResult should be provided. For nack failures, nackSummaryResult should
|
|
267
|
+
* be provided. For op broadcast failures, only errors / properties should be provided.
|
|
268
|
+
*/
|
|
245
269
|
const fail = (
|
|
246
270
|
errorCode: keyof typeof summarizeErrors,
|
|
247
271
|
error?: any,
|
|
248
272
|
properties?: SummaryGeneratorTelemetry,
|
|
273
|
+
submitFailureResult?: SubmitSummaryFailureData,
|
|
249
274
|
nackSummaryResult?: INackSummaryResult,
|
|
250
275
|
) => {
|
|
251
|
-
// UploadSummary may fail with 429 and retryAfter - respect that
|
|
252
|
-
// Summary Nack also can have retryAfter, it's parsed below and comes as a property.
|
|
253
|
-
const retryAfterSeconds = getRetryDelaySecondsFromError(error);
|
|
254
|
-
|
|
255
276
|
// Report any failure as an error unless it was due to cancellation (like "disconnected" error)
|
|
256
277
|
// If failure happened on upload, we may not yet realized that socket disconnected, so check
|
|
257
278
|
// offlineError too.
|
|
258
279
|
const category =
|
|
259
|
-
cancellationToken.cancelled || error?.errorType ===
|
|
280
|
+
cancellationToken.cancelled || error?.errorType === DriverErrorTypes.offlineError
|
|
260
281
|
? "generic"
|
|
261
282
|
: "error";
|
|
262
283
|
|
|
@@ -266,28 +287,23 @@ export class SummaryGenerator {
|
|
|
266
287
|
...properties,
|
|
267
288
|
reason,
|
|
268
289
|
category,
|
|
269
|
-
retryAfterSeconds
|
|
290
|
+
retryAfterSeconds:
|
|
291
|
+
submitFailureResult?.retryAfterSeconds ??
|
|
292
|
+
nackSummaryResult?.retryAfterSeconds,
|
|
270
293
|
},
|
|
271
294
|
error ?? reason,
|
|
272
295
|
); // disconnect & summaryAckTimeout do not have proper error.
|
|
273
|
-
|
|
296
|
+
|
|
297
|
+
resultsBuilder.fail(reason, error, submitFailureResult, nackSummaryResult);
|
|
274
298
|
};
|
|
275
299
|
|
|
276
300
|
// Wait to generate and send summary
|
|
277
301
|
this.summarizeTimer.start();
|
|
278
|
-
|
|
279
|
-
// Use record type to prevent unexpected value types
|
|
280
|
-
let summaryData: SubmitSummaryResult | undefined;
|
|
281
302
|
try {
|
|
282
303
|
// Need to save refSeqNum before we record new attempt (happens as part of submitSummaryCallback)
|
|
283
304
|
const lastAttemptRefSeqNum = this.heuristicData.lastAttempt.refSequenceNumber;
|
|
284
305
|
|
|
285
|
-
summaryData = await this.submitSummaryCallback(
|
|
286
|
-
fullTree,
|
|
287
|
-
refreshLatestAck,
|
|
288
|
-
summaryLogger: logger,
|
|
289
|
-
cancellationToken,
|
|
290
|
-
});
|
|
306
|
+
summaryData = await this.submitSummaryCallback(submitSummaryOptions);
|
|
291
307
|
|
|
292
308
|
// Cumulatively add telemetry properties based on how far generateSummary went.
|
|
293
309
|
const referenceSequenceNumber = summaryData.referenceSequenceNumber;
|
|
@@ -307,7 +323,10 @@ export class SummaryGenerator {
|
|
|
307
323
|
);
|
|
308
324
|
|
|
309
325
|
if (summaryData.stage !== "submit") {
|
|
310
|
-
return fail("submitSummaryFailure", summaryData.error, summarizeTelemetryProps
|
|
326
|
+
return fail("submitSummaryFailure", summaryData.error, summarizeTelemetryProps, {
|
|
327
|
+
stage: summaryData.stage,
|
|
328
|
+
retryAfterSeconds: getRetryDelaySecondsFromError(summaryData.error),
|
|
329
|
+
});
|
|
311
330
|
}
|
|
312
331
|
|
|
313
332
|
/**
|
|
@@ -320,14 +339,14 @@ export class SummaryGenerator {
|
|
|
320
339
|
* state change of multiple data stores. So, the total number of data stores that are summarized should not
|
|
321
340
|
* exceed the number of ops since last summary + number of data store whose reference state changed.
|
|
322
341
|
*/
|
|
323
|
-
if (!fullTree && !summaryData.forcedFullTree) {
|
|
342
|
+
if (!submitSummaryOptions.fullTree && !summaryData.forcedFullTree) {
|
|
324
343
|
const { summarizedDataStoreCount, gcStateUpdatedDataStoreCount = 0 } =
|
|
325
344
|
summaryData.summaryStats;
|
|
326
345
|
if (
|
|
327
346
|
summarizedDataStoreCount >
|
|
328
347
|
gcStateUpdatedDataStoreCount + this.heuristicData.opsSinceLastSummary
|
|
329
348
|
) {
|
|
330
|
-
|
|
349
|
+
summaryLogger.sendErrorEvent({
|
|
331
350
|
eventName: "IncrementalSummaryViolation",
|
|
332
351
|
summarizedDataStoreCount,
|
|
333
352
|
gcStateUpdatedDataStoreCount,
|
|
@@ -340,7 +359,10 @@ export class SummaryGenerator {
|
|
|
340
359
|
summarizeEvent.reportEvent("generate", { ...summarizeTelemetryProps });
|
|
341
360
|
resultsBuilder.summarySubmitted.resolve({ success: true, data: summaryData });
|
|
342
361
|
} catch (error) {
|
|
343
|
-
return fail("submitSummaryFailure", error
|
|
362
|
+
return fail("submitSummaryFailure", error, undefined /* properties */, {
|
|
363
|
+
stage: "unknown",
|
|
364
|
+
retryAfterSeconds: getRetryDelaySecondsFromError(error),
|
|
365
|
+
});
|
|
344
366
|
} finally {
|
|
345
367
|
if (summaryData === undefined) {
|
|
346
368
|
this.heuristicData.recordAttempt();
|
|
@@ -373,7 +395,7 @@ export class SummaryGenerator {
|
|
|
373
395
|
});
|
|
374
396
|
|
|
375
397
|
this.heuristicData.lastAttempt.summarySequenceNumber = summarizeOp.sequenceNumber;
|
|
376
|
-
|
|
398
|
+
summaryLogger.sendTelemetryEvent({
|
|
377
399
|
eventName: "Summarize_Op",
|
|
378
400
|
duration: broadcastDuration,
|
|
379
401
|
referenceSequenceNumber: summarizeOp.referenceSequenceNumber,
|
|
@@ -442,7 +464,8 @@ export class SummaryGenerator {
|
|
|
442
464
|
"summaryNack",
|
|
443
465
|
error,
|
|
444
466
|
{ ...summarizeTelemetryProps, nackRetryAfter: retryAfterSeconds },
|
|
445
|
-
|
|
467
|
+
undefined /* submitFailureResult */,
|
|
468
|
+
{ summaryNackOp: ackNackOp, ackNackDuration, retryAfterSeconds },
|
|
446
469
|
);
|
|
447
470
|
}
|
|
448
471
|
} finally {
|
|
@@ -3,17 +3,32 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { IDisposable, IEvent, IEventProvider } from "@fluidframework/common-definitions";
|
|
7
|
-
import { assert } from "@fluidframework/common-utils";
|
|
8
6
|
import {
|
|
9
|
-
|
|
7
|
+
IDisposable,
|
|
8
|
+
IEvent,
|
|
9
|
+
IEventProvider,
|
|
10
|
+
ITelemetryBaseLogger,
|
|
11
|
+
} from "@fluidframework/core-interfaces";
|
|
12
|
+
import { assert } from "@fluidframework/core-utils";
|
|
13
|
+
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
14
|
+
import {
|
|
15
|
+
createChildLogger,
|
|
10
16
|
ITelemetryLoggerExt,
|
|
11
17
|
PerformanceEvent,
|
|
12
18
|
} from "@fluidframework/telemetry-utils";
|
|
13
|
-
import {
|
|
19
|
+
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
14
20
|
import { IThrottler } from "../throttler";
|
|
15
21
|
import { ISummarizerClientElection } from "./summarizerClientElection";
|
|
16
|
-
import {
|
|
22
|
+
import {
|
|
23
|
+
EnqueueSummarizeResult,
|
|
24
|
+
IEnqueueSummarizeOptions,
|
|
25
|
+
IOnDemandSummarizeOptions,
|
|
26
|
+
ISummarizeEventProps,
|
|
27
|
+
ISummarizeResults,
|
|
28
|
+
ISummarizer,
|
|
29
|
+
ISummarizerEvents,
|
|
30
|
+
SummarizerStopReason,
|
|
31
|
+
} from "./summarizerTypes";
|
|
17
32
|
import { SummaryCollection } from "./summaryCollection";
|
|
18
33
|
import { Summarizer } from "./summarizer";
|
|
19
34
|
|
|
@@ -72,7 +87,7 @@ export interface ISummaryManagerConfig {
|
|
|
72
87
|
* It observes changes in calculated summarizer and reacts to changes by either creating summarizer client or
|
|
73
88
|
* stopping existing summarizer client.
|
|
74
89
|
*/
|
|
75
|
-
export class SummaryManager implements IDisposable {
|
|
90
|
+
export class SummaryManager extends TypedEventEmitter<ISummarizerEvents> implements IDisposable {
|
|
76
91
|
private readonly logger: ITelemetryLoggerExt;
|
|
77
92
|
private readonly opsToBypassInitialDelay: number;
|
|
78
93
|
private readonly initialDelayMs: number;
|
|
@@ -96,7 +111,7 @@ export class SummaryManager implements IDisposable {
|
|
|
96
111
|
SummaryCollection,
|
|
97
112
|
"opsSinceLastAck" | "addOpListener" | "removeOpListener"
|
|
98
113
|
>,
|
|
99
|
-
parentLogger:
|
|
114
|
+
parentLogger: ITelemetryBaseLogger,
|
|
100
115
|
/** Creates summarizer by asking interactive container to spawn summarizing container and
|
|
101
116
|
* get back its Summarizer instance. */
|
|
102
117
|
private readonly requestSummarizerFn: () => Promise<ISummarizer>,
|
|
@@ -107,8 +122,14 @@ export class SummaryManager implements IDisposable {
|
|
|
107
122
|
}: Readonly<Partial<ISummaryManagerConfig>> = {},
|
|
108
123
|
private readonly disableHeuristics?: boolean,
|
|
109
124
|
) {
|
|
110
|
-
|
|
111
|
-
|
|
125
|
+
super();
|
|
126
|
+
|
|
127
|
+
this.logger = createChildLogger({
|
|
128
|
+
logger: parentLogger,
|
|
129
|
+
namespace: "SummaryManager",
|
|
130
|
+
properties: {
|
|
131
|
+
all: { clientId: () => this.latestClientId },
|
|
132
|
+
},
|
|
112
133
|
});
|
|
113
134
|
|
|
114
135
|
this.connectedState.on("connected", this.handleConnected);
|
|
@@ -140,6 +161,10 @@ export class SummaryManager implements IDisposable {
|
|
|
140
161
|
this.refreshSummarizer();
|
|
141
162
|
};
|
|
142
163
|
|
|
164
|
+
private readonly handleSummarizeEvent = (eventProps: ISummarizeEventProps) => {
|
|
165
|
+
this.emit("summarize", eventProps);
|
|
166
|
+
};
|
|
167
|
+
|
|
143
168
|
private static readonly isStartingOrRunning = (state: SummaryManagerState) =>
|
|
144
169
|
state === SummaryManagerState.Starting || state === SummaryManagerState.Running;
|
|
145
170
|
|
|
@@ -241,6 +266,7 @@ export class SummaryManager implements IDisposable {
|
|
|
241
266
|
|
|
242
267
|
const summarizer = await this.requestSummarizerFn();
|
|
243
268
|
this.summarizer = summarizer;
|
|
269
|
+
this.summarizer.on("summarize", this.handleSummarizeEvent);
|
|
244
270
|
|
|
245
271
|
// Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore
|
|
246
272
|
// If we can't run the LastSummary, simply return as to avoid paying the cost of launching
|
|
@@ -303,7 +329,7 @@ export class SummaryManager implements IDisposable {
|
|
|
303
329
|
// If failure happened on container load, we may not yet realized that socket disconnected, so check
|
|
304
330
|
// offlineError.
|
|
305
331
|
const category =
|
|
306
|
-
error?.errorType ===
|
|
332
|
+
error?.errorType === DriverErrorTypes.offlineError ? "generic" : "error";
|
|
307
333
|
this.logger.sendTelemetryEvent(
|
|
308
334
|
{
|
|
309
335
|
eventName: "SummarizerException",
|
|
@@ -317,6 +343,7 @@ export class SummaryManager implements IDisposable {
|
|
|
317
343
|
assert(this.state !== SummaryManagerState.Off, 0x264 /* "Expected: Not Off" */);
|
|
318
344
|
this.state = SummaryManagerState.Off;
|
|
319
345
|
|
|
346
|
+
this.summarizer?.off("summarize", this.handleSummarizeEvent);
|
|
320
347
|
this.summarizer?.close();
|
|
321
348
|
this.summarizer = undefined;
|
|
322
349
|
|
|
@@ -399,26 +426,27 @@ export class SummaryManager implements IDisposable {
|
|
|
399
426
|
return startWithInitialDelay;
|
|
400
427
|
}
|
|
401
428
|
|
|
402
|
-
public
|
|
429
|
+
public summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults {
|
|
403
430
|
if (this.summarizer === undefined) {
|
|
404
431
|
throw Error("No running summarizer client");
|
|
405
432
|
// TODO: could spawn a summarizer client temporarily.
|
|
406
433
|
}
|
|
407
|
-
return this.summarizer.summarizeOnDemand(
|
|
408
|
-
}
|
|
434
|
+
return this.summarizer.summarizeOnDemand(options);
|
|
435
|
+
}
|
|
409
436
|
|
|
410
|
-
public
|
|
437
|
+
public enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {
|
|
411
438
|
if (this.summarizer === undefined) {
|
|
412
439
|
throw Error("No running summarizer client");
|
|
413
440
|
// TODO: could spawn a summarizer client temporarily.
|
|
414
441
|
}
|
|
415
|
-
return this.summarizer.enqueueSummarize(
|
|
416
|
-
}
|
|
442
|
+
return this.summarizer.enqueueSummarize(options);
|
|
443
|
+
}
|
|
417
444
|
|
|
418
445
|
public dispose() {
|
|
419
446
|
this.clientElection.off("electedSummarizerChanged", this.refreshSummarizer);
|
|
420
447
|
this.connectedState.off("connected", this.handleConnected);
|
|
421
448
|
this.connectedState.off("disconnected", this.handleDisconnected);
|
|
449
|
+
this.summarizer?.off("summarize", this.handleSummarizeEvent);
|
|
422
450
|
this._disposed = true;
|
|
423
451
|
}
|
|
424
452
|
}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import type { IdCreationRange, UnackedLocalId } from "@fluidframework/runtime-definitions";
|
|
6
|
-
export declare function getIds(range: IdCreationRange): {
|
|
7
|
-
first: UnackedLocalId;
|
|
8
|
-
last: UnackedLocalId;
|
|
9
|
-
overrides?: IdCreationRange.Overrides;
|
|
10
|
-
} | undefined;
|
|
11
|
-
//# sourceMappingURL=idRange.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idRange.d.ts","sourceRoot":"","sources":["../../src/id-compressor/idRange.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AAE3F,wBAAgB,MAAM,CACrB,KAAK,EAAE,eAAe,GAEpB;IAAE,KAAK,EAAE,cAAc,CAAC;IAAC,IAAI,EAAE,cAAc,CAAC;IAAC,SAAS,CAAC,EAAE,eAAe,CAAC,SAAS,CAAA;CAAE,GACtF,SAAS,CAsBX"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
/*!
|
|
3
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
4
|
-
* Licensed under the MIT License.
|
|
5
|
-
*/
|
|
6
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.getIds = void 0;
|
|
8
|
-
const common_utils_1 = require("@fluidframework/common-utils");
|
|
9
|
-
function getIds(range) {
|
|
10
|
-
const { ids } = range;
|
|
11
|
-
if (ids === undefined) {
|
|
12
|
-
return undefined;
|
|
13
|
-
}
|
|
14
|
-
let first = ids.first;
|
|
15
|
-
let last = ids.last;
|
|
16
|
-
const overrides = ids;
|
|
17
|
-
if (overrides.overrides !== undefined) {
|
|
18
|
-
first !== null && first !== void 0 ? first : (first = overrides.overrides[0][0]);
|
|
19
|
-
last !== null && last !== void 0 ? last : (last = overrides.overrides[overrides.overrides.length - 1][0]);
|
|
20
|
-
}
|
|
21
|
-
(0, common_utils_1.assert)(first !== undefined && last !== undefined, 0x49b /* malformed IdCreationRange */);
|
|
22
|
-
return {
|
|
23
|
-
first,
|
|
24
|
-
last,
|
|
25
|
-
overrides: overrides.overrides,
|
|
26
|
-
};
|
|
27
|
-
}
|
|
28
|
-
exports.getIds = getIds;
|
|
29
|
-
//# sourceMappingURL=idRange.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"idRange.js","sourceRoot":"","sources":["../../src/id-compressor/idRange.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH,+DAAsD;AAGtD,SAAgB,MAAM,CACrB,KAAsB;IAItB,MAAM,EAAE,GAAG,EAAE,GAAG,KAAK,CAAC;IACtB,IAAI,GAAG,KAAK,SAAS,EAAE;QACtB,OAAO,SAAS,CAAC;KACjB;IAED,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC;IACtB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;IAEpB,MAAM,SAAS,GAAG,GAA4C,CAAC;IAC/D,IAAI,SAAS,CAAC,SAAS,KAAK,SAAS,EAAE;QACtC,KAAK,aAAL,KAAK,cAAL,KAAK,IAAL,KAAK,GAAK,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;QACpC,IAAI,aAAJ,IAAI,cAAJ,IAAI,IAAJ,IAAI,GAAK,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAC;KAChE;IAED,IAAA,qBAAM,EAAC,KAAK,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAEzF,OAAO;QACN,KAAK;QACL,IAAI;QACJ,SAAS,EAAE,SAAS,CAAC,SAAS;KAC9B,CAAC;AACH,CAAC;AA1BD,wBA0BC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { assert } from \"@fluidframework/common-utils\";\nimport type { IdCreationRange, UnackedLocalId } from \"@fluidframework/runtime-definitions\";\n\nexport function getIds(\n\trange: IdCreationRange,\n):\n\t| { first: UnackedLocalId; last: UnackedLocalId; overrides?: IdCreationRange.Overrides }\n\t| undefined {\n\tconst { ids } = range;\n\tif (ids === undefined) {\n\t\treturn undefined;\n\t}\n\n\tlet first = ids.first;\n\tlet last = ids.last;\n\n\tconst overrides = ids as Partial<IdCreationRange.HasOverrides>;\n\tif (overrides.overrides !== undefined) {\n\t\tfirst ??= overrides.overrides[0][0];\n\t\tlast ??= overrides.overrides[overrides.overrides.length - 1][0];\n\t}\n\n\tassert(first !== undefined && last !== undefined, 0x49b /* malformed IdCreationRange */);\n\n\treturn {\n\t\tfirst,\n\t\tlast,\n\t\toverrides: overrides.overrides,\n\t};\n}\n"]}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/*!
|
|
2
|
-
* Copyright (c) Microsoft Corporation and contributors. All rights reserved.
|
|
3
|
-
* Licensed under the MIT License.
|
|
4
|
-
*/
|
|
5
|
-
import { SessionId, StableId } from "@fluidframework/runtime-definitions";
|
|
6
|
-
/**
|
|
7
|
-
* A UUID (128 bit identifier) optimized for use as a 128 bit unsigned integer with fast addition and toString operations.
|
|
8
|
-
* The string entry is the upper 76 bits of the uuid and the integer entry holds the lower 52 bits:
|
|
9
|
-
*
|
|
10
|
-
* ```
|
|
11
|
-
* UUUUUUUU-UUUU-VUUU-vUUU-UUUUUUUUUUUU - the uuid
|
|
12
|
-
* SSSSSSSS-SSSS-SSSS-SSS - array[0]: string
|
|
13
|
-
* N NNNNNNNNNNNN - array[1]: integer
|
|
14
|
-
* ```
|
|
15
|
-
*
|
|
16
|
-
* The integer keeps the common case cost of incrementing and computing deltas very low.
|
|
17
|
-
* The string optimizes toString by caching the the majority of the resulting string.
|
|
18
|
-
*/
|
|
19
|
-
export declare type NumericUuid = readonly [string, number] & {
|
|
20
|
-
readonly NumericUuid: "9132ea20-a811-4756-85f8-aa6da5ca90f8";
|
|
21
|
-
};
|
|
22
|
-
/**
|
|
23
|
-
* Calculates the numeric delta between a and b (i.e. a - b).
|
|
24
|
-
* @param a - an uuid
|
|
25
|
-
* @param b - an other uuid
|
|
26
|
-
* @param maxDelta - the maximum integer delta (inclusive) to tolerate.
|
|
27
|
-
* @returns undefined if the delta is negative or greater than `maxDelta`
|
|
28
|
-
*/
|
|
29
|
-
export declare function getPositiveDelta(a: NumericUuid, b: NumericUuid, maxDelta: number): number | undefined;
|
|
30
|
-
/**
|
|
31
|
-
* @param offset - an optional offset to increment the returned StableId
|
|
32
|
-
* @returns the string representation of a `NumericUuid`.
|
|
33
|
-
*/
|
|
34
|
-
export declare function stableIdFromNumericUuid(uuid: NumericUuid, offset?: number): StableId;
|
|
35
|
-
/**
|
|
36
|
-
* @param stableId - a minimal uuid string
|
|
37
|
-
* @returns a numeric representation of `stableId`.
|
|
38
|
-
*/
|
|
39
|
-
export declare function numericUuidFromStableId(stableId: StableId): NumericUuid;
|
|
40
|
-
/**
|
|
41
|
-
* Creates a session base ID.
|
|
42
|
-
* This method (rather than standard uuid generation methods) should be used to generate session IDs.
|
|
43
|
-
*/
|
|
44
|
-
export declare function createSessionId(): SessionId;
|
|
45
|
-
/**
|
|
46
|
-
* Compares numeric uuids for equality.
|
|
47
|
-
*/
|
|
48
|
-
export declare function numericUuidEquals(a: NumericUuid, b: NumericUuid): boolean;
|
|
49
|
-
/**
|
|
50
|
-
* Increments the uuid. `amount` must be a positive integer.
|
|
51
|
-
* @returns the result of incrementing the uuid by `amount`.
|
|
52
|
-
*/
|
|
53
|
-
export declare function incrementUuid(uuid: NumericUuid, amount: number): NumericUuid;
|
|
54
|
-
/**
|
|
55
|
-
* Any session uuid with all of its highish bits set is in danger of overflowing after fewer than 2^53 increments.
|
|
56
|
-
* By zeroing one of those bits at random, potential overflow is prevented.
|
|
57
|
-
*/
|
|
58
|
-
export declare function ensureSessionUuid(uuid: StableId): SessionId;
|
|
59
|
-
//# sourceMappingURL=numericUuid.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"numericUuid.d.ts","sourceRoot":"","sources":["../../src/id-compressor/numericUuid.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,qCAAqC,CAAC;AAI1E;;;;;;;;;;;;GAYG;AACH,oBAAY,WAAW,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG;IACrD,QAAQ,CAAC,WAAW,EAAE,sCAAsC,CAAC;CAC7D,CAAC;AAQF;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC/B,CAAC,EAAE,WAAW,EACd,CAAC,EAAE,WAAW,EACd,QAAQ,EAAE,MAAM,GACd,MAAM,GAAG,SAAS,CAgDpB;AAaD;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,SAAI,GAAG,QAAQ,CAW/E;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,GAAG,WAAW,CAKvE;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,SAAS,CAE3C;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,WAAW,GAAG,OAAO,CAEzE;AAQD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,GAAG,WAAW,CAoD5E;AAiJD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAoB3D"}
|