@fluidframework/container-runtime 2.0.0-rc.1.0.6 → 2.0.0-rc.2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/{.eslintrc.js → .eslintrc.cjs} +5 -5
- package/{.mocharc.js → .mocharc.cjs} +1 -1
- package/CHANGELOG.md +54 -0
- package/README.md +45 -0
- package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
- package/api-extractor-lint.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/container-runtime.api.md +63 -29
- package/dist/batchTracker.d.ts +1 -2
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.js.map +1 -1
- package/{lib/dataStores.d.mts → dist/channelCollection.d.ts} +94 -27
- package/dist/channelCollection.d.ts.map +1 -0
- package/dist/{dataStores.js → channelCollection.js} +359 -84
- package/dist/channelCollection.js.map +1 -0
- package/dist/connectionTelemetry.d.ts +11 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +42 -4
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +93 -39
- package/dist/container-runtime-beta.d.ts +27 -9
- package/dist/container-runtime-public.d.ts +27 -9
- package/dist/container-runtime-untrimmed.d.ts +118 -39
- package/dist/containerHandleContext.d.ts +1 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +74 -54
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +534 -410
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts +2 -3
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js +12 -11
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +34 -29
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +157 -133
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.d.ts +1 -1
- package/dist/dataStoreContexts.d.ts.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
- package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
- package/dist/deltaManagerSummarizerProxy.js +91 -5
- package/dist/deltaManagerSummarizerProxy.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +5 -4
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +64 -53
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +2 -2
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +21 -21
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +10 -3
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -2
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +4 -4
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +5 -5
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +6 -7
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +17 -17
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts +1 -1
- package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +10 -10
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +8 -8
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +39 -39
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +8 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +28 -40
- package/dist/index.js.map +1 -1
- package/dist/messageTypes.d.ts +4 -4
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +2 -2
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +2 -2
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +8 -8
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +18 -18
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -4
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +3 -3
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +1 -10
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +5 -5
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +7 -7
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +20 -12
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/package.json +3 -0
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +2 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +18 -10
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +5 -5
- package/dist/scheduleManager.js.map +1 -1
- package/dist/summary/index.d.ts +12 -12
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js +43 -43
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.js +8 -8
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +11 -10
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +114 -81
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +4 -4
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +6 -6
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +2 -2
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.d.ts +3 -3
- package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/index.d.ts +3 -3
- package/dist/summary/summarizerNode/index.d.ts.map +1 -1
- package/dist/summary/summarizerNode/index.js +4 -4
- package/dist/summary/summarizerNode/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +45 -57
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +10 -21
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +15 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +6 -5
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +10 -1
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.d.ts +5 -6
- package/dist/summary/summaryManager.d.ts.map +1 -1
- package/dist/summary/summaryManager.js +4 -5
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/tsdoc-metadata.json +1 -1
- package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
- package/lib/batchTracker.d.ts.map +1 -0
- package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
- package/lib/batchTracker.js.map +1 -0
- package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
- package/lib/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.mjs → blobManager.js} +1 -1
- package/lib/blobManager.js.map +1 -0
- package/{dist/dataStores.d.ts → lib/channelCollection.d.ts} +94 -27
- package/lib/channelCollection.d.ts.map +1 -0
- package/lib/{dataStores.mjs → channelCollection.js} +345 -73
- package/lib/channelCollection.js.map +1 -0
- package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
- package/lib/connectionTelemetry.d.ts.map +1 -0
- package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
- package/lib/connectionTelemetry.js.map +1 -0
- package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +93 -39
- package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
- package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
- package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +118 -39
- package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
- package/lib/containerHandleContext.d.ts.map +1 -0
- package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
- package/lib/containerHandleContext.js.map +1 -0
- package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +79 -55
- package/lib/containerRuntime.d.ts.map +1 -0
- package/lib/{containerRuntime.mjs → containerRuntime.js} +453 -331
- package/lib/containerRuntime.js.map +1 -0
- package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
- package/lib/dataStore.d.ts.map +1 -0
- package/lib/{dataStore.mjs → dataStore.js} +13 -12
- package/lib/dataStore.js.map +1 -0
- package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +35 -30
- package/lib/dataStoreContext.d.ts.map +1 -0
- package/lib/{dataStoreContext.mjs → dataStoreContext.js} +146 -122
- package/lib/dataStoreContext.js.map +1 -0
- package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
- package/lib/dataStoreContexts.d.ts.map +1 -0
- package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
- package/lib/dataStoreContexts.js.map +1 -0
- package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
- package/lib/dataStoreRegistry.d.ts.map +1 -0
- package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
- package/lib/dataStoreRegistry.js.map +1 -0
- package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
- package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
- package/lib/deltaManagerSummarizerProxy.js +124 -0
- package/lib/deltaManagerSummarizerProxy.js.map +1 -0
- package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
- package/lib/deltaScheduler.d.ts.map +1 -0
- package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
- package/lib/deltaScheduler.js.map +1 -0
- package/lib/{error.d.mts → error.d.ts} +1 -1
- package/lib/error.d.ts.map +1 -0
- package/lib/{error.mjs → error.js} +1 -1
- package/lib/error.js.map +1 -0
- package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +6 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -0
- package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +25 -14
- package/lib/gc/garbageCollection.js.map +1 -0
- package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
- package/lib/gc/gcConfigs.d.ts.map +1 -0
- package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
- package/lib/gc/gcConfigs.js.map +1 -0
- package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +11 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -0
- package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
- package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
- package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
- package/lib/gc/gcHelpers.js.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +5 -5
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +4 -4
- package/lib/gc/gcSummaryStateTracker.js.map +1 -0
- package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +7 -8
- package/lib/gc/gcTelemetry.d.ts.map +1 -0
- package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +2 -2
- package/lib/gc/gcTelemetry.js.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
- package/lib/gc/{index.d.mts → index.d.ts} +9 -9
- package/lib/gc/index.d.ts.map +1 -0
- package/lib/gc/{index.mjs → index.js} +8 -8
- package/lib/gc/index.js.map +1 -0
- package/lib/{index.d.mts → index.d.ts} +9 -21
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +12 -0
- package/lib/index.js.map +1 -0
- package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
- package/lib/messageTypes.d.ts.map +1 -0
- package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
- package/lib/messageTypes.js.map +1 -0
- package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
- package/lib/metadata.d.ts.map +1 -0
- package/lib/{metadata.mjs → metadata.js} +1 -1
- package/lib/metadata.js.map +1 -0
- package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
- package/lib/opLifecycle/batchManager.d.ts.map +1 -0
- package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -0
- package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
- package/lib/opLifecycle/definitions.d.ts.map +1 -0
- package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -0
- package/lib/opLifecycle/index.d.ts +13 -0
- package/lib/opLifecycle/index.d.ts.map +1 -0
- package/lib/opLifecycle/index.js +12 -0
- package/lib/opLifecycle/index.js.map +1 -0
- package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
- package/lib/opLifecycle/opCompressor.js.map +1 -0
- package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
- package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
- package/lib/opLifecycle/opDecompressor.js.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -0
- package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
- package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
- package/lib/opLifecycle/opSplitter.js.map +1 -0
- package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
- package/lib/opLifecycle/outbox.d.ts.map +1 -0
- package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
- package/lib/opLifecycle/outbox.js.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
- package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
- package/lib/opProperties.d.ts.map +1 -0
- package/lib/{opProperties.mjs → opProperties.js} +1 -1
- package/lib/opProperties.js.map +1 -0
- package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
- package/lib/packageVersion.d.ts.map +1 -0
- package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
- package/lib/packageVersion.js.map +1 -0
- package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
- package/lib/pendingStateManager.d.ts.map +1 -0
- package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
- package/lib/pendingStateManager.js.map +1 -0
- package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
- package/lib/scheduleManager.d.ts.map +1 -0
- package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
- package/lib/scheduleManager.js.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
- package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -0
- package/lib/summary/{index.d.mts → index.d.ts} +13 -13
- package/lib/summary/index.d.ts.map +1 -0
- package/lib/summary/{index.mjs → index.js} +12 -12
- package/lib/summary/index.js.map +1 -0
- package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
- package/lib/summary/orderedClientElection.d.ts.map +1 -0
- package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
- package/lib/summary/orderedClientElection.js.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
- package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
- package/lib/summary/runningSummarizer.d.ts.map +1 -0
- package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
- package/lib/summary/runningSummarizer.js.map +1 -0
- package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
- package/lib/summary/summarizer.d.ts.map +1 -0
- package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
- package/lib/summary/summarizer.js.map +1 -0
- package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
- package/lib/summary/summarizerClientElection.d.ts.map +1 -0
- package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -0
- package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
- package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
- package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -0
- package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
- package/lib/summary/summarizerNode/index.d.ts.map +1 -0
- package/lib/summary/summarizerNode/index.js +7 -0
- package/lib/summary/summarizerNode/index.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
- package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
- package/lib/summary/summarizerTypes.d.ts.map +1 -0
- package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -0
- package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -0
- package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
- package/lib/summary/summaryCollection.js.map +1 -0
- package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -0
- package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
- package/lib/summary/summaryFormat.js.map +1 -0
- package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
- package/lib/summary/summaryGenerator.d.ts.map +1 -0
- package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
- package/lib/summary/summaryGenerator.js.map +1 -0
- package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
- package/lib/summary/summaryManager.d.ts.map +1 -0
- package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
- package/lib/summary/summaryManager.js.map +1 -0
- package/lib/test/batchTracker.spec.js +88 -0
- package/lib/test/batchTracker.spec.js.map +1 -0
- package/lib/test/blobManager.spec.js +835 -0
- package/lib/test/blobManager.spec.js.map +1 -0
- package/lib/test/channelCollection.spec.js +141 -0
- package/lib/test/channelCollection.spec.js.map +1 -0
- package/lib/test/containerRuntime.spec.js +1748 -0
- package/lib/test/containerRuntime.spec.js.map +1 -0
- package/lib/test/dataStoreContext.spec.js +801 -0
- package/lib/test/dataStoreContext.spec.js.map +1 -0
- package/lib/test/dataStoreCreation.spec.js +312 -0
- package/lib/test/dataStoreCreation.spec.js.map +1 -0
- package/lib/test/dataStoreRegistry.spec.js +26 -0
- package/lib/test/dataStoreRegistry.spec.js.map +1 -0
- package/lib/test/fuzz/fuzzUtils.js +66 -0
- package/lib/test/fuzz/fuzzUtils.js.map +1 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
- package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
- package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
- package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
- package/lib/test/gc/garbageCollection.spec.js +1465 -0
- package/lib/test/gc/garbageCollection.spec.js.map +1 -0
- package/lib/test/gc/gcConfigs.spec.js +690 -0
- package/lib/test/gc/gcConfigs.spec.js.map +1 -0
- package/lib/test/gc/gcHelpers.spec.js +110 -0
- package/lib/test/gc/gcHelpers.spec.js.map +1 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
- package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
- package/lib/test/gc/gcStats.spec.js +391 -0
- package/lib/test/gc/gcStats.spec.js.map +1 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
- package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
- package/lib/test/gc/gcTelemetry.spec.js +530 -0
- package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
- package/lib/test/gc/gcUnitTestHelpers.js +29 -0
- package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
- package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
- package/lib/test/getPendingBlobs.spec.js +193 -0
- package/lib/test/getPendingBlobs.spec.js.map +1 -0
- package/lib/test/hardwareStats.spec.js +93 -0
- package/lib/test/hardwareStats.spec.js.map +1 -0
- package/lib/test/index.js +6 -0
- package/lib/test/index.js.map +1 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
- package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/batchManager.spec.js +189 -0
- package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
- package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
- package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
- package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
- package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
- package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
- package/lib/test/opLifecycle/outbox.spec.js +675 -0
- package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
- package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
- package/lib/test/pendingStateManager.spec.js +329 -0
- package/lib/test/pendingStateManager.spec.js.map +1 -0
- package/lib/test/scheduleManager.spec.js +270 -0
- package/lib/test/scheduleManager.spec.js.map +1 -0
- package/lib/test/summarizerNode.spec.js +326 -0
- package/lib/test/summarizerNode.spec.js.map +1 -0
- package/lib/test/summarizerNodeWithGc.spec.js +318 -0
- package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
- package/lib/test/summary/orderedClientElection.spec.js +535 -0
- package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
- package/lib/test/summary/runningSummarizer.spec.js +1349 -0
- package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizer.spec.js +29 -0
- package/lib/test/summary/summarizer.spec.js.map +1 -0
- package/lib/test/summary/summarizerClientElection.spec.js +436 -0
- package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
- package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
- package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
- package/lib/test/summary/summaryCollection.spec.js +200 -0
- package/lib/test/summary/summaryCollection.spec.js.map +1 -0
- package/lib/test/summary/summaryManager.spec.js +430 -0
- package/lib/test/summary/summaryManager.spec.js.map +1 -0
- package/lib/test/summary/testQuorumClients.js +34 -0
- package/lib/test/summary/testQuorumClients.js.map +1 -0
- package/lib/test/throttler.spec.js +175 -0
- package/lib/test/throttler.spec.js.map +1 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
- package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
- package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
- package/lib/throttler.d.ts.map +1 -0
- package/lib/{throttler.mjs → throttler.js} +1 -1
- package/lib/throttler.js.map +1 -0
- package/package.json +99 -88
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -1
- package/src/{dataStores.ts → channelCollection.ts} +467 -88
- package/src/connectionTelemetry.ts +42 -3
- package/src/containerHandleContext.ts +1 -1
- package/src/containerRuntime.ts +649 -462
- package/src/dataStore.ts +13 -15
- package/src/dataStoreContext.ts +203 -173
- package/src/dataStoreContexts.ts +1 -1
- package/src/deltaManagerSummarizerProxy.ts +132 -7
- package/src/gc/garbageCollection.ts +29 -16
- package/src/gc/gcConfigs.ts +3 -3
- package/src/gc/gcDefinitions.ts +10 -3
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +5 -6
- package/src/gc/gcTelemetry.ts +6 -6
- package/src/gc/gcUnreferencedStateTracker.ts +1 -1
- package/src/gc/index.ts +8 -8
- package/src/index.ts +16 -27
- package/src/messageTypes.ts +4 -4
- package/src/opLifecycle/README.md +2 -4
- package/src/opLifecycle/batchManager.ts +2 -2
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/index.ts +8 -8
- package/src/opLifecycle/opCompressor.ts +3 -3
- package/src/opLifecycle/opDecompressor.ts +3 -3
- package/src/opLifecycle/opGroupingManager.ts +3 -12
- package/src/opLifecycle/opSplitter.ts +3 -3
- package/src/opLifecycle/outbox.ts +29 -9
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +19 -13
- package/src/scheduleManager.ts +4 -4
- package/src/summary/index.ts +13 -12
- package/src/summary/orderedClientElection.ts +1 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +141 -93
- package/src/summary/summarizer.ts +7 -7
- package/src/summary/summarizerClientElection.ts +2 -2
- package/src/summary/summarizerHeuristics.ts +3 -3
- package/src/summary/summarizerNode/index.ts +6 -3
- package/src/summary/summarizerNode/summarizerNode.ts +54 -69
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
- package/src/summary/summarizerTypes.ts +12 -24
- package/src/summary/summaryFormat.ts +16 -2
- package/src/summary/summaryGenerator.ts +16 -4
- package/src/summary/summaryManager.ts +6 -7
- package/tsconfig.cjs.json +7 -0
- package/tsconfig.json +2 -5
- package/dist/dataStores.d.ts.map +0 -1
- package/dist/dataStores.js.map +0 -1
- package/dist/deltaManagerProxyBase.d.ts.map +0 -1
- package/dist/deltaManagerProxyBase.js +0 -77
- package/dist/deltaManagerProxyBase.js.map +0 -1
- package/lib/batchTracker.d.mts.map +0 -1
- package/lib/batchTracker.mjs.map +0 -1
- package/lib/blobManager.d.mts.map +0 -1
- package/lib/blobManager.mjs.map +0 -1
- package/lib/connectionTelemetry.d.mts.map +0 -1
- package/lib/connectionTelemetry.mjs.map +0 -1
- package/lib/containerHandleContext.d.mts.map +0 -1
- package/lib/containerHandleContext.mjs.map +0 -1
- package/lib/containerRuntime.d.mts.map +0 -1
- package/lib/containerRuntime.mjs.map +0 -1
- package/lib/dataStore.d.mts.map +0 -1
- package/lib/dataStore.mjs.map +0 -1
- package/lib/dataStoreContext.d.mts.map +0 -1
- package/lib/dataStoreContext.mjs.map +0 -1
- package/lib/dataStoreContexts.d.mts.map +0 -1
- package/lib/dataStoreContexts.mjs.map +0 -1
- package/lib/dataStoreRegistry.d.mts.map +0 -1
- package/lib/dataStoreRegistry.mjs.map +0 -1
- package/lib/dataStores.d.mts.map +0 -1
- package/lib/dataStores.mjs.map +0 -1
- package/lib/deltaManagerProxyBase.d.mts +0 -35
- package/lib/deltaManagerProxyBase.d.mts.map +0 -1
- package/lib/deltaManagerProxyBase.mjs +0 -73
- package/lib/deltaManagerProxyBase.mjs.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
- package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.mjs +0 -38
- package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
- package/lib/deltaScheduler.d.mts.map +0 -1
- package/lib/deltaScheduler.mjs.map +0 -1
- package/lib/error.d.mts.map +0 -1
- package/lib/error.mjs.map +0 -1
- package/lib/gc/garbageCollection.d.mts.map +0 -1
- package/lib/gc/garbageCollection.mjs.map +0 -1
- package/lib/gc/gcConfigs.d.mts.map +0 -1
- package/lib/gc/gcConfigs.mjs.map +0 -1
- package/lib/gc/gcDefinitions.d.mts.map +0 -1
- package/lib/gc/gcDefinitions.mjs.map +0 -1
- package/lib/gc/gcHelpers.mjs.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
- package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
- package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
- package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
- package/lib/gc/gcTelemetry.d.mts.map +0 -1
- package/lib/gc/gcTelemetry.mjs.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
- package/lib/gc/index.d.mts.map +0 -1
- package/lib/gc/index.mjs.map +0 -1
- package/lib/index.d.mts.map +0 -1
- package/lib/index.mjs +0 -24
- package/lib/index.mjs.map +0 -1
- package/lib/messageTypes.d.mts.map +0 -1
- package/lib/messageTypes.mjs.map +0 -1
- package/lib/metadata.d.mts.map +0 -1
- package/lib/metadata.mjs.map +0 -1
- package/lib/opLifecycle/batchManager.d.mts.map +0 -1
- package/lib/opLifecycle/batchManager.mjs.map +0 -1
- package/lib/opLifecycle/definitions.d.mts.map +0 -1
- package/lib/opLifecycle/definitions.mjs.map +0 -1
- package/lib/opLifecycle/index.d.mts +0 -13
- package/lib/opLifecycle/index.d.mts.map +0 -1
- package/lib/opLifecycle/index.mjs +0 -12
- package/lib/opLifecycle/index.mjs.map +0 -1
- package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opCompressor.mjs.map +0 -1
- package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
- package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
- package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
- package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
- package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
- package/lib/opLifecycle/opSplitter.mjs.map +0 -1
- package/lib/opLifecycle/outbox.d.mts.map +0 -1
- package/lib/opLifecycle/outbox.mjs.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
- package/lib/opProperties.d.mts.map +0 -1
- package/lib/opProperties.mjs.map +0 -1
- package/lib/packageVersion.d.mts.map +0 -1
- package/lib/packageVersion.mjs.map +0 -1
- package/lib/pendingStateManager.d.mts.map +0 -1
- package/lib/pendingStateManager.mjs.map +0 -1
- package/lib/scheduleManager.d.mts.map +0 -1
- package/lib/scheduleManager.mjs.map +0 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
- package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
- package/lib/summary/index.d.mts.map +0 -1
- package/lib/summary/index.mjs.map +0 -1
- package/lib/summary/orderedClientElection.d.mts.map +0 -1
- package/lib/summary/orderedClientElection.mjs.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
- package/lib/summary/runningSummarizer.d.mts.map +0 -1
- package/lib/summary/runningSummarizer.mjs.map +0 -1
- package/lib/summary/summarizer.d.mts.map +0 -1
- package/lib/summary/summarizer.mjs.map +0 -1
- package/lib/summary/summarizerClientElection.d.mts.map +0 -1
- package/lib/summary/summarizerClientElection.mjs.map +0 -1
- package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
- package/lib/summary/summarizerHeuristics.mjs.map +0 -1
- package/lib/summary/summarizerNode/index.d.mts.map +0 -1
- package/lib/summary/summarizerNode/index.mjs +0 -7
- package/lib/summary/summarizerNode/index.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
- package/lib/summary/summarizerTypes.d.mts.map +0 -1
- package/lib/summary/summarizerTypes.mjs.map +0 -1
- package/lib/summary/summaryCollection.d.mts.map +0 -1
- package/lib/summary/summaryCollection.mjs.map +0 -1
- package/lib/summary/summaryFormat.d.mts.map +0 -1
- package/lib/summary/summaryFormat.mjs.map +0 -1
- package/lib/summary/summaryGenerator.d.mts.map +0 -1
- package/lib/summary/summaryGenerator.mjs.map +0 -1
- package/lib/summary/summaryManager.d.mts.map +0 -1
- package/lib/summary/summaryManager.mjs.map +0 -1
- package/lib/throttler.d.mts.map +0 -1
- package/lib/throttler.mjs.map +0 -1
- package/src/deltaManagerProxyBase.ts +0 -111
|
@@ -15,9 +15,9 @@ import { assert, delay, Deferred, PromiseTimer } from "@fluidframework/core-util
|
|
|
15
15
|
import { TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
16
16
|
import { DriverErrorTypes } from "@fluidframework/driver-definitions";
|
|
17
17
|
import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
|
|
18
|
-
import { ISummaryConfiguration } from "../containerRuntime";
|
|
19
|
-
import { opSize } from "../opProperties";
|
|
20
|
-
import { SummarizeHeuristicRunner } from "./summarizerHeuristics";
|
|
18
|
+
import { ISummaryConfiguration } from "../containerRuntime.js";
|
|
19
|
+
import { opSize } from "../opProperties.js";
|
|
20
|
+
import { SummarizeHeuristicRunner } from "./summarizerHeuristics.js";
|
|
21
21
|
import {
|
|
22
22
|
IEnqueueSummarizeOptions,
|
|
23
23
|
ISummarizeOptions,
|
|
@@ -36,14 +36,14 @@ import {
|
|
|
36
36
|
IRefreshSummaryAckOptions,
|
|
37
37
|
ISummarizerEvents,
|
|
38
38
|
ISummarizeEventProps,
|
|
39
|
-
} from "./summarizerTypes";
|
|
40
|
-
import { IAckedSummary, IClientSummaryWatcher, SummaryCollection } from "./summaryCollection";
|
|
39
|
+
} from "./summarizerTypes.js";
|
|
40
|
+
import { IAckedSummary, IClientSummaryWatcher, SummaryCollection } from "./summaryCollection.js";
|
|
41
41
|
import {
|
|
42
42
|
raceTimer,
|
|
43
43
|
SummarizeReason,
|
|
44
44
|
SummarizeResultBuilder,
|
|
45
45
|
SummaryGenerator,
|
|
46
|
-
} from "./summaryGenerator";
|
|
46
|
+
} from "./summaryGenerator.js";
|
|
47
47
|
|
|
48
48
|
const maxSummarizeAckWaitTime = 10 * 60 * 1000; // 10 minutes
|
|
49
49
|
|
|
@@ -91,15 +91,26 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
91
91
|
runtime,
|
|
92
92
|
);
|
|
93
93
|
|
|
94
|
-
//
|
|
95
|
-
//
|
|
96
|
-
|
|
94
|
+
// If there have been any acks newer that the one this client loaded from until now, process them before
|
|
95
|
+
// starting the running summarizer which will trigger summary heuristics.
|
|
96
|
+
// This is done primarily to handle scenarios where the summarizer loads from a cached snapshot and there
|
|
97
|
+
// is newer one available. The ack for the newer summary is processed before summarizing because otherwise
|
|
98
|
+
// that summary would fail as it has an older parent.
|
|
99
|
+
let nextReferenceSequenceNumber = runtime.deltaManager.initialSequenceNumber + 1;
|
|
100
|
+
const latestAck = summaryCollection.latestAck;
|
|
101
|
+
if (
|
|
102
|
+
latestAck !== undefined &&
|
|
103
|
+
latestAck.summaryOp.referenceSequenceNumber >= nextReferenceSequenceNumber
|
|
104
|
+
) {
|
|
105
|
+
await summarizer.handleSummaryAck(latestAck);
|
|
106
|
+
nextReferenceSequenceNumber = latestAck.summaryOp.referenceSequenceNumber + 1;
|
|
107
|
+
}
|
|
97
108
|
|
|
98
109
|
await summarizer.waitStart();
|
|
99
110
|
|
|
100
|
-
//
|
|
111
|
+
// Process summary acks asynchronously
|
|
101
112
|
// Note: no exceptions are thrown from processIncomingSummaryAcks handler as it handles all exceptions
|
|
102
|
-
summarizer.processIncomingSummaryAcks(
|
|
113
|
+
summarizer.processIncomingSummaryAcks(nextReferenceSequenceNumber).catch((error) => {
|
|
103
114
|
createChildLogger({ logger }).sendErrorEvent(
|
|
104
115
|
{ eventName: "HandleSummaryAckFatalError" },
|
|
105
116
|
error,
|
|
@@ -243,6 +254,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
243
254
|
}
|
|
244
255
|
});
|
|
245
256
|
|
|
257
|
+
const immediatelyRefreshLatestSummaryAck =
|
|
258
|
+
this.mc.config.getBoolean("Fluid.Summarizer.immediatelyRefreshLatestSummaryAck") ??
|
|
259
|
+
true;
|
|
246
260
|
this.generator = new SummaryGenerator(
|
|
247
261
|
this.pendingAckTimer,
|
|
248
262
|
this.heuristicData,
|
|
@@ -250,6 +264,11 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
250
264
|
() => {
|
|
251
265
|
this.totalSuccessfulAttempts++;
|
|
252
266
|
},
|
|
267
|
+
async (options: IRefreshSummaryAckOptions) => {
|
|
268
|
+
if (immediatelyRefreshLatestSummaryAck) {
|
|
269
|
+
await this.refreshLatestSummaryAckAndHandleError(options);
|
|
270
|
+
}
|
|
271
|
+
},
|
|
253
272
|
this.summaryWatcher,
|
|
254
273
|
this.mc.logger,
|
|
255
274
|
);
|
|
@@ -272,94 +291,85 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
272
291
|
: defaultMaxAttemptsForSubmitFailures;
|
|
273
292
|
}
|
|
274
293
|
|
|
275
|
-
private async handleSummaryAck(
|
|
276
|
-
const
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
294
|
+
private async handleSummaryAck(ack: IAckedSummary) {
|
|
295
|
+
const refSequenceNumber = ack.summaryOp.referenceSequenceNumber;
|
|
296
|
+
const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;
|
|
297
|
+
const summaryOpHandle = ack.summaryOp.contents.handle;
|
|
298
|
+
const summaryAckHandle = ack.summaryAck.contents.handle;
|
|
299
|
+
while (this.summarizingLock !== undefined) {
|
|
300
|
+
summaryLogger.sendTelemetryEvent({
|
|
301
|
+
eventName: "RefreshAttemptWithSummarizerRunning",
|
|
302
|
+
referenceSequenceNumber: refSequenceNumber,
|
|
303
|
+
proposalHandle: summaryOpHandle,
|
|
304
|
+
ackHandle: summaryAckHandle,
|
|
305
|
+
});
|
|
306
|
+
await this.summarizingLock;
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
// Make sure we block any summarizer from being executed/enqueued while
|
|
310
|
+
// executing the refreshLatestSummaryAck.
|
|
311
|
+
// https://dev.azure.com/fluidframework/internal/_workitems/edit/779
|
|
312
|
+
await this.lockedSummaryAction(
|
|
313
|
+
() => {},
|
|
314
|
+
async () => {
|
|
315
|
+
const options: IRefreshSummaryAckOptions = {
|
|
288
316
|
proposalHandle: summaryOpHandle,
|
|
289
317
|
ackHandle: summaryAckHandle,
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
318
|
+
summaryRefSeq: refSequenceNumber,
|
|
319
|
+
summaryLogger,
|
|
320
|
+
};
|
|
321
|
+
await this.refreshLatestSummaryAckAndHandleError(options);
|
|
322
|
+
},
|
|
323
|
+
() => {},
|
|
324
|
+
);
|
|
325
|
+
}
|
|
293
326
|
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
eventName: isIgnoredError
|
|
320
|
-
? "HandleSummaryAckErrorIgnored"
|
|
321
|
-
: "HandleLastSummaryAckError",
|
|
322
|
-
referenceSequenceNumber: refSequenceNumber,
|
|
323
|
-
proposalHandle: summaryOpHandle,
|
|
324
|
-
ackHandle: summaryAckHandle,
|
|
325
|
-
},
|
|
326
|
-
error,
|
|
327
|
-
);
|
|
328
|
-
}),
|
|
329
|
-
() => {},
|
|
327
|
+
private readonly refreshLatestSummaryAckAndHandleError = async (
|
|
328
|
+
options: IRefreshSummaryAckOptions,
|
|
329
|
+
) => {
|
|
330
|
+
return this.refreshLatestSummaryAckCallback(options).catch(async (error) => {
|
|
331
|
+
// If the error is 404, so maybe the fetched version no longer exists on server. We just
|
|
332
|
+
// ignore this error in that case, as that means we will have another summaryAck for the
|
|
333
|
+
// latest version with which we will refresh the state. However in case of single commit
|
|
334
|
+
// summary, we might be missing a summary ack, so in that case we are still fine as the
|
|
335
|
+
// code in `submitSummary` function in container runtime, will refresh the latest state
|
|
336
|
+
// by calling `prefetchLatestSummaryThenClose`. We will load the next summarizer from the
|
|
337
|
+
// updated state and be fine.
|
|
338
|
+
const isIgnoredError =
|
|
339
|
+
isFluidError(error) &&
|
|
340
|
+
error.errorType === DriverErrorTypes.fileNotFoundOrAccessDeniedError;
|
|
341
|
+
|
|
342
|
+
options.summaryLogger.sendTelemetryEvent(
|
|
343
|
+
{
|
|
344
|
+
eventName: isIgnoredError
|
|
345
|
+
? "HandleSummaryAckErrorIgnored"
|
|
346
|
+
: "HandleLastSummaryAckError",
|
|
347
|
+
referenceSequenceNumber: options.summaryRefSeq,
|
|
348
|
+
proposalHandle: options.proposalHandle,
|
|
349
|
+
ackHandle: options.ackHandle,
|
|
350
|
+
},
|
|
351
|
+
error,
|
|
330
352
|
);
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
return refSequenceNumber;
|
|
334
|
-
}
|
|
353
|
+
});
|
|
354
|
+
};
|
|
335
355
|
|
|
336
356
|
/**
|
|
337
|
-
* Responsible for receiving and processing all the
|
|
338
|
-
*
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
*
|
|
342
|
-
*
|
|
357
|
+
* Responsible for receiving and processing all the summary acks.
|
|
358
|
+
* It starts processing ACKs after the one for the summary this client loaded from (initialSequenceNumber). Any
|
|
359
|
+
* ACK before that is not interesting as it will simply be ignored.
|
|
360
|
+
*
|
|
361
|
+
* @param referenceSequenceNumber - The referenceSequenceNumber of the summary from which to start processing
|
|
362
|
+
* acks.
|
|
343
363
|
*/
|
|
344
|
-
private async processIncomingSummaryAcks(
|
|
345
|
-
|
|
346
|
-
|
|
364
|
+
private async processIncomingSummaryAcks(referenceSequenceNumber: number) {
|
|
365
|
+
// Start waiting for acks that are for summaries newer that the one this client loaded from.
|
|
366
|
+
let nextReferenceSequenceNumber = referenceSequenceNumber;
|
|
347
367
|
while (!this.disposed) {
|
|
348
|
-
const
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
summaryLogger.sendTelemetryEvent({
|
|
355
|
-
eventName: "processIncomingSummaryAcks",
|
|
356
|
-
referenceSequenceNumber: refSequenceNumber,
|
|
357
|
-
lastAckRefSeq,
|
|
358
|
-
});
|
|
359
|
-
|
|
360
|
-
refSequenceNumber = await this.handleSummaryAck();
|
|
361
|
-
// A valid Summary Ack must have been processed.
|
|
362
|
-
assert(refSequenceNumber >= 0, 0x58f /* Invalid ref sequence number */);
|
|
368
|
+
const ackedSummary = await this.summaryCollection.waitSummaryAck(
|
|
369
|
+
nextReferenceSequenceNumber,
|
|
370
|
+
);
|
|
371
|
+
await this.handleSummaryAck(ackedSummary);
|
|
372
|
+
nextReferenceSequenceNumber = ackedSummary.summaryOp.referenceSequenceNumber + 1;
|
|
363
373
|
}
|
|
364
374
|
}
|
|
365
375
|
|
|
@@ -571,10 +581,22 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
571
581
|
...options,
|
|
572
582
|
summaryLogger,
|
|
573
583
|
cancellationToken: this.cancellationToken,
|
|
584
|
+
latestSummaryRefSeqNum:
|
|
585
|
+
this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
|
|
574
586
|
};
|
|
575
587
|
const summarizeResult = this.generator.summarize(summaryOptions, resultsBuilder);
|
|
576
588
|
// ensure we wait till the end of the process
|
|
577
|
-
|
|
589
|
+
const result = await summarizeResult.receivedSummaryAckOrNack;
|
|
590
|
+
if (!result.success) {
|
|
591
|
+
this.mc.logger.sendErrorEvent(
|
|
592
|
+
{
|
|
593
|
+
eventName: "SummarizeFailed",
|
|
594
|
+
maxAttempts: 1,
|
|
595
|
+
summaryAttempts: 1,
|
|
596
|
+
},
|
|
597
|
+
result.error,
|
|
598
|
+
);
|
|
599
|
+
}
|
|
578
600
|
},
|
|
579
601
|
() => {
|
|
580
602
|
this.afterSummaryAction();
|
|
@@ -627,6 +649,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
627
649
|
let summaryAttempts = 0;
|
|
628
650
|
let summaryAttemptsPerPhase = 0;
|
|
629
651
|
let summaryAttemptPhase = 0;
|
|
652
|
+
let error: any;
|
|
630
653
|
while (summaryAttemptPhase < attemptOptions.length) {
|
|
631
654
|
if (this.cancellationToken.cancelled) {
|
|
632
655
|
return;
|
|
@@ -655,6 +678,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
655
678
|
...summarizeOptions,
|
|
656
679
|
summaryLogger,
|
|
657
680
|
cancellationToken: this.cancellationToken,
|
|
681
|
+
latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
|
|
658
682
|
};
|
|
659
683
|
|
|
660
684
|
// Note: no need to account for cancellationToken.waitCancelled here, as
|
|
@@ -665,6 +689,8 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
665
689
|
return;
|
|
666
690
|
}
|
|
667
691
|
|
|
692
|
+
error = ackNackResult.error;
|
|
693
|
+
|
|
668
694
|
// Check for retryDelay that can come from summaryNack, upload summary or submit summary flows.
|
|
669
695
|
// Retry the same step only once per retryAfter response.
|
|
670
696
|
const submitResult = await resultSummarize.summarySubmitted;
|
|
@@ -686,6 +712,14 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
686
712
|
await delay(delaySeconds * 1000);
|
|
687
713
|
}
|
|
688
714
|
}
|
|
715
|
+
this.mc.logger.sendErrorEvent(
|
|
716
|
+
{
|
|
717
|
+
eventName: "SummarizeFailed",
|
|
718
|
+
maxAttempts: attemptOptions.length,
|
|
719
|
+
summaryAttempts: summaryAttemptPhase,
|
|
720
|
+
},
|
|
721
|
+
error,
|
|
722
|
+
);
|
|
689
723
|
this.stopSummarizerCallback("failToSummarize");
|
|
690
724
|
}
|
|
691
725
|
|
|
@@ -716,6 +750,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
716
750
|
summaryLogger,
|
|
717
751
|
cancellationToken: this.cancellationToken,
|
|
718
752
|
finalAttempt,
|
|
753
|
+
latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
|
|
719
754
|
};
|
|
720
755
|
const summarizeResult = this.generator.summarize(summaryOptions);
|
|
721
756
|
return { summarizeProps, summarizeResult };
|
|
@@ -736,6 +771,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
736
771
|
let done = false;
|
|
737
772
|
let status: "success" | "failure" | "canceled" = "success";
|
|
738
773
|
let results: ISummarizeResults | undefined;
|
|
774
|
+
let error: any;
|
|
739
775
|
do {
|
|
740
776
|
currentAttempt++;
|
|
741
777
|
if (this.cancellationToken.cancelled) {
|
|
@@ -770,11 +806,12 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
770
806
|
|
|
771
807
|
// Emit "summarize" event for this failed attempt.
|
|
772
808
|
status = "failure";
|
|
809
|
+
error = ackNackResult.error;
|
|
773
810
|
const eventProps: ISummarizeEventProps = {
|
|
774
811
|
result: status,
|
|
775
812
|
currentAttempt,
|
|
776
813
|
maxAttempts,
|
|
777
|
-
error
|
|
814
|
+
error,
|
|
778
815
|
};
|
|
779
816
|
this.emit("summarize", eventProps);
|
|
780
817
|
|
|
@@ -811,6 +848,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
811
848
|
// Ack / nack is the final step, so if it succeeds we're done.
|
|
812
849
|
const ackNackResult = await summarizeResult.receivedSummaryAckOrNack;
|
|
813
850
|
status = ackNackResult.success ? "success" : "failure";
|
|
851
|
+
if (!ackNackResult.success) {
|
|
852
|
+
error = ackNackResult.error;
|
|
853
|
+
}
|
|
814
854
|
const eventProps: ISummarizeEventProps = {
|
|
815
855
|
result: status,
|
|
816
856
|
currentAttempt,
|
|
@@ -823,6 +863,14 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
823
863
|
|
|
824
864
|
// If summarization is still unsuccessful, stop the summarizer.
|
|
825
865
|
if (status === "failure") {
|
|
866
|
+
this.mc.logger.sendErrorEvent(
|
|
867
|
+
{
|
|
868
|
+
eventName: "SummarizeFailed",
|
|
869
|
+
maxAttempts,
|
|
870
|
+
summaryAttempts: currentAttempt,
|
|
871
|
+
},
|
|
872
|
+
error,
|
|
873
|
+
);
|
|
826
874
|
this.stopSummarizerCallback("failToSummarize");
|
|
827
875
|
}
|
|
828
876
|
return results;
|
|
@@ -14,10 +14,10 @@ import {
|
|
|
14
14
|
wrapErrorAndLog,
|
|
15
15
|
} from "@fluidframework/telemetry-utils";
|
|
16
16
|
import { IFluidHandleContext } from "@fluidframework/core-interfaces";
|
|
17
|
-
import { ISummaryConfiguration } from "../containerRuntime";
|
|
18
|
-
import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator";
|
|
19
|
-
import { SummaryCollection } from "./summaryCollection";
|
|
20
|
-
import { RunningSummarizer } from "./runningSummarizer";
|
|
17
|
+
import { ISummaryConfiguration } from "../containerRuntime.js";
|
|
18
|
+
import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator.js";
|
|
19
|
+
import { SummaryCollection } from "./summaryCollection.js";
|
|
20
|
+
import { RunningSummarizer } from "./runningSummarizer.js";
|
|
21
21
|
import {
|
|
22
22
|
IConnectableRuntime,
|
|
23
23
|
ISummarizer,
|
|
@@ -32,9 +32,9 @@ import {
|
|
|
32
32
|
EnqueueSummarizeResult,
|
|
33
33
|
ISummarizerEvents,
|
|
34
34
|
ISummarizeEventProps,
|
|
35
|
-
} from "./summarizerTypes";
|
|
36
|
-
import { SummarizeHeuristicData } from "./summarizerHeuristics";
|
|
37
|
-
import { SummarizeResultBuilder } from "./summaryGenerator";
|
|
35
|
+
} from "./summarizerTypes.js";
|
|
36
|
+
import { SummarizeHeuristicData } from "./summarizerHeuristics.js";
|
|
37
|
+
import { SummarizeResultBuilder } from "./summaryGenerator.js";
|
|
38
38
|
|
|
39
39
|
const summarizingError = "summarizingError";
|
|
40
40
|
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
IOrderedClientElection,
|
|
12
12
|
ISerializedElection,
|
|
13
13
|
ITrackedClient,
|
|
14
|
-
} from "./orderedClientElection";
|
|
15
|
-
import { ISummaryCollectionOpEvents } from "./summaryCollection";
|
|
14
|
+
} from "./orderedClientElection.js";
|
|
15
|
+
import { ISummaryCollectionOpEvents } from "./summaryCollection.js";
|
|
16
16
|
|
|
17
17
|
export const summarizerClientType = "summarizer";
|
|
18
18
|
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
|
|
6
6
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
|
|
7
7
|
import { Timer } from "@fluidframework/core-utils";
|
|
8
|
-
import { ISummaryConfigurationHeuristics } from "../containerRuntime";
|
|
8
|
+
import { ISummaryConfigurationHeuristics } from "../containerRuntime.js";
|
|
9
9
|
import {
|
|
10
10
|
ISummarizeHeuristicData,
|
|
11
11
|
ISummarizeHeuristicRunner,
|
|
12
12
|
ISummarizeAttempt,
|
|
13
13
|
ISummaryHeuristicStrategy,
|
|
14
|
-
} from "./summarizerTypes";
|
|
15
|
-
import { SummarizeReason } from "./summaryGenerator";
|
|
14
|
+
} from "./summarizerTypes.js";
|
|
15
|
+
import { SummarizeReason } from "./summaryGenerator.js";
|
|
16
16
|
|
|
17
17
|
/** Simple implementation of class for tracking summarize heuristic data. */
|
|
18
18
|
export class SummarizeHeuristicData implements ISummarizeHeuristicData {
|
|
@@ -7,6 +7,9 @@ export {
|
|
|
7
7
|
IRefreshSummaryResult,
|
|
8
8
|
ISummarizerNodeRootContract,
|
|
9
9
|
ValidateSummaryResult,
|
|
10
|
-
} from "./summarizerNodeUtils";
|
|
11
|
-
export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode";
|
|
12
|
-
export {
|
|
10
|
+
} from "./summarizerNodeUtils.js";
|
|
11
|
+
export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode.js";
|
|
12
|
+
export {
|
|
13
|
+
IRootSummarizerNodeWithGC,
|
|
14
|
+
createRootSummarizerNodeWithGC,
|
|
15
|
+
} from "./summarizerNodeWithGc.js";
|
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* Licensed under the MIT License.
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
|
-
import { ITelemetryBaseLogger
|
|
6
|
+
import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
|
|
7
7
|
import {
|
|
8
8
|
ISummarizerNode,
|
|
9
9
|
ISummarizerNodeConfig,
|
|
10
10
|
ISummarizeResult,
|
|
11
|
-
ISummaryTreeWithStats,
|
|
12
11
|
CreateChildSummarizerNodeParam,
|
|
13
12
|
CreateSummarizerNodeSource,
|
|
14
13
|
SummarizeInternalFn,
|
|
@@ -19,7 +18,6 @@ import {
|
|
|
19
18
|
ISequencedDocumentMessage,
|
|
20
19
|
SummaryType,
|
|
21
20
|
ISnapshotTree,
|
|
22
|
-
SummaryObject,
|
|
23
21
|
} from "@fluidframework/protocol-definitions";
|
|
24
22
|
import {
|
|
25
23
|
ITelemetryLoggerExt,
|
|
@@ -28,20 +26,20 @@ import {
|
|
|
28
26
|
PerformanceEvent,
|
|
29
27
|
TelemetryDataTag,
|
|
30
28
|
tagCodeArtifacts,
|
|
29
|
+
type ITelemetryErrorEventExt,
|
|
31
30
|
} from "@fluidframework/telemetry-utils";
|
|
32
31
|
import { assert, unreachableCase } from "@fluidframework/core-utils";
|
|
33
|
-
import {
|
|
32
|
+
import { mergeStats } from "@fluidframework/runtime-utils";
|
|
34
33
|
import {
|
|
35
34
|
EscapedPath,
|
|
36
35
|
ICreateChildDetails,
|
|
37
|
-
IInitialSummary,
|
|
38
36
|
IRefreshSummaryResult,
|
|
37
|
+
IStartSummaryResult,
|
|
39
38
|
ISummarizerNodeRootContract,
|
|
40
39
|
parseSummaryForSubtrees,
|
|
41
|
-
parseSummaryTreeForSubtrees,
|
|
42
40
|
SummaryNode,
|
|
43
41
|
ValidateSummaryResult,
|
|
44
|
-
} from "./summarizerNodeUtils";
|
|
42
|
+
} from "./summarizerNodeUtils.js";
|
|
45
43
|
|
|
46
44
|
export interface IRootSummarizerNode extends ISummarizerNode, ISummarizerNodeRootContract {}
|
|
47
45
|
|
|
@@ -86,7 +84,6 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
86
84
|
private _changeSequenceNumber: number,
|
|
87
85
|
/** Undefined means created without summary */
|
|
88
86
|
private _latestSummary?: SummaryNode,
|
|
89
|
-
private readonly initialSummary?: IInitialSummary,
|
|
90
87
|
protected wipSummaryLogger?: ITelemetryBaseLogger,
|
|
91
88
|
/** A unique id of this node to be logged when sending telemetry. */
|
|
92
89
|
protected telemetryNodeId?: string,
|
|
@@ -101,7 +98,22 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
101
98
|
});
|
|
102
99
|
}
|
|
103
100
|
|
|
104
|
-
|
|
101
|
+
/**
|
|
102
|
+
* In order to produce a summary with a summarizer node, the summarizer node system must be notified a summary has
|
|
103
|
+
* started. This is done by calling startSummary. This will track the reference sequence number of the summary and
|
|
104
|
+
* run some validation checks to ensure the summary is correct.
|
|
105
|
+
* @param referenceSequenceNumber - the number of ops processed up to this point
|
|
106
|
+
* @param summaryLogger - the logger to use for the summary
|
|
107
|
+
* @param latestSummaryRefSeqNum - the reference sequence number of the latest summary. Another way to think about
|
|
108
|
+
* it is the reference sequence number of the previous summary.
|
|
109
|
+
* @returns the number of nodes in the tree, the number of nodes that are invalid, and the different types of
|
|
110
|
+
* sequence number mismatches
|
|
111
|
+
*/
|
|
112
|
+
public startSummary(
|
|
113
|
+
referenceSequenceNumber: number,
|
|
114
|
+
summaryLogger: ITelemetryBaseLogger,
|
|
115
|
+
latestSummaryRefSeqNum: number,
|
|
116
|
+
): IStartSummaryResult {
|
|
105
117
|
assert(
|
|
106
118
|
this.wipSummaryLogger === undefined,
|
|
107
119
|
0x19f /* "wipSummaryLogger should not be set yet in startSummary" */,
|
|
@@ -111,12 +123,40 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
111
123
|
0x1a0 /* "Already tracking a summary" */,
|
|
112
124
|
);
|
|
113
125
|
|
|
126
|
+
let nodes = 1;
|
|
127
|
+
let invalidNodes = 0;
|
|
128
|
+
const sequenceNumberMismatchKeySet = new Set<string>();
|
|
129
|
+
const nodeLatestSummaryRefSeqNum = this._latestSummary?.referenceSequenceNumber;
|
|
130
|
+
if (
|
|
131
|
+
nodeLatestSummaryRefSeqNum !== undefined &&
|
|
132
|
+
latestSummaryRefSeqNum !== nodeLatestSummaryRefSeqNum
|
|
133
|
+
) {
|
|
134
|
+
invalidNodes++;
|
|
135
|
+
sequenceNumberMismatchKeySet.add(
|
|
136
|
+
`${latestSummaryRefSeqNum}-${nodeLatestSummaryRefSeqNum}`,
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
|
|
114
140
|
this.wipSummaryLogger = summaryLogger;
|
|
115
141
|
|
|
116
142
|
for (const child of this.children.values()) {
|
|
117
|
-
child.startSummary(
|
|
143
|
+
const childStartSummaryResult = child.startSummary(
|
|
144
|
+
referenceSequenceNumber,
|
|
145
|
+
this.wipSummaryLogger,
|
|
146
|
+
latestSummaryRefSeqNum,
|
|
147
|
+
);
|
|
148
|
+
nodes += childStartSummaryResult.nodes;
|
|
149
|
+
invalidNodes += childStartSummaryResult.invalidNodes;
|
|
150
|
+
for (const invalidSequenceNumber of childStartSummaryResult.mismatchNumbers) {
|
|
151
|
+
sequenceNumberMismatchKeySet.add(invalidSequenceNumber);
|
|
152
|
+
}
|
|
118
153
|
}
|
|
119
154
|
this.wipReferenceSequenceNumber = referenceSequenceNumber;
|
|
155
|
+
return {
|
|
156
|
+
nodes,
|
|
157
|
+
invalidNodes,
|
|
158
|
+
mismatchNumbers: sequenceNumberMismatchKeySet,
|
|
159
|
+
};
|
|
120
160
|
}
|
|
121
161
|
|
|
122
162
|
public async summarize(
|
|
@@ -521,7 +561,6 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
521
561
|
config,
|
|
522
562
|
createDetails.changeSequenceNumber,
|
|
523
563
|
createDetails.latestSummary,
|
|
524
|
-
createDetails.initialSummary,
|
|
525
564
|
this.wipSummaryLogger,
|
|
526
565
|
createDetails.telemetryNodeId,
|
|
527
566
|
);
|
|
@@ -549,7 +588,6 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
549
588
|
id: string,
|
|
550
589
|
createParam: CreateChildSummarizerNodeParam,
|
|
551
590
|
): ICreateChildDetails {
|
|
552
|
-
let initialSummary: IInitialSummary | undefined;
|
|
553
591
|
let latestSummary: SummaryNode | undefined;
|
|
554
592
|
let changeSequenceNumber: number;
|
|
555
593
|
|
|
@@ -562,63 +600,12 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
562
600
|
) {
|
|
563
601
|
// Prioritize latest summary if it was after this node was attached.
|
|
564
602
|
latestSummary = parentLatestSummary.createForChild(id);
|
|
565
|
-
} else {
|
|
566
|
-
const summary = convertToSummaryTree(
|
|
567
|
-
createParam.snapshot,
|
|
568
|
-
) as ISummaryTreeWithStats;
|
|
569
|
-
initialSummary = {
|
|
570
|
-
sequenceNumber: createParam.sequenceNumber,
|
|
571
|
-
id,
|
|
572
|
-
summary,
|
|
573
|
-
};
|
|
574
603
|
}
|
|
575
604
|
changeSequenceNumber = createParam.sequenceNumber;
|
|
576
605
|
break;
|
|
577
606
|
}
|
|
578
|
-
case CreateSummarizerNodeSource.FromSummary:
|
|
579
|
-
if (this.initialSummary === undefined) {
|
|
580
|
-
assert(
|
|
581
|
-
!!parentLatestSummary,
|
|
582
|
-
0x1ac /* "Cannot create child from summary if parent does not have latest summary" */,
|
|
583
|
-
);
|
|
584
|
-
}
|
|
585
|
-
// fallthrough to local
|
|
586
|
-
}
|
|
607
|
+
case CreateSummarizerNodeSource.FromSummary:
|
|
587
608
|
case CreateSummarizerNodeSource.Local: {
|
|
588
|
-
const parentInitialSummary = this.initialSummary;
|
|
589
|
-
if (parentInitialSummary !== undefined) {
|
|
590
|
-
let childSummary: SummaryObject | undefined;
|
|
591
|
-
if (parentInitialSummary.summary !== undefined) {
|
|
592
|
-
const { childrenTree } = parseSummaryTreeForSubtrees(
|
|
593
|
-
parentInitialSummary.summary.summary,
|
|
594
|
-
);
|
|
595
|
-
assert(
|
|
596
|
-
childrenTree.type === SummaryType.Tree,
|
|
597
|
-
0x1d6 /* "Parent summary object is not a tree" */,
|
|
598
|
-
);
|
|
599
|
-
childSummary = childrenTree.tree[id];
|
|
600
|
-
}
|
|
601
|
-
if (createParam.type === CreateSummarizerNodeSource.FromSummary) {
|
|
602
|
-
// Locally created would not have differential subtree.
|
|
603
|
-
assert(!!childSummary, 0x1ad /* "Missing child summary tree" */);
|
|
604
|
-
}
|
|
605
|
-
let childSummaryWithStats: ISummaryTreeWithStats | undefined;
|
|
606
|
-
if (childSummary !== undefined) {
|
|
607
|
-
assert(
|
|
608
|
-
childSummary.type === SummaryType.Tree,
|
|
609
|
-
0x1ae /* "Child summary object is not a tree" */,
|
|
610
|
-
);
|
|
611
|
-
childSummaryWithStats = {
|
|
612
|
-
summary: childSummary,
|
|
613
|
-
stats: calculateStats(childSummary),
|
|
614
|
-
};
|
|
615
|
-
}
|
|
616
|
-
initialSummary = {
|
|
617
|
-
sequenceNumber: parentInitialSummary.sequenceNumber,
|
|
618
|
-
id,
|
|
619
|
-
summary: childSummaryWithStats,
|
|
620
|
-
};
|
|
621
|
-
}
|
|
622
609
|
latestSummary = parentLatestSummary?.createForChild(id);
|
|
623
610
|
changeSequenceNumber = parentLatestSummary?.referenceSequenceNumber ?? -1;
|
|
624
611
|
break;
|
|
@@ -629,13 +616,12 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
629
616
|
}
|
|
630
617
|
}
|
|
631
618
|
|
|
632
|
-
const
|
|
619
|
+
const childTelemetryNodeId = `${this.telemetryNodeId ?? ""}/${id}`;
|
|
633
620
|
|
|
634
621
|
return {
|
|
635
|
-
initialSummary,
|
|
636
622
|
latestSummary,
|
|
637
623
|
changeSequenceNumber,
|
|
638
|
-
telemetryNodeId:
|
|
624
|
+
telemetryNodeId: childTelemetryNodeId,
|
|
639
625
|
};
|
|
640
626
|
}
|
|
641
627
|
|
|
@@ -682,7 +668,7 @@ export class SummarizerNode implements IRootSummarizerNode {
|
|
|
682
668
|
/**
|
|
683
669
|
* Creates and throws an error due to unexpected conditions.
|
|
684
670
|
*/
|
|
685
|
-
protected throwUnexpectedError(eventProps:
|
|
671
|
+
protected throwUnexpectedError(eventProps: ITelemetryErrorEventExt): never {
|
|
686
672
|
const error = new LoggingError(eventProps.eventName, {
|
|
687
673
|
...eventProps,
|
|
688
674
|
referenceSequenceNumber: this.wipReferenceSequenceNumber,
|
|
@@ -719,7 +705,6 @@ export const createRootSummarizerNode = (
|
|
|
719
705
|
referenceSequenceNumber === undefined
|
|
720
706
|
? undefined
|
|
721
707
|
: SummaryNode.createForRoot(referenceSequenceNumber),
|
|
722
|
-
undefined /* initialSummary */,
|
|
723
708
|
undefined /* wipSummaryLogger */,
|
|
724
709
|
"" /* telemetryNodeId */,
|
|
725
710
|
);
|