@fluidframework/container-runtime 2.0.0-internal.8.0.1 → 2.0.0-rc.1.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/CHANGELOG.md +34 -0
- package/README.md +1 -7
- package/api-extractor-esm.json +4 -0
- package/api-extractor-lint.json +1 -10
- package/api-extractor.json +1 -9
- package/api-report/container-runtime.api.md +18 -17
- package/dist/blobManager.d.ts +8 -3
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +15 -4
- package/dist/blobManager.js.map +1 -1
- package/dist/container-runtime-alpha.d.ts +265 -17
- package/dist/container-runtime-beta.d.ts +0 -42
- package/dist/container-runtime-public.d.ts +0 -42
- package/dist/container-runtime-untrimmed.d.ts +32 -17
- package/dist/containerRuntime.d.ts +8 -4
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +15 -29
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +5 -2
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +10 -3
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts +10 -3
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +51 -8
- package/dist/dataStores.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +15 -4
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +26 -19
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +29 -6
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +5 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +13 -6
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +18 -9
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +2 -1
- package/dist/gc/index.js.map +1 -1
- package/dist/messageTypes.d.ts +1 -1
- package/dist/messageTypes.js +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +1 -1
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +4 -4
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +4 -1
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.d.ts.map +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +5 -0
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +46 -17
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.js +1 -1
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +3 -1
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +7 -7
- package/dist/summary/summaryCollection.js +1 -1
- package/dist/summary/summaryCollection.js.map +1 -1
- package/lib/{batchTracker.d.ts → batchTracker.d.mts} +1 -1
- package/lib/batchTracker.d.mts.map +1 -0
- package/lib/{batchTracker.js → batchTracker.mjs} +1 -1
- package/lib/batchTracker.mjs.map +1 -0
- package/lib/{blobManager.d.ts → blobManager.d.mts} +9 -4
- package/lib/blobManager.d.mts.map +1 -0
- package/lib/{blobManager.js → blobManager.mjs} +17 -6
- package/lib/blobManager.mjs.map +1 -0
- package/lib/{connectionTelemetry.d.ts → connectionTelemetry.d.mts} +1 -1
- package/lib/connectionTelemetry.d.mts.map +1 -0
- package/lib/{connectionTelemetry.js → connectionTelemetry.mjs} +1 -1
- package/lib/connectionTelemetry.mjs.map +1 -0
- package/lib/{container-runtime-alpha.d.ts → container-runtime-alpha.d.mts} +265 -17
- package/lib/{container-runtime-beta.d.ts → container-runtime-beta.d.mts} +0 -42
- package/lib/{container-runtime-public.d.ts → container-runtime-public.d.mts} +0 -42
- package/lib/{container-runtime-untrimmed.d.ts → container-runtime-untrimmed.d.mts} +32 -17
- package/lib/{containerHandleContext.d.ts → containerHandleContext.d.mts} +2 -2
- package/lib/containerHandleContext.d.mts.map +1 -0
- package/lib/{containerHandleContext.js → containerHandleContext.mjs} +1 -1
- package/lib/containerHandleContext.mjs.map +1 -0
- package/lib/{containerRuntime.d.ts → containerRuntime.d.mts} +14 -14
- package/lib/containerRuntime.d.mts.map +1 -0
- package/lib/{containerRuntime.js → containerRuntime.mjs} +31 -22
- package/lib/containerRuntime.mjs.map +1 -0
- package/lib/{dataStore.d.ts → dataStore.d.mts} +3 -3
- package/lib/dataStore.d.mts.map +1 -0
- package/lib/{dataStore.js → dataStore.mjs} +1 -1
- package/lib/dataStore.mjs.map +1 -0
- package/lib/{dataStoreContext.d.ts → dataStoreContext.d.mts} +7 -4
- package/lib/dataStoreContext.d.mts.map +1 -0
- package/lib/{dataStoreContext.js → dataStoreContext.mjs} +13 -6
- package/lib/dataStoreContext.mjs.map +1 -0
- package/lib/{dataStoreContexts.d.ts → dataStoreContexts.d.mts} +2 -2
- package/lib/dataStoreContexts.d.mts.map +1 -0
- package/lib/{dataStoreContexts.js → dataStoreContexts.mjs} +1 -1
- package/lib/dataStoreContexts.mjs.map +1 -0
- package/lib/{dataStoreRegistry.d.ts → dataStoreRegistry.d.mts} +1 -1
- package/lib/dataStoreRegistry.d.mts.map +1 -0
- package/lib/{dataStoreRegistry.js → dataStoreRegistry.mjs} +1 -5
- package/lib/dataStoreRegistry.mjs.map +1 -0
- package/lib/{dataStores.d.ts → dataStores.d.mts} +17 -10
- package/lib/dataStores.d.mts.map +1 -0
- package/lib/{dataStores.js → dataStores.mjs} +58 -16
- package/lib/dataStores.mjs.map +1 -0
- package/lib/{deltaManagerProxyBase.d.ts → deltaManagerProxyBase.d.mts} +1 -1
- package/lib/deltaManagerProxyBase.d.mts.map +1 -0
- package/lib/{deltaManagerProxyBase.js → deltaManagerProxyBase.mjs} +1 -1
- package/lib/deltaManagerProxyBase.mjs.map +1 -0
- package/lib/{deltaManagerSummarizerProxy.d.ts → deltaManagerSummarizerProxy.d.mts} +2 -2
- package/lib/deltaManagerSummarizerProxy.d.mts.map +1 -0
- package/lib/{deltaManagerSummarizerProxy.js → deltaManagerSummarizerProxy.mjs} +3 -3
- package/lib/deltaManagerSummarizerProxy.mjs.map +1 -0
- package/lib/{deltaScheduler.d.ts → deltaScheduler.d.mts} +1 -1
- package/lib/deltaScheduler.d.mts.map +1 -0
- package/lib/{deltaScheduler.js → deltaScheduler.mjs} +1 -1
- package/lib/deltaScheduler.mjs.map +1 -0
- package/lib/{error.d.ts → error.d.mts} +1 -1
- package/lib/error.d.mts.map +1 -0
- package/lib/{error.js → error.mjs} +1 -1
- package/lib/error.mjs.map +1 -0
- package/lib/gc/{garbageCollection.d.ts → garbageCollection.d.mts} +5 -5
- package/lib/gc/garbageCollection.d.mts.map +1 -0
- package/lib/gc/{garbageCollection.js → garbageCollection.mjs} +28 -17
- package/lib/gc/garbageCollection.mjs.map +1 -0
- package/lib/gc/{gcConfigs.d.ts → gcConfigs.d.mts} +3 -3
- package/lib/gc/gcConfigs.d.mts.map +1 -0
- package/lib/gc/{gcConfigs.js → gcConfigs.mjs} +29 -22
- package/lib/gc/gcConfigs.mjs.map +1 -0
- package/lib/gc/{gcDefinitions.d.ts → gcDefinitions.d.mts} +33 -10
- package/lib/gc/gcDefinitions.d.mts.map +1 -0
- package/lib/gc/{gcDefinitions.js → gcDefinitions.mjs} +5 -3
- package/lib/gc/gcDefinitions.mjs.map +1 -0
- package/lib/gc/{gcHelpers.d.ts → gcHelpers.d.mts} +3 -3
- package/lib/gc/{gcHelpers.d.ts.map → gcHelpers.d.mts.map} +1 -1
- package/lib/gc/{gcHelpers.js → gcHelpers.mjs} +1 -1
- package/lib/gc/gcHelpers.mjs.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.d.ts → gcReferenceGraphAlgorithm.d.mts} +2 -2
- package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +1 -0
- package/lib/gc/{gcReferenceGraphAlgorithm.js → gcReferenceGraphAlgorithm.mjs} +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.d.ts → gcSummaryDefinitions.d.mts} +1 -1
- package/lib/gc/gcSummaryDefinitions.d.mts.map +1 -0
- package/lib/gc/{gcSummaryDefinitions.js → gcSummaryDefinitions.mjs} +1 -1
- package/lib/gc/gcSummaryDefinitions.mjs.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.d.ts → gcSummaryStateTracker.d.mts} +4 -4
- package/lib/gc/gcSummaryStateTracker.d.mts.map +1 -0
- package/lib/gc/{gcSummaryStateTracker.js → gcSummaryStateTracker.mjs} +2 -2
- package/lib/gc/gcSummaryStateTracker.mjs.map +1 -0
- package/lib/gc/{gcTelemetry.d.ts → gcTelemetry.d.mts} +18 -11
- package/lib/gc/gcTelemetry.d.mts.map +1 -0
- package/lib/gc/{gcTelemetry.js → gcTelemetry.mjs} +20 -11
- package/lib/gc/gcTelemetry.mjs.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.d.ts → gcUnreferencedStateTracker.d.mts} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.d.mts.map +1 -0
- package/lib/gc/{gcUnreferencedStateTracker.js → gcUnreferencedStateTracker.mjs} +2 -2
- package/lib/gc/gcUnreferencedStateTracker.mjs.map +1 -0
- package/lib/gc/{index.d.ts → index.d.mts} +9 -9
- package/lib/gc/index.d.mts.map +1 -0
- package/lib/gc/{index.js → index.mjs} +8 -8
- package/lib/gc/index.mjs.map +1 -0
- package/lib/{index.d.ts → index.d.mts} +8 -8
- package/lib/index.d.mts.map +1 -0
- package/lib/{index.js → index.mjs} +7 -9
- package/lib/index.mjs.map +1 -0
- package/lib/{messageTypes.d.ts → messageTypes.d.mts} +5 -5
- package/lib/messageTypes.d.mts.map +1 -0
- package/lib/{messageTypes.js → messageTypes.mjs} +2 -2
- package/lib/messageTypes.mjs.map +1 -0
- package/lib/{metadata.d.ts → metadata.d.mts} +1 -1
- package/lib/metadata.d.mts.map +1 -0
- package/lib/{metadata.js → metadata.mjs} +1 -1
- package/lib/metadata.mjs.map +1 -0
- package/lib/opLifecycle/{batchManager.d.ts → batchManager.d.mts} +3 -3
- package/lib/opLifecycle/batchManager.d.mts.map +1 -0
- package/lib/opLifecycle/{batchManager.js → batchManager.mjs} +1 -1
- package/lib/opLifecycle/batchManager.mjs.map +1 -0
- package/lib/opLifecycle/{definitions.d.ts → definitions.d.mts} +3 -3
- package/lib/opLifecycle/definitions.d.mts.map +1 -0
- package/lib/opLifecycle/{definitions.js → definitions.mjs} +1 -1
- package/lib/opLifecycle/definitions.mjs.map +1 -0
- package/lib/opLifecycle/index.d.mts +13 -0
- package/lib/opLifecycle/index.d.mts.map +1 -0
- package/lib/opLifecycle/index.mjs +12 -0
- package/lib/opLifecycle/index.mjs.map +1 -0
- package/lib/opLifecycle/{opCompressor.d.ts → opCompressor.d.mts} +2 -2
- package/lib/opLifecycle/opCompressor.d.mts.map +1 -0
- package/lib/opLifecycle/{opCompressor.js → opCompressor.mjs} +3 -3
- package/lib/opLifecycle/opCompressor.mjs.map +1 -0
- package/lib/opLifecycle/{opDecompressor.d.ts → opDecompressor.d.mts} +2 -2
- package/lib/opLifecycle/opDecompressor.d.mts.map +1 -0
- package/lib/opLifecycle/{opDecompressor.js → opDecompressor.mjs} +2 -2
- package/lib/opLifecycle/opDecompressor.mjs.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.d.ts → opGroupingManager.d.mts} +2 -2
- package/lib/opLifecycle/opGroupingManager.d.mts.map +1 -0
- package/lib/opLifecycle/{opGroupingManager.js → opGroupingManager.mjs} +1 -1
- package/lib/opLifecycle/opGroupingManager.mjs.map +1 -0
- package/lib/opLifecycle/{opSplitter.d.ts → opSplitter.d.mts} +2 -2
- package/lib/opLifecycle/opSplitter.d.mts.map +1 -0
- package/lib/opLifecycle/{opSplitter.js → opSplitter.mjs} +3 -3
- package/lib/opLifecycle/opSplitter.mjs.map +1 -0
- package/lib/opLifecycle/{outbox.d.ts → outbox.d.mts} +11 -11
- package/lib/opLifecycle/outbox.d.mts.map +1 -0
- package/lib/opLifecycle/{outbox.js → outbox.mjs} +6 -3
- package/lib/opLifecycle/outbox.mjs.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.d.ts → remoteMessageProcessor.d.mts} +5 -5
- package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +1 -0
- package/lib/opLifecycle/{remoteMessageProcessor.js → remoteMessageProcessor.mjs} +2 -2
- package/lib/opLifecycle/remoteMessageProcessor.mjs.map +1 -0
- package/lib/{opProperties.d.ts → opProperties.d.mts} +1 -1
- package/lib/opProperties.d.mts.map +1 -0
- package/lib/{opProperties.js → opProperties.mjs} +1 -1
- package/lib/opProperties.mjs.map +1 -0
- package/lib/{packageVersion.d.ts → packageVersion.d.mts} +2 -2
- package/lib/packageVersion.d.mts.map +1 -0
- package/lib/{packageVersion.js → packageVersion.mjs} +2 -2
- package/lib/packageVersion.mjs.map +1 -0
- package/lib/{pendingStateManager.d.ts → pendingStateManager.d.mts} +2 -2
- package/lib/pendingStateManager.d.mts.map +1 -0
- package/lib/{pendingStateManager.js → pendingStateManager.mjs} +2 -2
- package/lib/pendingStateManager.mjs.map +1 -0
- package/lib/{scheduleManager.d.ts → scheduleManager.d.mts} +1 -5
- package/lib/scheduleManager.d.mts.map +1 -0
- package/lib/{scheduleManager.js → scheduleManager.mjs} +3 -3
- package/lib/scheduleManager.mjs.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.d.ts → storageServiceWithAttachBlobs.d.mts} +1 -1
- package/lib/storageServiceWithAttachBlobs.d.mts.map +1 -0
- package/lib/{storageServiceWithAttachBlobs.js → storageServiceWithAttachBlobs.mjs} +1 -1
- package/lib/storageServiceWithAttachBlobs.mjs.map +1 -0
- package/lib/summary/{index.d.ts → index.d.mts} +13 -13
- package/lib/summary/index.d.mts.map +1 -0
- package/lib/summary/{index.js → index.mjs} +12 -12
- package/lib/summary/index.mjs.map +1 -0
- package/lib/summary/{orderedClientElection.d.ts → orderedClientElection.d.mts} +1 -5
- package/lib/summary/orderedClientElection.d.mts.map +1 -0
- package/lib/summary/{orderedClientElection.js → orderedClientElection.mjs} +2 -2
- package/lib/summary/orderedClientElection.mjs.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.d.ts → runWhileConnectedCoordinator.d.mts} +3 -3
- package/lib/summary/runWhileConnectedCoordinator.d.mts.map +1 -0
- package/lib/summary/{runWhileConnectedCoordinator.js → runWhileConnectedCoordinator.mjs} +1 -1
- package/lib/summary/runWhileConnectedCoordinator.mjs.map +1 -0
- package/lib/summary/{runningSummarizer.d.ts → runningSummarizer.d.mts} +10 -5
- package/lib/summary/runningSummarizer.d.mts.map +1 -0
- package/lib/summary/{runningSummarizer.js → runningSummarizer.mjs} +50 -21
- package/lib/summary/runningSummarizer.mjs.map +1 -0
- package/lib/summary/{summarizer.d.ts → summarizer.d.mts} +6 -6
- package/lib/summary/summarizer.d.mts.map +1 -0
- package/lib/summary/{summarizer.js → summarizer.mjs} +5 -5
- package/lib/summary/summarizer.mjs.map +1 -0
- package/lib/summary/{summarizerClientElection.d.ts → summarizerClientElection.d.mts} +3 -3
- package/lib/summary/summarizerClientElection.d.mts.map +1 -0
- package/lib/summary/{summarizerClientElection.js → summarizerClientElection.mjs} +1 -1
- package/lib/summary/summarizerClientElection.mjs.map +1 -0
- package/lib/summary/{summarizerHeuristics.d.ts → summarizerHeuristics.d.mts} +4 -4
- package/lib/summary/summarizerHeuristics.d.mts.map +1 -0
- package/lib/summary/{summarizerHeuristics.js → summarizerHeuristics.mjs} +1 -1
- package/lib/summary/summarizerHeuristics.mjs.map +1 -0
- package/lib/summary/summarizerNode/{index.d.ts → index.d.mts} +4 -4
- package/lib/summary/summarizerNode/index.d.mts.map +1 -0
- package/lib/summary/summarizerNode/{index.js → index.mjs} +3 -3
- package/lib/summary/summarizerNode/index.mjs.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.d.ts → summarizerNode.d.mts} +2 -2
- package/lib/summary/summarizerNode/summarizerNode.d.mts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNode.js → summarizerNode.mjs} +2 -2
- package/lib/summary/summarizerNode/summarizerNode.mjs.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.d.ts → summarizerNodeUtils.d.mts} +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeUtils.js → summarizerNodeUtils.mjs} +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.ts → summarizerNodeWithGc.d.mts} +3 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +1 -0
- package/lib/summary/summarizerNode/{summarizerNodeWithGc.js → summarizerNodeWithGc.mjs} +4 -4
- package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +1 -0
- package/lib/summary/{summarizerTypes.d.ts → summarizerTypes.d.mts} +7 -5
- package/lib/summary/summarizerTypes.d.mts.map +1 -0
- package/lib/summary/{summarizerTypes.js → summarizerTypes.mjs} +1 -1
- package/lib/summary/summarizerTypes.mjs.map +1 -0
- package/lib/summary/{summaryCollection.d.ts → summaryCollection.d.mts} +8 -8
- package/lib/summary/summaryCollection.d.mts.map +1 -0
- package/lib/summary/{summaryCollection.js → summaryCollection.mjs} +2 -2
- package/lib/summary/summaryCollection.mjs.map +1 -0
- package/lib/summary/{summaryFormat.d.ts → summaryFormat.d.mts} +2 -2
- package/lib/summary/summaryFormat.d.mts.map +1 -0
- package/lib/summary/{summaryFormat.js → summaryFormat.mjs} +1 -1
- package/lib/summary/summaryFormat.mjs.map +1 -0
- package/lib/summary/{summaryGenerator.d.ts → summaryGenerator.d.mts} +3 -3
- package/lib/summary/summaryGenerator.d.mts.map +1 -0
- package/lib/summary/{summaryGenerator.js → summaryGenerator.mjs} +1 -1
- package/lib/summary/summaryGenerator.mjs.map +1 -0
- package/lib/summary/{summaryManager.d.ts → summaryManager.d.mts} +5 -5
- package/lib/summary/summaryManager.d.mts.map +1 -0
- package/lib/summary/{summaryManager.js → summaryManager.mjs} +2 -2
- package/lib/summary/summaryManager.mjs.map +1 -0
- package/lib/{throttler.d.ts → throttler.d.mts} +1 -1
- package/lib/throttler.d.mts.map +1 -0
- package/lib/{throttler.js → throttler.mjs} +1 -1
- package/lib/throttler.mjs.map +1 -0
- package/package.json +145 -39
- package/src/blobManager.ts +15 -4
- package/src/containerRuntime.ts +15 -4
- package/src/dataStoreContext.ts +11 -4
- package/src/dataStores.ts +61 -7
- package/src/gc/garbageCollection.ts +18 -4
- package/src/gc/gcConfigs.ts +28 -20
- package/src/gc/gcDefinitions.ts +30 -6
- package/src/gc/gcTelemetry.ts +19 -9
- package/src/gc/index.ts +3 -0
- package/src/messageTypes.ts +1 -1
- package/src/opLifecycle/definitions.ts +1 -1
- package/src/opLifecycle/outbox.ts +5 -2
- package/src/packageVersion.ts +1 -1
- package/src/summary/runWhileConnectedCoordinator.ts +1 -1
- package/src/summary/runningSummarizer.ts +58 -25
- package/src/summary/summarizer.ts +1 -1
- package/src/summary/summarizerTypes.ts +3 -1
- package/src/summary/summaryCollection.ts +7 -7
- package/tsconfig.json +6 -4
- package/lib/batchTracker.d.ts.map +0 -1
- package/lib/batchTracker.js.map +0 -1
- package/lib/blobManager.d.ts.map +0 -1
- package/lib/blobManager.js.map +0 -1
- package/lib/connectionTelemetry.d.ts.map +0 -1
- package/lib/connectionTelemetry.js.map +0 -1
- package/lib/containerHandleContext.d.ts.map +0 -1
- package/lib/containerHandleContext.js.map +0 -1
- package/lib/containerRuntime.d.ts.map +0 -1
- package/lib/containerRuntime.js.map +0 -1
- package/lib/dataStore.d.ts.map +0 -1
- package/lib/dataStore.js.map +0 -1
- package/lib/dataStoreContext.d.ts.map +0 -1
- package/lib/dataStoreContext.js.map +0 -1
- package/lib/dataStoreContexts.d.ts.map +0 -1
- package/lib/dataStoreContexts.js.map +0 -1
- package/lib/dataStoreRegistry.d.ts.map +0 -1
- package/lib/dataStoreRegistry.js.map +0 -1
- package/lib/dataStores.d.ts.map +0 -1
- package/lib/dataStores.js.map +0 -1
- package/lib/deltaManagerProxyBase.d.ts.map +0 -1
- package/lib/deltaManagerProxyBase.js.map +0 -1
- package/lib/deltaManagerSummarizerProxy.d.ts.map +0 -1
- package/lib/deltaManagerSummarizerProxy.js.map +0 -1
- package/lib/deltaScheduler.d.ts.map +0 -1
- package/lib/deltaScheduler.js.map +0 -1
- package/lib/error.d.ts.map +0 -1
- package/lib/error.js.map +0 -1
- package/lib/gc/garbageCollection.d.ts.map +0 -1
- package/lib/gc/garbageCollection.js.map +0 -1
- package/lib/gc/gcConfigs.d.ts.map +0 -1
- package/lib/gc/gcConfigs.js.map +0 -1
- package/lib/gc/gcDefinitions.d.ts.map +0 -1
- package/lib/gc/gcDefinitions.js.map +0 -1
- package/lib/gc/gcHelpers.js.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +0 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +0 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +0 -1
- package/lib/gc/gcSummaryDefinitions.js.map +0 -1
- package/lib/gc/gcSummaryStateTracker.d.ts.map +0 -1
- package/lib/gc/gcSummaryStateTracker.js.map +0 -1
- package/lib/gc/gcTelemetry.d.ts.map +0 -1
- package/lib/gc/gcTelemetry.js.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.d.ts.map +0 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +0 -1
- package/lib/gc/index.d.ts.map +0 -1
- package/lib/gc/index.js.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/index.js.map +0 -1
- package/lib/messageTypes.d.ts.map +0 -1
- package/lib/messageTypes.js.map +0 -1
- package/lib/metadata.d.ts.map +0 -1
- package/lib/metadata.js.map +0 -1
- package/lib/opLifecycle/batchManager.d.ts.map +0 -1
- package/lib/opLifecycle/batchManager.js.map +0 -1
- package/lib/opLifecycle/definitions.d.ts.map +0 -1
- package/lib/opLifecycle/definitions.js.map +0 -1
- package/lib/opLifecycle/index.d.ts +0 -13
- package/lib/opLifecycle/index.d.ts.map +0 -1
- package/lib/opLifecycle/index.js +0 -12
- package/lib/opLifecycle/index.js.map +0 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +0 -1
- package/lib/opLifecycle/opCompressor.js.map +0 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +0 -1
- package/lib/opLifecycle/opDecompressor.js.map +0 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +0 -1
- package/lib/opLifecycle/opGroupingManager.js.map +0 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +0 -1
- package/lib/opLifecycle/opSplitter.js.map +0 -1
- package/lib/opLifecycle/outbox.d.ts.map +0 -1
- package/lib/opLifecycle/outbox.js.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +0 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +0 -1
- package/lib/opProperties.d.ts.map +0 -1
- package/lib/opProperties.js.map +0 -1
- package/lib/packageVersion.d.ts.map +0 -1
- package/lib/packageVersion.js.map +0 -1
- package/lib/pendingStateManager.d.ts.map +0 -1
- package/lib/pendingStateManager.js.map +0 -1
- package/lib/scheduleManager.d.ts.map +0 -1
- package/lib/scheduleManager.js.map +0 -1
- package/lib/storageServiceWithAttachBlobs.d.ts.map +0 -1
- package/lib/storageServiceWithAttachBlobs.js.map +0 -1
- package/lib/summary/index.d.ts.map +0 -1
- package/lib/summary/index.js.map +0 -1
- package/lib/summary/orderedClientElection.d.ts.map +0 -1
- package/lib/summary/orderedClientElection.js.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.d.ts.map +0 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +0 -1
- package/lib/summary/runningSummarizer.d.ts.map +0 -1
- package/lib/summary/runningSummarizer.js.map +0 -1
- package/lib/summary/summarizer.d.ts.map +0 -1
- package/lib/summary/summarizer.js.map +0 -1
- package/lib/summary/summarizerClientElection.d.ts.map +0 -1
- package/lib/summary/summarizerClientElection.js.map +0 -1
- package/lib/summary/summarizerHeuristics.d.ts.map +0 -1
- package/lib/summary/summarizerHeuristics.js.map +0 -1
- package/lib/summary/summarizerNode/index.d.ts.map +0 -1
- package/lib/summary/summarizerNode/index.js.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNode.js.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +0 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +0 -1
- package/lib/summary/summarizerTypes.d.ts.map +0 -1
- package/lib/summary/summarizerTypes.js.map +0 -1
- package/lib/summary/summaryCollection.d.ts.map +0 -1
- package/lib/summary/summaryCollection.js.map +0 -1
- package/lib/summary/summaryFormat.d.ts.map +0 -1
- package/lib/summary/summaryFormat.js.map +0 -1
- package/lib/summary/summaryGenerator.d.ts.map +0 -1
- package/lib/summary/summaryGenerator.js.map +0 -1
- package/lib/summary/summaryManager.d.ts.map +0 -1
- package/lib/summary/summaryManager.js.map +0 -1
- package/lib/throttler.d.ts.map +0 -1
- package/lib/throttler.js.map +0 -1
- package/tsconfig.esnext.json +0 -7
package/src/gc/gcConfigs.ts
CHANGED
|
@@ -31,6 +31,7 @@ import {
|
|
|
31
31
|
gcDisableThrowOnTombstoneLoadOptionName,
|
|
32
32
|
defaultSweepGracePeriodMs,
|
|
33
33
|
gcGenerationOptionName,
|
|
34
|
+
IGCMetadata_Deprecated,
|
|
34
35
|
} from "./gcDefinitions";
|
|
35
36
|
import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers";
|
|
36
37
|
|
|
@@ -54,7 +55,7 @@ export function generateGCConfigs(
|
|
|
54
55
|
): IGarbageCollectorConfigs {
|
|
55
56
|
let gcEnabled: boolean;
|
|
56
57
|
let sessionExpiryTimeoutMs: number | undefined;
|
|
57
|
-
let
|
|
58
|
+
let tombstoneTimeoutMs: number | undefined;
|
|
58
59
|
let persistedGcFeatureMatrix: GCFeatureMatrix | undefined;
|
|
59
60
|
let gcVersionInBaseSnapshot: GCVersion | undefined;
|
|
60
61
|
|
|
@@ -63,21 +64,25 @@ export function generateGCConfigs(
|
|
|
63
64
|
* 1. Whether running GC mark phase is allowed or not.
|
|
64
65
|
* 2. Whether running GC sweep phase is allowed or not.
|
|
65
66
|
* 3. Whether GC session expiry is enabled or not.
|
|
66
|
-
* For existing containers, we get this information from the
|
|
67
|
+
* For existing containers, we get this information from the metadata blob of its summary.
|
|
67
68
|
*/
|
|
68
69
|
if (createParams.existing) {
|
|
69
|
-
|
|
70
|
-
|
|
70
|
+
const metadata = createParams.metadata;
|
|
71
|
+
gcVersionInBaseSnapshot = getGCVersion(metadata);
|
|
72
|
+
// Existing documents which did not have metadata blob or had GC disabled have version as 0. For all
|
|
71
73
|
// other existing documents, GC is enabled.
|
|
72
74
|
gcEnabled = gcVersionInBaseSnapshot > 0;
|
|
73
|
-
sessionExpiryTimeoutMs =
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
75
|
+
sessionExpiryTimeoutMs = metadata?.sessionExpiryTimeoutMs;
|
|
76
|
+
const legacyPersistedSweepTimeoutMs = (metadata as IGCMetadata_Deprecated)?.sweepTimeoutMs;
|
|
77
|
+
tombstoneTimeoutMs =
|
|
78
|
+
metadata?.tombstoneTimeoutMs ??
|
|
79
|
+
legacyPersistedSweepTimeoutMs ?? // Backfill old documents that have sweepTimeoutMs instead of tombstoneTimeoutMs
|
|
80
|
+
computeTombstoneTimeout(sessionExpiryTimeoutMs); // Backfill old documents that didn't persist either value
|
|
81
|
+
persistedGcFeatureMatrix = metadata?.gcFeatureMatrix;
|
|
77
82
|
} else {
|
|
78
83
|
// This Test Override only applies for new containers
|
|
79
|
-
const
|
|
80
|
-
"Fluid.GarbageCollection.TestOverride.
|
|
84
|
+
const testOverrideTombstoneTimeoutMs = mc.config.getNumber(
|
|
85
|
+
"Fluid.GarbageCollection.TestOverride.TombstoneTimeoutMs",
|
|
81
86
|
);
|
|
82
87
|
|
|
83
88
|
// For new documents, GC is enabled by default. It can be explicitly disabled by setting the gcAllowed
|
|
@@ -89,7 +94,8 @@ export function generateGCConfigs(
|
|
|
89
94
|
sessionExpiryTimeoutMs =
|
|
90
95
|
createParams.gcOptions.sessionExpiryTimeoutMs ?? defaultSessionExpiryDurationMs;
|
|
91
96
|
}
|
|
92
|
-
|
|
97
|
+
tombstoneTimeoutMs =
|
|
98
|
+
testOverrideTombstoneTimeoutMs ?? computeTombstoneTimeout(sessionExpiryTimeoutMs);
|
|
93
99
|
|
|
94
100
|
const gcGeneration = createParams.gcOptions[gcGenerationOptionName];
|
|
95
101
|
if (gcGeneration !== undefined) {
|
|
@@ -131,7 +137,7 @@ export function generateGCConfigs(
|
|
|
131
137
|
* Whether sweep should run or not. This refers to whether Tombstones should fail on load and whether
|
|
132
138
|
* sweep-ready nodes should be deleted.
|
|
133
139
|
*
|
|
134
|
-
* Assuming overall GC is enabled and
|
|
140
|
+
* Assuming overall GC is enabled and Tombstone timeout is present, the following conditions have to be met to run sweep:
|
|
135
141
|
*
|
|
136
142
|
* 1. Sweep should be enabled for this container.
|
|
137
143
|
* 2. Sweep should be enabled for this session.
|
|
@@ -139,7 +145,7 @@ export function generateGCConfigs(
|
|
|
139
145
|
* These conditions can be overridden via the RunSweep feature flag.
|
|
140
146
|
*/
|
|
141
147
|
const shouldRunSweep =
|
|
142
|
-
!shouldRunGC ||
|
|
148
|
+
!shouldRunGC || tombstoneTimeoutMs === undefined
|
|
143
149
|
? false
|
|
144
150
|
: mc.config.getBoolean(runSweepKey) ??
|
|
145
151
|
(sweepAllowed && createParams.gcOptions.enableGCSweep === true);
|
|
@@ -150,9 +156,9 @@ export function generateGCConfigs(
|
|
|
150
156
|
createParams.gcOptions.inactiveTimeoutMs ??
|
|
151
157
|
defaultInactiveTimeoutMs;
|
|
152
158
|
|
|
153
|
-
// Inactive timeout must be greater than
|
|
154
|
-
if (
|
|
155
|
-
throw new UsageError("inactive timeout should not be greater than the
|
|
159
|
+
// Inactive timeout must be greater than tombstone timeout since a node goes from active -> inactive -> sweep ready.
|
|
160
|
+
if (tombstoneTimeoutMs !== undefined && inactiveTimeoutMs > tombstoneTimeoutMs) {
|
|
161
|
+
throw new UsageError("inactive timeout should not be greater than the tombstone timeout");
|
|
156
162
|
}
|
|
157
163
|
|
|
158
164
|
// Whether we are running in test mode. In this mode, unreferenced nodes are immediately deleted.
|
|
@@ -190,7 +196,7 @@ export function generateGCConfigs(
|
|
|
190
196
|
testMode,
|
|
191
197
|
tombstoneMode,
|
|
192
198
|
sessionExpiryTimeoutMs,
|
|
193
|
-
|
|
199
|
+
tombstoneTimeoutMs,
|
|
194
200
|
sweepGracePeriodMs,
|
|
195
201
|
inactiveTimeoutMs,
|
|
196
202
|
persistedGcFeatureMatrix,
|
|
@@ -203,14 +209,16 @@ export function generateGCConfigs(
|
|
|
203
209
|
}
|
|
204
210
|
|
|
205
211
|
/**
|
|
206
|
-
*
|
|
207
|
-
*
|
|
212
|
+
* Tombstone timeout is the time after which unreferenced content is guaranteed not to be revived (re-referenced).
|
|
213
|
+
* Tombstone timeout = session expiry timeout + snapshot cache expiry timeout + one day buffer.
|
|
208
214
|
*
|
|
209
215
|
* The snapshot cache expiry timeout cannot be known precisely but the upper bound is 5 days.
|
|
210
216
|
* The buffer is added to account for any clock skew or other edge cases.
|
|
211
217
|
* We use server timestamps throughout so the skew should be minimal but make it 1 day to be safe.
|
|
218
|
+
*
|
|
219
|
+
* If there is no Session Expiry timeout, GC can never guarantee an object won't be revived, so return undefined.
|
|
212
220
|
*/
|
|
213
|
-
function
|
|
221
|
+
function computeTombstoneTimeout(sessionExpiryTimeoutMs: number | undefined): number | undefined {
|
|
214
222
|
const bufferMs = oneDayMs;
|
|
215
223
|
return sessionExpiryTimeoutMs && sessionExpiryTimeoutMs + maxSnapshotCacheExpiryMs + bufferMs;
|
|
216
224
|
}
|
package/src/gc/gcDefinitions.ts
CHANGED
|
@@ -74,13 +74,15 @@ export const gcVersionUpgradeToV4Key = "Fluid.GarbageCollection.GCVersionUpgrade
|
|
|
74
74
|
export const disableDatastoreSweepKey = "Fluid.GarbageCollection.DisableDataStoreSweep";
|
|
75
75
|
/** Config key to disable GC sweep for attachment blobs. */
|
|
76
76
|
export const disableAttachmentBlobSweepKey = "Fluid.GarbageCollection.DisableAttachmentBlobSweep";
|
|
77
|
+
/** Config key to revert new paradigm of detecting outbound routes in ContainerRuntime layer (use true) */
|
|
78
|
+
export const detectOutboundRoutesViaDDSKey = "Fluid.GarbageCollection.DetectOutboundRoutesViaDDS";
|
|
77
79
|
|
|
78
80
|
// One day in milliseconds.
|
|
79
81
|
export const oneDayMs = 1 * 24 * 60 * 60 * 1000;
|
|
80
82
|
|
|
81
83
|
/**
|
|
82
|
-
* The maximum snapshot cache expiry in the driver. This is used to calculate the
|
|
83
|
-
*
|
|
84
|
+
* The maximum snapshot cache expiry in the driver. This is used to calculate the tombstone timeout.
|
|
85
|
+
* Tombstone timeout = session expiry timeout + snapshot cache expiry timeout + a buffer.
|
|
84
86
|
* The snapshot cache expiry timeout cannot be known precisely but the upper bound is 5 days, i.e., any snapshot
|
|
85
87
|
* in cache will be invalidated before 5 days.
|
|
86
88
|
*/
|
|
@@ -114,6 +116,21 @@ export type GCFeatureMatrix =
|
|
|
114
116
|
};
|
|
115
117
|
|
|
116
118
|
/**
|
|
119
|
+
* Deprecated properties formerly included in @see IGCMetadata.
|
|
120
|
+
* These may be found in old snapshots, so we need to support them for backwards compatibility.
|
|
121
|
+
*/
|
|
122
|
+
export interface IGCMetadata_Deprecated {
|
|
123
|
+
/**
|
|
124
|
+
* How long to wait after an object is unreferenced before deleting it via GC Sweep
|
|
125
|
+
*
|
|
126
|
+
* @deprecated Replaced by @see IGCMetadata.tombstoneTimeoutMs
|
|
127
|
+
*/
|
|
128
|
+
readonly sweepTimeoutMs?: number;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
/**
|
|
132
|
+
* GC-specific metadata to be written into the summary.
|
|
133
|
+
*
|
|
117
134
|
* @alpha
|
|
118
135
|
*/
|
|
119
136
|
export interface IGCMetadata {
|
|
@@ -148,8 +165,15 @@ export interface IGCMetadata {
|
|
|
148
165
|
readonly sweepEnabled?: boolean;
|
|
149
166
|
/** If this is present, the session for this container will expire after this time and the container will close */
|
|
150
167
|
readonly sessionExpiryTimeoutMs?: number;
|
|
151
|
-
/**
|
|
152
|
-
|
|
168
|
+
/**
|
|
169
|
+
* How long to wait after an object is unreferenced before it becomes a Tombstone.
|
|
170
|
+
*
|
|
171
|
+
* After this point, there's a grace period before the object is deleted.
|
|
172
|
+
* @see IGCRuntimeOptions.sweepGracePeriodMs
|
|
173
|
+
*
|
|
174
|
+
* So the full sweep timeout in a session is tombstoneTimeoutMs + sweepGracePeriodMs.
|
|
175
|
+
*/
|
|
176
|
+
readonly tombstoneTimeoutMs?: number;
|
|
153
177
|
}
|
|
154
178
|
|
|
155
179
|
/**
|
|
@@ -445,8 +469,8 @@ export interface IGarbageCollectorConfigs {
|
|
|
445
469
|
readonly runFullGC: boolean | undefined;
|
|
446
470
|
/** The time in ms to expire a session for a client for gc. */
|
|
447
471
|
readonly sessionExpiryTimeoutMs: number | undefined;
|
|
448
|
-
/** The time after which an unreferenced node
|
|
449
|
-
readonly
|
|
472
|
+
/** The time after which an unreferenced node can be Tombstoned - i.e. GC knows it can't be referenced again (revived). */
|
|
473
|
+
readonly tombstoneTimeoutMs: number | undefined;
|
|
450
474
|
/**
|
|
451
475
|
* The delay between tombstone and sweep. Not persisted, so concurrent sessions may use different values.
|
|
452
476
|
* Sweep is implemented in an eventually-consistent way so this is acceptable.
|
package/src/gc/gcTelemetry.ts
CHANGED
|
@@ -66,13 +66,20 @@ interface INodeUsageProps extends ICommonProps {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
/**
|
|
69
|
-
* Encapsulates the logic that tracks the various telemetry logged by the Garbage Collector.
|
|
70
|
-
*
|
|
69
|
+
* Encapsulates the logic that tracks the various telemetry logged by the Garbage Collector.
|
|
70
|
+
*
|
|
71
|
+
* These events are not logged as errors, just generic events, since there can be false positives:
|
|
72
|
+
*
|
|
71
73
|
* 1. inactiveObject telemetry - When an inactive node is used - A node that has been unreferenced for inactiveTimeoutMs.
|
|
72
|
-
* 2.
|
|
73
|
-
* 3.
|
|
74
|
-
*
|
|
75
|
-
*
|
|
74
|
+
* 2. tombstoneReadyObject telemetry - When a tombstone-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs.
|
|
75
|
+
* 3. sweepReadyObject telemetry - When a sweep-ready node is used - A node that has been unreferenced for tombstoneTimeoutMs + sweepGracePeriodMs.
|
|
76
|
+
*
|
|
77
|
+
* These events are logged as errors since they are based on the core GC logic:
|
|
78
|
+
*
|
|
79
|
+
* 1. Tombstone telemetry - When a tombstoned node is used - A node that has been marked as tombstone.
|
|
80
|
+
* 2. Unknown outbound reference telemetry - When a node is referenced but GC was not notified of it when the new reference appeared.
|
|
81
|
+
*
|
|
82
|
+
* Note: The telemetry for a Deleted node being used is logged elsewhere in this package.
|
|
76
83
|
*/
|
|
77
84
|
export class GCTelemetryTracker {
|
|
78
85
|
// Keeps track of unreferenced events that are logged for a node. This is used to limit the log generation to one
|
|
@@ -147,11 +154,11 @@ export class GCTelemetryTracker {
|
|
|
147
154
|
case UnreferencedState.Inactive:
|
|
148
155
|
return this.configs.inactiveTimeoutMs;
|
|
149
156
|
case UnreferencedState.TombstoneReady:
|
|
150
|
-
return this.configs.
|
|
157
|
+
return this.configs.tombstoneTimeoutMs;
|
|
151
158
|
case UnreferencedState.SweepReady:
|
|
152
159
|
return (
|
|
153
|
-
this.configs.
|
|
154
|
-
this.configs.
|
|
160
|
+
this.configs.tombstoneTimeoutMs &&
|
|
161
|
+
this.configs.tombstoneTimeoutMs + this.configs.sweepGracePeriodMs
|
|
155
162
|
);
|
|
156
163
|
default:
|
|
157
164
|
return undefined;
|
|
@@ -389,6 +396,9 @@ export class GCTelemetryTracker {
|
|
|
389
396
|
fromPkg: fromPkg?.join("/"),
|
|
390
397
|
}),
|
|
391
398
|
};
|
|
399
|
+
|
|
400
|
+
// These are logged as generic events and not errors because there can be false positives. The Tombstone
|
|
401
|
+
// and Delete errors are separately logged and are reliable.
|
|
392
402
|
logger.sendTelemetryEvent(event);
|
|
393
403
|
}
|
|
394
404
|
}
|
package/src/gc/index.ts
CHANGED
|
@@ -21,6 +21,7 @@ export {
|
|
|
21
21
|
IGarbageCollectorConfigs,
|
|
22
22
|
IGarbageCollectorCreateParams,
|
|
23
23
|
IGCMetadata,
|
|
24
|
+
IGCMetadata_Deprecated,
|
|
24
25
|
IGCResult,
|
|
25
26
|
IGCRuntimeOptions,
|
|
26
27
|
IMarkPhaseStats,
|
|
@@ -33,9 +34,11 @@ export {
|
|
|
33
34
|
stableGCVersion,
|
|
34
35
|
disableAttachmentBlobSweepKey,
|
|
35
36
|
disableDatastoreSweepKey,
|
|
37
|
+
detectOutboundRoutesViaDDSKey,
|
|
36
38
|
UnreferencedState,
|
|
37
39
|
throwOnTombstoneLoadOverrideKey,
|
|
38
40
|
GarbageCollectionMessage,
|
|
41
|
+
ISweepMessage,
|
|
39
42
|
} from "./gcDefinitions";
|
|
40
43
|
export {
|
|
41
44
|
cloneGCData,
|
package/src/messageTypes.ts
CHANGED
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import { IBatchMessage } from "@fluidframework/container-definitions";
|
|
7
7
|
import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
|
|
8
|
-
import { CompressionAlgorithms } from "
|
|
8
|
+
import { CompressionAlgorithms } from "../containerRuntime";
|
|
9
9
|
import { ContainerMessageType } from "../messageTypes";
|
|
10
10
|
|
|
11
11
|
/**
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
estimateSocketSize,
|
|
21
21
|
sequenceNumbersMatch,
|
|
22
22
|
} from "./batchManager";
|
|
23
|
-
import { BatchMessage, IBatch } from "./definitions";
|
|
23
|
+
import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions";
|
|
24
24
|
import { OpCompressor } from "./opCompressor";
|
|
25
25
|
import { OpGroupingManager } from "./opGroupingManager";
|
|
26
26
|
import { OpSplitter } from "./opSplitter";
|
|
@@ -462,8 +462,11 @@ export class Outbox {
|
|
|
462
462
|
}
|
|
463
463
|
|
|
464
464
|
public checkpoint() {
|
|
465
|
+
// This variable is declared with a specific type so that we have a standard import of the IBatchCheckpoint type.
|
|
466
|
+
// When the type is inferred, the generated .d.ts uses a dynamic import which doesn't resolve.
|
|
467
|
+
const mainBatch: IBatchCheckpoint = this.mainBatch.checkpoint();
|
|
465
468
|
return {
|
|
466
|
-
mainBatch
|
|
469
|
+
mainBatch,
|
|
467
470
|
attachFlowBatch: this.attachFlowBatch.checkpoint(),
|
|
468
471
|
blobAttachBatch: this.blobAttachBatch.checkpoint(),
|
|
469
472
|
};
|
package/src/packageVersion.ts
CHANGED
|
@@ -693,7 +693,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
693
693
|
* Tries to summarize with retries where retry is based on the failure params.
|
|
694
694
|
* For example, summarization may be retried for failures with "retryAfterSeconds" param.
|
|
695
695
|
*/
|
|
696
|
-
private async trySummarizeWithRetries(
|
|
696
|
+
private async trySummarizeWithRetries(
|
|
697
|
+
reason: SummarizeReason,
|
|
698
|
+
): Promise<ISummarizeResults | undefined> {
|
|
697
699
|
// Helper to set summarize options, telemetry properties and call summarize.
|
|
698
700
|
const attemptSummarize = (attemptNumber: number, finalAttempt: boolean) => {
|
|
699
701
|
const summarizeOptions: ISummarizeOptions = {
|
|
@@ -732,24 +734,23 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
732
734
|
let currentAttempt = 0;
|
|
733
735
|
let retryAfterSeconds: number | undefined;
|
|
734
736
|
let done = false;
|
|
735
|
-
let
|
|
737
|
+
let status: "success" | "failure" | "canceled" = "success";
|
|
738
|
+
let results: ISummarizeResults | undefined;
|
|
736
739
|
do {
|
|
737
740
|
currentAttempt++;
|
|
738
741
|
if (this.cancellationToken.cancelled) {
|
|
739
|
-
|
|
742
|
+
status = "canceled";
|
|
740
743
|
done = true;
|
|
741
744
|
break;
|
|
742
745
|
}
|
|
743
746
|
|
|
744
|
-
const
|
|
745
|
-
|
|
746
|
-
false /* finalAttempt */,
|
|
747
|
-
);
|
|
747
|
+
const attemptResult = attemptSummarize(currentAttempt, false /* finalAttempt */);
|
|
748
|
+
results = attemptResult.summarizeResult;
|
|
748
749
|
|
|
749
750
|
// Ack / nack is the final step, so if it succeeds we're done.
|
|
750
|
-
const ackNackResult = await
|
|
751
|
+
const ackNackResult = await results.receivedSummaryAckOrNack;
|
|
751
752
|
if (ackNackResult.success) {
|
|
752
|
-
|
|
753
|
+
status = "success";
|
|
753
754
|
done = true;
|
|
754
755
|
break;
|
|
755
756
|
}
|
|
@@ -758,7 +759,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
758
759
|
// If submit summary failed, use the params from "summarySubmitted" result. Else, use the params
|
|
759
760
|
// from "receivedSummaryAckOrNack" result.
|
|
760
761
|
// Note: Check "summarySubmitted" result first because if it fails, ack nack would fail as well.
|
|
761
|
-
const submitSummaryResult = await
|
|
762
|
+
const submitSummaryResult = await results.summarySubmitted;
|
|
762
763
|
if (!submitSummaryResult.success) {
|
|
763
764
|
maxAttempts = this.maxAttemptsForSubmitFailures;
|
|
764
765
|
retryAfterSeconds = submitSummaryResult.data?.retryAfterSeconds;
|
|
@@ -768,9 +769,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
768
769
|
}
|
|
769
770
|
|
|
770
771
|
// Emit "summarize" event for this failed attempt.
|
|
771
|
-
|
|
772
|
+
status = "failure";
|
|
772
773
|
const eventProps: ISummarizeEventProps = {
|
|
773
|
-
result,
|
|
774
|
+
result: status,
|
|
774
775
|
currentAttempt,
|
|
775
776
|
maxAttempts,
|
|
776
777
|
error: ackNackResult.error,
|
|
@@ -791,16 +792,16 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
791
792
|
summaryNackDelay: ackNackResult.data?.retryAfterSeconds !== undefined,
|
|
792
793
|
stage: submitSummaryResult.data?.stage,
|
|
793
794
|
dynamicRetries: true, // To differentiate this telemetry from regular retry logic
|
|
794
|
-
...summarizeProps,
|
|
795
|
+
...attemptResult.summarizeProps,
|
|
795
796
|
});
|
|
796
797
|
await delay(retryAfterSeconds * 1000);
|
|
797
798
|
}
|
|
798
799
|
} while (!done);
|
|
799
800
|
|
|
800
801
|
// If summarize attempt did not fail, emit "summarize" event and return. A failed attempt may be retried below.
|
|
801
|
-
if (
|
|
802
|
-
this.emit("summarize", { result, currentAttempt, maxAttempts });
|
|
803
|
-
return;
|
|
802
|
+
if (status !== "failure") {
|
|
803
|
+
this.emit("summarize", { result: status, currentAttempt, maxAttempts });
|
|
804
|
+
return results;
|
|
804
805
|
}
|
|
805
806
|
|
|
806
807
|
// If summarization wasn't successful above and the failure contains "retryAfterSeconds", perform one last
|
|
@@ -809,20 +810,44 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
809
810
|
const { summarizeResult } = attemptSummarize(++currentAttempt, true /* finalAttempt */);
|
|
810
811
|
// Ack / nack is the final step, so if it succeeds we're done.
|
|
811
812
|
const ackNackResult = await summarizeResult.receivedSummaryAckOrNack;
|
|
812
|
-
|
|
813
|
+
status = ackNackResult.success ? "success" : "failure";
|
|
813
814
|
const eventProps: ISummarizeEventProps = {
|
|
814
|
-
result,
|
|
815
|
+
result: status,
|
|
815
816
|
currentAttempt,
|
|
816
817
|
maxAttempts,
|
|
817
818
|
error: ackNackResult.success ? undefined : ackNackResult.error,
|
|
818
819
|
};
|
|
819
820
|
this.emit("summarize", eventProps);
|
|
821
|
+
results = summarizeResult;
|
|
820
822
|
}
|
|
821
823
|
|
|
822
824
|
// If summarization is still unsuccessful, stop the summarizer.
|
|
823
|
-
if (
|
|
825
|
+
if (status === "failure") {
|
|
824
826
|
this.stopSummarizerCallback("failToSummarize");
|
|
825
827
|
}
|
|
828
|
+
return results;
|
|
829
|
+
}
|
|
830
|
+
|
|
831
|
+
/**
|
|
832
|
+
* Attempts to generate a summary on demand with retries in case of failures. The retry logic is the same
|
|
833
|
+
* as heuristics based summaries.
|
|
834
|
+
*/
|
|
835
|
+
private async summarizeOnDemandWithRetries(
|
|
836
|
+
reason: SummarizeReason,
|
|
837
|
+
resultsBuilder: SummarizeResultBuilder,
|
|
838
|
+
) {
|
|
839
|
+
const results = await this.trySummarizeWithRetries(reason);
|
|
840
|
+
if (results === undefined) {
|
|
841
|
+
resultsBuilder.fail("Summarization was canceled", undefined);
|
|
842
|
+
return resultsBuilder.build();
|
|
843
|
+
}
|
|
844
|
+
const submitResult = await results.summarySubmitted;
|
|
845
|
+
const summaryOpBroadcastedResult = await results.summaryOpBroadcasted;
|
|
846
|
+
const ackNackResult = await results.receivedSummaryAckOrNack;
|
|
847
|
+
resultsBuilder.summarySubmitted.resolve(submitResult);
|
|
848
|
+
resultsBuilder.summaryOpBroadcasted.resolve(summaryOpBroadcastedResult);
|
|
849
|
+
resultsBuilder.receivedSummaryAckOrNack.resolve(ackNackResult);
|
|
850
|
+
return resultsBuilder.build();
|
|
826
851
|
}
|
|
827
852
|
|
|
828
853
|
/** {@inheritdoc (ISummarizer:interface).summarizeOnDemand} */
|
|
@@ -842,12 +867,20 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
|
|
|
842
867
|
}
|
|
843
868
|
|
|
844
869
|
const { reason, ...summarizeOptions } = options;
|
|
845
|
-
|
|
846
|
-
|
|
847
|
-
|
|
848
|
-
|
|
849
|
-
|
|
850
|
-
|
|
870
|
+
if (options.retryOnFailure === true) {
|
|
871
|
+
this.summarizeOnDemandWithRetries(`onDemand;${reason}`, resultsBuilder).catch(
|
|
872
|
+
(error) => {
|
|
873
|
+
resultsBuilder.fail("summarize failed", error);
|
|
874
|
+
},
|
|
875
|
+
);
|
|
876
|
+
} else {
|
|
877
|
+
this.trySummarizeOnce(
|
|
878
|
+
{ summarizeReason: `onDemand/${reason}` },
|
|
879
|
+
summarizeOptions,
|
|
880
|
+
resultsBuilder,
|
|
881
|
+
);
|
|
882
|
+
}
|
|
883
|
+
return resultsBuilder.build();
|
|
851
884
|
}
|
|
852
885
|
|
|
853
886
|
/** {@inheritdoc (ISummarizer:interface).enqueueSummarize} */
|
|
@@ -65,7 +65,7 @@ export const createSummarizingWarning = (errorMessage: string, logged: boolean)
|
|
|
65
65
|
* Summarizer is responsible for coordinating when to generate and send summaries.
|
|
66
66
|
* It is the main entry point for summary work.
|
|
67
67
|
* It is created only by summarizing container (i.e. one with clientType === "summarizer")
|
|
68
|
-
* @
|
|
68
|
+
* @alpha
|
|
69
69
|
*/
|
|
70
70
|
export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
|
|
71
71
|
public get ISummarizer() {
|
|
@@ -149,6 +149,8 @@ export interface ISubmitSummaryOptions extends ISummarizeOptions {
|
|
|
149
149
|
export interface IOnDemandSummarizeOptions extends ISummarizeOptions {
|
|
150
150
|
/** Reason for generating summary. */
|
|
151
151
|
readonly reason: string;
|
|
152
|
+
/** In case of a failure, will attempt to retry based on if the failure is retriable. */
|
|
153
|
+
readonly retryOnFailure?: boolean;
|
|
152
154
|
}
|
|
153
155
|
|
|
154
156
|
/**
|
|
@@ -418,7 +420,7 @@ export interface ISummarizerEvents extends IEvent {
|
|
|
418
420
|
}
|
|
419
421
|
|
|
420
422
|
/**
|
|
421
|
-
* @
|
|
423
|
+
* @alpha
|
|
422
424
|
*/
|
|
423
425
|
export interface ISummarizer extends IEventProvider<ISummarizerEvents> {
|
|
424
426
|
/**
|
|
@@ -47,7 +47,7 @@ export interface ISummaryNackMessage extends ISequencedDocumentMessage {
|
|
|
47
47
|
/**
|
|
48
48
|
* A single summary which can be tracked as it goes through its life cycle.
|
|
49
49
|
* The life cycle is: Local to Broadcast to Acked/Nacked.
|
|
50
|
-
* @
|
|
50
|
+
* @alpha
|
|
51
51
|
*/
|
|
52
52
|
export interface ISummary {
|
|
53
53
|
readonly clientId: string;
|
|
@@ -58,7 +58,7 @@ export interface ISummary {
|
|
|
58
58
|
|
|
59
59
|
/**
|
|
60
60
|
* A single summary which has already been acked by the server.
|
|
61
|
-
* @
|
|
61
|
+
* @alpha
|
|
62
62
|
*/
|
|
63
63
|
export interface IAckedSummary {
|
|
64
64
|
readonly summaryOp: ISummaryOpMessage;
|
|
@@ -145,7 +145,7 @@ class Summary implements ISummary {
|
|
|
145
145
|
|
|
146
146
|
/**
|
|
147
147
|
* Watches summaries created by a specific client.
|
|
148
|
-
* @
|
|
148
|
+
* @alpha
|
|
149
149
|
*/
|
|
150
150
|
export interface IClientSummaryWatcher extends IDisposable {
|
|
151
151
|
watchSummary(clientSequenceNumber: number): ISummary;
|
|
@@ -214,7 +214,7 @@ class ClientSummaryWatcher implements IClientSummaryWatcher {
|
|
|
214
214
|
}
|
|
215
215
|
}
|
|
216
216
|
/**
|
|
217
|
-
* @
|
|
217
|
+
* @alpha
|
|
218
218
|
*/
|
|
219
219
|
export type OpActionEventName =
|
|
220
220
|
| MessageType.Summarize
|
|
@@ -223,12 +223,12 @@ export type OpActionEventName =
|
|
|
223
223
|
| "default";
|
|
224
224
|
|
|
225
225
|
/**
|
|
226
|
-
* @
|
|
226
|
+
* @alpha
|
|
227
227
|
*/
|
|
228
228
|
export type OpActionEventListener = (op: ISequencedDocumentMessage) => void;
|
|
229
229
|
|
|
230
230
|
/**
|
|
231
|
-
* @
|
|
231
|
+
* @alpha
|
|
232
232
|
*/
|
|
233
233
|
export interface ISummaryCollectionOpEvents extends IEvent {
|
|
234
234
|
(event: OpActionEventName, listener: OpActionEventListener);
|
|
@@ -238,7 +238,7 @@ export interface ISummaryCollectionOpEvents extends IEvent {
|
|
|
238
238
|
* Data structure that looks at the op stream to track summaries as they
|
|
239
239
|
* are broadcast, acked and nacked.
|
|
240
240
|
* It provides functionality for watching specific summaries.
|
|
241
|
-
* @
|
|
241
|
+
* @alpha
|
|
242
242
|
*/
|
|
243
243
|
export class SummaryCollection extends TypedEventEmitter<ISummaryCollectionOpEvents> {
|
|
244
244
|
// key: clientId
|
package/tsconfig.json
CHANGED
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
{
|
|
2
|
-
"extends":
|
|
2
|
+
"extends": [
|
|
3
|
+
"../../../common/build/build-common/tsconfig.base.json",
|
|
4
|
+
"../../../common/build/build-common/tsconfig.cjs.json",
|
|
5
|
+
],
|
|
6
|
+
"include": ["src/**/*"],
|
|
7
|
+
"exclude": ["src/test/**/*"],
|
|
3
8
|
"compilerOptions": {
|
|
4
|
-
"composite": true,
|
|
5
9
|
"rootDir": "./src",
|
|
6
10
|
"outDir": "./dist",
|
|
7
11
|
},
|
|
8
|
-
"include": ["src/**/*"],
|
|
9
|
-
"exclude": ["src/test/**/*"],
|
|
10
12
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batchTracker.d.ts","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,EAAE,mBAAmB,EAAqB,MAAM,iCAAiC,CAAC;AAIzF,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AAEvE,qBAAa,YAAY;IAOvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IANnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAsB;IAC7C,OAAO,CAAC,wBAAwB,CAAqB;IACrD,OAAO,CAAC,iBAAiB,CAAa;IACtC,OAAO,CAAC,6BAA6B,CAAqB;gBAGxC,iBAAiB,EAAE,YAAY,EAChD,MAAM,EAAE,oBAAoB,EAC5B,oBAAoB,EAAE,MAAM,EAC5B,sBAAsB,EAAE,MAAM,EAC9B,gBAAgB,GAAE,MAAM,MAAgC;CA8CzD;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,sBACT,YAAY,UACvB,mBAAmB,yBACL,MAAM,2BACJ,MAAM,iBAC+D,CAAC"}
|
package/lib/batchTracker.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"batchTracker.js","sourceRoot":"","sources":["../src/batchTracker.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAuB,iBAAiB,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAI3D,MAAM,OAAO,YAAY;IAMxB,YACkB,iBAA+B,EAChD,MAA4B,EAC5B,oBAA4B,EAC5B,sBAA8B,EAC9B,mBAAiC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;QAJvC,sBAAiB,GAAjB,iBAAiB,CAAc;QAJzC,sBAAiB,GAAW,CAAC,CAAC;QAUrC,IAAI,CAAC,MAAM,GAAG,iBAAiB,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAC;QAEnE,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,OAAkC,EAAE,EAAE;YAC9E,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,cAAc,CAAC;YACvD,IAAI,CAAC,6BAA6B,GAAG,gBAAgB,EAAE,CAAC;YACxD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,iBAAiB,CAAC,EAAE,CACxB,UAAU,EACV,CAAC,KAAsB,EAAE,OAAkC,EAAE,EAAE;YAC9D,MAAM,CACL,IAAI,CAAC,wBAAwB,KAAK,SAAS;gBAC1C,IAAI,CAAC,6BAA6B,KAAK,SAAS,EACjD,KAAK,CAAC,4CAA4C,CAClD,CAAC;YAEF,MAAM,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,wBAAwB,GAAG,CAAC,CAAC;YAC1E,IAAI,MAAM,IAAI,oBAAoB,EAAE;gBACnC,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;oBAChC,SAAS,EAAE,cAAc;oBACzB,MAAM;oBACN,SAAS,EAAE,oBAAoB;oBAC/B,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;oBACjE,UAAU,EAAE,KAAK,KAAK,SAAS;iBAC/B,CAAC,CAAC;aACH;YAED,IAAI,IAAI,CAAC,iBAAiB,GAAG,sBAAsB,KAAK,CAAC,EAAE;gBAC1D,IAAI,CAAC,MAAM,CAAC,oBAAoB,CAAC;oBAChC,SAAS,EAAE,QAAQ;oBACnB,MAAM;oBACN,YAAY,EAAE,sBAAsB;oBACpC,sBAAsB,EAAE,OAAO,CAAC,cAAc;oBAC9C,QAAQ,EAAE,gBAAgB,EAAE,GAAG,IAAI,CAAC,6BAA6B;iBACjE,CAAC,CAAC;aACH;YAED,IAAI,CAAC,wBAAwB,GAAG,SAAS,CAAC;YAC1C,IAAI,CAAC,6BAA6B,GAAG,SAAS,CAAC;QAChD,CAAC,CACD,CAAC;IACH,CAAC;CACD;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC/B,iBAA+B,EAC/B,MAA2B,EAC3B,uBAA+B,IAAI,EACnC,yBAAiC,IAAI,EACpC,EAAE,CAAC,IAAI,YAAY,CAAC,iBAAiB,EAAE,MAAM,EAAE,oBAAoB,EAAE,sBAAsB,CAAC,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { EventEmitter } from \"events\";\nimport { ITelemetryLoggerExt, createChildLogger } from \"@fluidframework/telemetry-utils\";\nimport { assert } from \"@fluidframework/core-utils\";\nimport { performance } from \"@fluid-internal/client-utils\";\nimport { ISequencedDocumentMessage } from \"@fluidframework/protocol-definitions\";\nimport { ITelemetryBaseLogger } from \"@fluidframework/core-interfaces\";\n\nexport class BatchTracker {\n\tprivate readonly logger: ITelemetryLoggerExt;\n\tprivate startBatchSequenceNumber: number | undefined;\n\tprivate trackedBatchCount: number = 0;\n\tprivate batchProcessingStartTimeStamp: number | undefined;\n\n\tconstructor(\n\t\tprivate readonly batchEventEmitter: EventEmitter,\n\t\tlogger: ITelemetryBaseLogger,\n\t\tbatchLengthThreshold: number,\n\t\tbatchCountSamplingRate: number,\n\t\tdateTimeProvider: () => number = () => performance.now(),\n\t) {\n\t\tthis.logger = createChildLogger({ logger, namespace: \"Batching\" });\n\n\t\tthis.batchEventEmitter.on(\"batchBegin\", (message: ISequencedDocumentMessage) => {\n\t\t\tthis.startBatchSequenceNumber = message.sequenceNumber;\n\t\t\tthis.batchProcessingStartTimeStamp = dateTimeProvider();\n\t\t\tthis.trackedBatchCount++;\n\t\t});\n\n\t\tthis.batchEventEmitter.on(\n\t\t\t\"batchEnd\",\n\t\t\t(error: any | undefined, message: ISequencedDocumentMessage) => {\n\t\t\t\tassert(\n\t\t\t\t\tthis.startBatchSequenceNumber !== undefined &&\n\t\t\t\t\t\tthis.batchProcessingStartTimeStamp !== undefined,\n\t\t\t\t\t0x2ba /* \"batchBegin must fire before batchEnd\" */,\n\t\t\t\t);\n\n\t\t\t\tconst length = message.sequenceNumber - this.startBatchSequenceNumber + 1;\n\t\t\t\tif (length >= batchLengthThreshold) {\n\t\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\t\teventName: \"LengthTooBig\",\n\t\t\t\t\t\tlength,\n\t\t\t\t\t\tthreshold: batchLengthThreshold,\n\t\t\t\t\t\tbatchEndSequenceNumber: message.sequenceNumber,\n\t\t\t\t\t\tduration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n\t\t\t\t\t\tbatchError: error !== undefined,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tif (this.trackedBatchCount % batchCountSamplingRate === 0) {\n\t\t\t\t\tthis.logger.sendPerformanceEvent({\n\t\t\t\t\t\teventName: \"Length\",\n\t\t\t\t\t\tlength,\n\t\t\t\t\t\tsamplingRate: batchCountSamplingRate,\n\t\t\t\t\t\tbatchEndSequenceNumber: message.sequenceNumber,\n\t\t\t\t\t\tduration: dateTimeProvider() - this.batchProcessingStartTimeStamp,\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\tthis.startBatchSequenceNumber = undefined;\n\t\t\t\tthis.batchProcessingStartTimeStamp = undefined;\n\t\t\t},\n\t\t);\n\t}\n}\n\n/**\n * Track batch sizes in terms of op counts and processing times\n *\n * @param batchEventEmitter - event emitter which tracks the lifecycle of batch operations\n * @param logger - See {@link @fluidframework/core-interfaces#ITelemetryLoggerExt}\n * @param batchLengthThreshold - threshold for the length of a batch when to send an error event\n * @param batchCountSamplingRate - rate for batches for which to send an event with its characteristics\n */\nexport const BindBatchTracker = (\n\tbatchEventEmitter: EventEmitter,\n\tlogger: ITelemetryLoggerExt,\n\tbatchLengthThreshold: number = 1000,\n\tbatchCountSamplingRate: number = 1000,\n) => new BatchTracker(batchEventEmitter, logger, batchLengthThreshold, batchCountSamplingRate);\n"]}
|
package/lib/blobManager.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"blobManager.d.ts","sourceRoot":"","sources":["../src/blobManager.ts"],"names":[],"mappings":"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"}
|