@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.263932 → 2.0.0-dev-rc.5.0.0.267932
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/api-report/container-runtime.api.md +43 -53
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +4 -4
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +1 -1
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +3 -3
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +3 -3
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +2 -1
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +14 -14
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.d.ts +2 -1
- package/dist/containerHandleContext.d.ts.map +1 -1
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +12 -19
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +74 -120
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.d.ts.map +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +7 -8
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +3 -3
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +4 -3
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +2 -1
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +1 -3
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +18 -21
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +11 -30
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +3 -30
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts +2 -3
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
- package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/dist/gc/gcSummaryDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.d.ts +2 -35
- package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +9 -62
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +1 -1
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +2 -2
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.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 +1 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -1
- package/dist/messageTypes.d.ts +1 -1
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.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/opCompressor.d.ts +11 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +13 -2
- 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.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +10 -3
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +7 -0
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +4 -2
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +12 -7
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +10 -0
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +12 -17
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- 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/opProperties.d.ts +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +2 -1
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.js +1 -1
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/index.d.ts +1 -1
- package/dist/summary/index.d.ts.map +1 -1
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/orderedClientElection.d.ts +4 -2
- package/dist/summary/orderedClientElection.d.ts.map +1 -1
- package/dist/summary/orderedClientElection.js +35 -13
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -6
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +22 -108
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.d.ts +1 -1
- package/dist/summary/summarizer.d.ts.map +1 -1
- package/dist/summary/summarizer.js +4 -1
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.d.ts +1 -1
- package/dist/summary/summarizerClientElection.d.ts.map +1 -1
- package/dist/summary/summarizerClientElection.js +2 -2
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +3 -3
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +16 -16
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +17 -29
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +2 -1
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +11 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +3 -3
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +2 -2
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.d.ts +7 -8
- package/dist/summary/summaryGenerator.d.ts.map +1 -1
- package/dist/summary/summaryGenerator.js +26 -22
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +4 -4
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +1 -1
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +3 -3
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +3 -3
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +2 -1
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +2 -2
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.d.ts +2 -1
- package/lib/containerHandleContext.d.ts.map +1 -1
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +12 -19
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +68 -114
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.d.ts.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +7 -8
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +3 -3
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +4 -3
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +2 -1
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +1 -3
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +18 -21
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +12 -31
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +3 -30
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -2
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts +2 -3
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
- package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
- package/lib/gc/gcSummaryDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.d.ts +2 -35
- package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +4 -57
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +1 -1
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +2 -2
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -1
- package/lib/messageTypes.d.ts +1 -1
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +2 -2
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts +11 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +13 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +10 -3
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +7 -0
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +4 -2
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +12 -7
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +10 -0
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +12 -17
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +2 -1
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.js +1 -1
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/index.d.ts +1 -1
- package/lib/summary/index.d.ts.map +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/orderedClientElection.d.ts +4 -2
- package/lib/summary/orderedClientElection.d.ts.map +1 -1
- package/lib/summary/orderedClientElection.js +35 -13
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -6
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +21 -107
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.d.ts +1 -1
- package/lib/summary/summarizer.d.ts.map +1 -1
- package/lib/summary/summarizer.js +4 -1
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.d.ts +1 -1
- package/lib/summary/summarizerClientElection.d.ts.map +1 -1
- package/lib/summary/summarizerClientElection.js +1 -1
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +3 -3
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +14 -14
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
- package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +17 -29
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +2 -1
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +3 -3
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +3 -3
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +2 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.d.ts +7 -8
- package/lib/summary/summaryGenerator.d.ts.map +1 -1
- package/lib/summary/summaryGenerator.js +25 -21
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +72 -24
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +7 -7
- package/src/channelCollection.ts +8 -9
- package/src/connectionTelemetry.ts +14 -6
- package/src/containerHandleContext.ts +2 -1
- package/src/containerRuntime.ts +88 -141
- package/src/dataStore.ts +2 -1
- package/src/dataStoreContext.ts +16 -17
- package/src/deltaManagerProxies.ts +7 -5
- package/src/deltaScheduler.ts +2 -1
- package/src/gc/garbageCollection.md +0 -8
- package/src/gc/garbageCollection.ts +20 -25
- package/src/gc/gcConfigs.ts +8 -34
- package/src/gc/gcDefinitions.ts +4 -31
- package/src/gc/gcHelpers.ts +2 -2
- package/src/gc/gcSummaryDefinitions.ts +1 -1
- package/src/gc/gcSummaryStateTracker.ts +7 -73
- package/src/gc/gcTelemetry.ts +2 -2
- package/src/gc/index.ts +0 -1
- package/src/index.ts +1 -1
- package/src/messageTypes.ts +1 -1
- package/src/opLifecycle/README.md +120 -160
- package/src/opLifecycle/definitions.ts +2 -2
- package/src/opLifecycle/opCompressor.ts +13 -2
- package/src/opLifecycle/opDecompressor.ts +1 -1
- package/src/opLifecycle/opGroupingManager.ts +11 -4
- package/src/opLifecycle/opSplitter.ts +13 -8
- package/src/opLifecycle/outbox.ts +12 -27
- package/src/opLifecycle/remoteMessageProcessor.ts +2 -1
- package/src/opProperties.ts +2 -4
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +1 -1
- package/src/scheduleManager.ts +2 -1
- package/src/summary/index.ts +1 -1
- package/src/summary/orderedClientElection.ts +83 -12
- package/src/summary/runningSummarizer.ts +31 -115
- package/src/summary/summarizer.ts +5 -2
- package/src/summary/summarizerClientElection.ts +2 -1
- package/src/summary/summarizerNode/summarizerNode.ts +19 -31
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +2 -1
- package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -8
- package/src/summary/summarizerTypes.ts +22 -33
- package/src/summary/summaryCollection.ts +2 -2
- package/src/summary/summaryFormat.ts +9 -7
- package/src/summary/summaryGenerator.ts +51 -29
package/lib/containerRuntime.js
CHANGED
|
@@ -6,9 +6,9 @@ import { Trace, TypedEventEmitter } from "@fluid-internal/client-utils";
|
|
|
6
6
|
import { AttachState, } from "@fluidframework/container-definitions";
|
|
7
7
|
import { LoaderHeader, } from "@fluidframework/container-definitions/internal";
|
|
8
8
|
import { assert, Deferred, LazyPromise, PromiseCache, delay, } from "@fluidframework/core-utils/internal";
|
|
9
|
-
import {
|
|
9
|
+
import { SummaryType, } from "@fluidframework/driver-definitions";
|
|
10
|
+
import { DriverHeader, FetchSource, MessageType, } from "@fluidframework/driver-definitions/internal";
|
|
10
11
|
import { readAndParse } from "@fluidframework/driver-utils/internal";
|
|
11
|
-
import { MessageType, SummaryType, } from "@fluidframework/protocol-definitions";
|
|
12
12
|
import { FlushMode, FlushModeExperimental, channelsTreeName, gcTreeKey, } from "@fluidframework/runtime-definitions/internal";
|
|
13
13
|
import { GCDataBuilder, RequestParser, TelemetryContext, addBlobToSummary, addSummarizeResultToSummary, calculateStats, create404Response, exceptionToResponse, responseToException, seqFromTree, } from "@fluidframework/runtime-utils/internal";
|
|
14
14
|
import { DataCorruptionError, DataProcessingError, GenericError, LoggingError, PerformanceEvent,
|
|
@@ -49,13 +49,13 @@ function compatBehaviorAllowsMessageType(_unknownContainerRuntimeMessageType, co
|
|
|
49
49
|
export const DefaultSummaryConfiguration = {
|
|
50
50
|
state: "enabled",
|
|
51
51
|
minIdleTime: 0,
|
|
52
|
-
maxIdleTime: 30 * 1000,
|
|
53
|
-
maxTime: 60 * 1000,
|
|
54
|
-
maxOps: 100,
|
|
52
|
+
maxIdleTime: 30 * 1000, // 30 secs.
|
|
53
|
+
maxTime: 60 * 1000, // 1 min.
|
|
54
|
+
maxOps: 100, // Summarize if 100 weighted ops received since last snapshot.
|
|
55
55
|
minOpsForLastSummaryAttempt: 10,
|
|
56
|
-
maxAckWaitTime: 3 * 60 * 1000,
|
|
56
|
+
maxAckWaitTime: 3 * 60 * 1000, // 3 mins.
|
|
57
57
|
maxOpsSinceLastSummary: 7000,
|
|
58
|
-
initialSummarizerDelayMs: 5 * 1000,
|
|
58
|
+
initialSummarizerDelayMs: 5 * 1000, // 5 secs.
|
|
59
59
|
nonRuntimeOpWeight: 0.1,
|
|
60
60
|
runtimeOpWeight: 1.0,
|
|
61
61
|
nonRuntimeHeuristicThreshold: 20,
|
|
@@ -528,7 +528,9 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
528
528
|
return this.garbageCollector.throwOnTombstoneUsage;
|
|
529
529
|
}
|
|
530
530
|
/***/
|
|
531
|
-
constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope,
|
|
531
|
+
constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope,
|
|
532
|
+
// Create a custom ITelemetryBaseLogger to output telemetry events.
|
|
533
|
+
baseLogger, existing, blobManagerSnapshot, _storage, createIdCompressor, documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, summaryConfiguration = {
|
|
532
534
|
// the defaults
|
|
533
535
|
...DefaultSummaryConfiguration,
|
|
534
536
|
// the runtime configuration overrides
|
|
@@ -539,7 +541,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
539
541
|
this.metadata = metadata;
|
|
540
542
|
this.runtimeOptions = runtimeOptions;
|
|
541
543
|
this.containerScope = containerScope;
|
|
542
|
-
this.
|
|
544
|
+
this.baseLogger = baseLogger;
|
|
543
545
|
this._storage = _storage;
|
|
544
546
|
this.createIdCompressor = createIdCompressor;
|
|
545
547
|
this.documentsSchemaController = documentsSchemaController;
|
|
@@ -571,6 +573,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
571
573
|
expiry: { policy: "absolute", durationMs: 60000 },
|
|
572
574
|
});
|
|
573
575
|
const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, loader, pendingLocalState, supportedFeatures, snapshotWithContents, } = context;
|
|
576
|
+
this.logger = createChildLogger({ logger: this.baseLogger });
|
|
574
577
|
this.mc = createChildMonitoringContext({
|
|
575
578
|
logger: this.logger,
|
|
576
579
|
namespace: "ContainerRuntime",
|
|
@@ -853,7 +856,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
853
856
|
namespace: "OrderedClientElection",
|
|
854
857
|
});
|
|
855
858
|
const orderedClientCollection = new OrderedClientCollection(orderedClientLogger, this.innerDeltaManager, this._quorum);
|
|
856
|
-
const orderedClientElectionForSummarizer = new OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, SummarizerClientElection.isClientEligible);
|
|
859
|
+
const orderedClientElectionForSummarizer = new OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, SummarizerClientElection.isClientEligible, this.mc.config.getBoolean("Fluid.ContainerRuntime.OrderedClientElection.EnablePerformanceEvents"));
|
|
857
860
|
this.summarizerClientElection = new SummarizerClientElection(orderedClientLogger, this.summaryCollection, orderedClientElectionForSummarizer, this.maxOpsSinceLastSummary);
|
|
858
861
|
if (this.isSummarizerClient) {
|
|
859
862
|
this._summarizer = new Summarizer(this /* ISummarizerRuntime */, () => this.summaryConfiguration, this /* ISummarizerInternalsProvider */, this.handleContext, this.summaryCollection, async (runtime) => RunWhileConnectedCoordinator.create(runtime,
|
|
@@ -897,7 +900,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
897
900
|
}
|
|
898
901
|
}
|
|
899
902
|
// logging hardware telemetry
|
|
900
|
-
logger.sendTelemetryEvent({
|
|
903
|
+
this.logger.sendTelemetryEvent({
|
|
901
904
|
eventName: "DeviceSpec",
|
|
902
905
|
...getDeviceSpec(),
|
|
903
906
|
});
|
|
@@ -1060,7 +1063,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1060
1063
|
const props = {
|
|
1061
1064
|
eventName: "GroupIdSnapshotCatchup",
|
|
1062
1065
|
loadingGroupIds: sortedLoadingGroupIds.join(","),
|
|
1063
|
-
targetSequenceNumber: snapshotSeqNumber,
|
|
1066
|
+
targetSequenceNumber: snapshotSeqNumber, // This is so we reuse some columns in telemetry
|
|
1064
1067
|
sequenceNumber: this.deltaManager.lastSequenceNumber, // This is so we reuse some columns in telemetry
|
|
1065
1068
|
};
|
|
1066
1069
|
const event = PerformanceEvent.start(this.mc.logger, {
|
|
@@ -1178,7 +1181,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1178
1181
|
this.messageAtLastSummary;
|
|
1179
1182
|
const documentSchema = this.documentsSchemaController.summarizeDocumentSchema(this.deltaManager.lastSequenceNumber);
|
|
1180
1183
|
// Is document schema explicit control on?
|
|
1181
|
-
const
|
|
1184
|
+
const explicitSchemaControl = documentSchema?.runtime.explicitSchemaControl;
|
|
1182
1185
|
const metadata = {
|
|
1183
1186
|
...this.createContainerMetadata,
|
|
1184
1187
|
// Increment the summary number for the next summary that will be generated.
|
|
@@ -1191,10 +1194,10 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1191
1194
|
// runtimes (that preceed document schema control capabilities) to close container on load due to mismatch in
|
|
1192
1195
|
// last message's sequence number.
|
|
1193
1196
|
// See also lastMessageFromMetadata()
|
|
1194
|
-
message:
|
|
1197
|
+
message: explicitSchemaControl
|
|
1195
1198
|
? { sequenceNumber: -1 }
|
|
1196
1199
|
: message,
|
|
1197
|
-
lastMessage:
|
|
1200
|
+
lastMessage: explicitSchemaControl ? message : undefined,
|
|
1198
1201
|
documentSchema,
|
|
1199
1202
|
};
|
|
1200
1203
|
addBlobToSummary(summaryTree, metadataBlobName, JSON.stringify(metadata));
|
|
@@ -2076,7 +2079,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2076
2079
|
* @param options - options controlling how the summary is generated or submitted
|
|
2077
2080
|
*/
|
|
2078
2081
|
async submitSummary(options) {
|
|
2079
|
-
const { fullTree = false, finalAttempt = false,
|
|
2082
|
+
const { fullTree = false, finalAttempt = false, summaryLogger, latestSummaryRefSeqNum, } = options;
|
|
2080
2083
|
// The summary number for this summary. This will be updated during the summary process, so get it now and
|
|
2081
2084
|
// use it for all events logged during this summary.
|
|
2082
2085
|
const summaryNumber = this.nextSummaryNumber;
|
|
@@ -2091,13 +2094,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2091
2094
|
},
|
|
2092
2095
|
});
|
|
2093
2096
|
assert(this.outbox.isEmpty, 0x3d1 /* Can't trigger summary in the middle of a batch */);
|
|
2094
|
-
// We close the summarizer and download a new snapshot and reload the container
|
|
2095
|
-
if (refreshLatestAck === true) {
|
|
2096
|
-
return this.prefetchLatestSummaryThenClose(createChildLogger({
|
|
2097
|
-
logger: summaryNumberLogger,
|
|
2098
|
-
properties: { all: { safeSummary: true } },
|
|
2099
|
-
}));
|
|
2100
|
-
}
|
|
2101
2097
|
// If the container is dirty, i.e., there are pending unacked ops, the summary will not be eventual consistent
|
|
2102
2098
|
// and it may even be incorrect. So, wait for the container to be saved with a timeout. If the container is not
|
|
2103
2099
|
// saved within the timeout, check if it should be failed or can continue.
|
|
@@ -2166,7 +2162,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2166
2162
|
stage: "base",
|
|
2167
2163
|
referenceSequenceNumber: summaryRefSeqNum,
|
|
2168
2164
|
minimumSequenceNumber,
|
|
2169
|
-
error: new
|
|
2165
|
+
error: new RetriableSummaryError(`Summarizer node state inconsistent with summarizer state.`),
|
|
2170
2166
|
};
|
|
2171
2167
|
}
|
|
2172
2168
|
}
|
|
@@ -2209,17 +2205,14 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2209
2205
|
stage: "base",
|
|
2210
2206
|
referenceSequenceNumber: summaryRefSeqNum,
|
|
2211
2207
|
minimumSequenceNumber,
|
|
2212
|
-
error: new
|
|
2208
|
+
error: new RetriableSummaryError(continueResult.error),
|
|
2213
2209
|
};
|
|
2214
2210
|
}
|
|
2215
2211
|
const trace = Trace.start();
|
|
2216
2212
|
let summarizeResult;
|
|
2217
|
-
// If the GC state needs to be reset, we need to force a full tree summary and update the unreferenced
|
|
2218
|
-
// state of all the nodes.
|
|
2219
|
-
const forcedFullTree = this.garbageCollector.summaryStateNeedsReset;
|
|
2220
2213
|
try {
|
|
2221
2214
|
summarizeResult = await this.summarize({
|
|
2222
|
-
fullTree
|
|
2215
|
+
fullTree,
|
|
2223
2216
|
trackState: true,
|
|
2224
2217
|
summaryLogger: summaryNumberLogger,
|
|
2225
2218
|
runGC: this.garbageCollector.shouldRunGC,
|
|
@@ -2230,7 +2223,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2230
2223
|
stage: "base",
|
|
2231
2224
|
referenceSequenceNumber: summaryRefSeqNum,
|
|
2232
2225
|
minimumSequenceNumber,
|
|
2233
|
-
error: wrapError(error, (msg) => new
|
|
2226
|
+
error: wrapError(error, (msg) => new RetriableSummaryError(msg)),
|
|
2234
2227
|
};
|
|
2235
2228
|
}
|
|
2236
2229
|
// Validate that the summary generated by summarizer nodes is correct before uploading.
|
|
@@ -2278,14 +2271,13 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2278
2271
|
summaryTree,
|
|
2279
2272
|
summaryStats,
|
|
2280
2273
|
generateDuration: trace.trace().duration,
|
|
2281
|
-
forcedFullTree,
|
|
2282
2274
|
};
|
|
2283
2275
|
continueResult = checkContinue();
|
|
2284
2276
|
if (!continueResult.continue) {
|
|
2285
2277
|
return {
|
|
2286
2278
|
stage: "generate",
|
|
2287
2279
|
...generateSummaryData,
|
|
2288
|
-
error: new
|
|
2280
|
+
error: new RetriableSummaryError(continueResult.error),
|
|
2289
2281
|
};
|
|
2290
2282
|
}
|
|
2291
2283
|
const summaryContext = lastAck === undefined
|
|
@@ -2307,7 +2299,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2307
2299
|
return {
|
|
2308
2300
|
stage: "generate",
|
|
2309
2301
|
...generateSummaryData,
|
|
2310
|
-
error: wrapError(error, (msg) => new
|
|
2302
|
+
error: wrapError(error, (msg) => new RetriableSummaryError(msg)),
|
|
2311
2303
|
};
|
|
2312
2304
|
}
|
|
2313
2305
|
const parent = summaryContext.ackHandle;
|
|
@@ -2328,7 +2320,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2328
2320
|
return {
|
|
2329
2321
|
stage: "upload",
|
|
2330
2322
|
...uploadData,
|
|
2331
|
-
error: new
|
|
2323
|
+
error: new RetriableSummaryError(continueResult.error),
|
|
2332
2324
|
};
|
|
2333
2325
|
}
|
|
2334
2326
|
let clientSequenceNumber;
|
|
@@ -2339,7 +2331,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2339
2331
|
return {
|
|
2340
2332
|
stage: "upload",
|
|
2341
2333
|
...uploadData,
|
|
2342
|
-
error: wrapError(error, (msg) => new
|
|
2334
|
+
error: wrapError(error, (msg) => new RetriableSummaryError(msg)),
|
|
2343
2335
|
};
|
|
2344
2336
|
}
|
|
2345
2337
|
const submitData = {
|
|
@@ -2355,7 +2347,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2355
2347
|
return {
|
|
2356
2348
|
stage: "upload",
|
|
2357
2349
|
...uploadData,
|
|
2358
|
-
error: wrapError(error, (msg) => new
|
|
2350
|
+
error: wrapError(error, (msg) => new RetriableSummaryError(msg)),
|
|
2359
2351
|
};
|
|
2360
2352
|
}
|
|
2361
2353
|
return submitData;
|
|
@@ -2445,13 +2437,13 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2445
2437
|
this.verifyNotClosed();
|
|
2446
2438
|
return this.blobManager.createBlob(blob, signal);
|
|
2447
2439
|
}
|
|
2448
|
-
submitIdAllocationOpIfNeeded(resubmitOutstandingRanges
|
|
2440
|
+
submitIdAllocationOpIfNeeded(resubmitOutstandingRanges) {
|
|
2449
2441
|
if (this._idCompressor) {
|
|
2450
2442
|
const idRange = resubmitOutstandingRanges
|
|
2451
|
-
? this.
|
|
2443
|
+
? this._idCompressor.takeUnfinalizedCreationRange()
|
|
2452
2444
|
: this._idCompressor.takeNextCreationRange();
|
|
2453
2445
|
// Don't include the idRange if there weren't any Ids allocated
|
|
2454
|
-
if (idRange
|
|
2446
|
+
if (idRange.ids !== undefined) {
|
|
2455
2447
|
const idAllocationMessage = {
|
|
2456
2448
|
type: ContainerMessageType.IdAllocation,
|
|
2457
2449
|
contents: idRange,
|
|
@@ -2480,6 +2472,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2480
2472
|
});
|
|
2481
2473
|
}
|
|
2482
2474
|
const type = containerRuntimeMessage.type;
|
|
2475
|
+
assert(type !== ContainerMessageType.IdAllocation, "IdAllocation should be submitted directly to outbox.");
|
|
2483
2476
|
const message = {
|
|
2484
2477
|
contents: serializedContent,
|
|
2485
2478
|
metadata,
|
|
@@ -2487,44 +2480,35 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2487
2480
|
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2488
2481
|
};
|
|
2489
2482
|
try {
|
|
2490
|
-
|
|
2491
|
-
//
|
|
2492
|
-
//
|
|
2493
|
-
//
|
|
2494
|
-
|
|
2495
|
-
|
|
2483
|
+
this.submitIdAllocationOpIfNeeded(false);
|
|
2484
|
+
// Allow document schema controller to send a message if it needs to propose change in document schema.
|
|
2485
|
+
// If it needs to send a message, it will call provided callback with payload of such message and rely
|
|
2486
|
+
// on this callback to do actual sending.
|
|
2487
|
+
const contents = this.documentsSchemaController.maybeSendSchemaMessage();
|
|
2488
|
+
if (contents) {
|
|
2489
|
+
this.logger.sendTelemetryEvent({
|
|
2490
|
+
eventName: "SchemaChangeProposal",
|
|
2491
|
+
refSeq: contents.refSeq,
|
|
2492
|
+
version: contents.version,
|
|
2493
|
+
newRuntimeSchema: JSON.stringify(contents.runtime),
|
|
2494
|
+
sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
|
|
2495
|
+
oldRuntimeSchema: JSON.stringify(this.metadata?.documentSchema?.runtime),
|
|
2496
|
+
});
|
|
2497
|
+
const msg = {
|
|
2498
|
+
type: ContainerMessageType.DocumentSchemaChange,
|
|
2499
|
+
contents,
|
|
2500
|
+
};
|
|
2501
|
+
this.outbox.submit({
|
|
2502
|
+
contents: JSON.stringify(msg),
|
|
2503
|
+
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2504
|
+
});
|
|
2505
|
+
}
|
|
2506
|
+
if (type === ContainerMessageType.BlobAttach) {
|
|
2507
|
+
// BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
|
|
2508
|
+
this.outbox.submitBlobAttach(message);
|
|
2496
2509
|
}
|
|
2497
2510
|
else {
|
|
2498
|
-
this.
|
|
2499
|
-
// Allow document schema controller to send a message if it needs to propose change in document schema.
|
|
2500
|
-
// If it needs to send a message, it will call provided callback with payload of such message and rely
|
|
2501
|
-
// on this callback to do actual sending.
|
|
2502
|
-
const contents = this.documentsSchemaController.maybeSendSchemaMessage();
|
|
2503
|
-
if (contents) {
|
|
2504
|
-
this.logger.sendTelemetryEvent({
|
|
2505
|
-
eventName: "SchemaChangeProposal",
|
|
2506
|
-
refSeq: contents.refSeq,
|
|
2507
|
-
version: contents.version,
|
|
2508
|
-
newRuntimeSchema: JSON.stringify(contents.runtime),
|
|
2509
|
-
sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
|
|
2510
|
-
oldRuntimeSchema: JSON.stringify(this.metadata?.documentSchema?.runtime),
|
|
2511
|
-
});
|
|
2512
|
-
const msg = {
|
|
2513
|
-
type: ContainerMessageType.DocumentSchemaChange,
|
|
2514
|
-
contents,
|
|
2515
|
-
};
|
|
2516
|
-
this.outbox.submit({
|
|
2517
|
-
contents: JSON.stringify(msg),
|
|
2518
|
-
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2519
|
-
});
|
|
2520
|
-
}
|
|
2521
|
-
if (type === ContainerMessageType.BlobAttach) {
|
|
2522
|
-
// BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
|
|
2523
|
-
this.outbox.submitBlobAttach(message);
|
|
2524
|
-
}
|
|
2525
|
-
else {
|
|
2526
|
-
this.outbox.submit(message);
|
|
2527
|
-
}
|
|
2511
|
+
this.outbox.submit(message);
|
|
2528
2512
|
}
|
|
2529
2513
|
if (!this.currentlyBatching()) {
|
|
2530
2514
|
this.flush();
|
|
@@ -2699,51 +2683,23 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2699
2683
|
* and then close as the current main client is likely to be re-elected as the parent summarizer again.
|
|
2700
2684
|
*/
|
|
2701
2685
|
if (!result.isSummaryTracked && result.isSummaryNewer) {
|
|
2702
|
-
await this.
|
|
2686
|
+
await this.fetchLatestSnapshotAndClose(summaryLogger, {
|
|
2703
2687
|
eventName: "RefreshLatestSummaryAckFetch",
|
|
2704
2688
|
ackHandle,
|
|
2705
2689
|
targetSequenceNumber: summaryRefSeq,
|
|
2706
2690
|
}, readAndParseBlob);
|
|
2707
|
-
await this.closeStaleSummarizer();
|
|
2708
2691
|
return;
|
|
2709
2692
|
}
|
|
2710
2693
|
// Notify the garbage collector so it can update its latest summary state.
|
|
2711
2694
|
await this.garbageCollector.refreshLatestSummary(result);
|
|
2712
2695
|
}
|
|
2713
2696
|
/**
|
|
2714
|
-
* Fetches the latest snapshot from storage
|
|
2715
|
-
*
|
|
2716
|
-
*
|
|
2717
|
-
* @returns a generic summarization error
|
|
2697
|
+
* Fetches the latest snapshot from storage and closes the container. This is done in cases where
|
|
2698
|
+
* the last known snapshot is older than the latest one. This will ensure that the latest snapshot
|
|
2699
|
+
* is downloaded and we don't end up loading snapshot from cache.
|
|
2718
2700
|
*/
|
|
2719
|
-
async
|
|
2720
|
-
|
|
2721
|
-
// This is a performance optimization as the same parent is likely to be elected again, and would use its
|
|
2722
|
-
// cache to fetch the snapshot instead of the network.
|
|
2723
|
-
await this.fetchLatestSnapshotFromStorage(summaryLogger, {
|
|
2724
|
-
eventName: "RefreshLatestSummaryFromServerFetch",
|
|
2725
|
-
}, readAndParseBlob);
|
|
2726
|
-
await this.closeStaleSummarizer();
|
|
2727
|
-
return {
|
|
2728
|
-
stage: "base",
|
|
2729
|
-
error: new LoggingError("summary state stale - Unsupported option 'refreshLatestAck'"),
|
|
2730
|
-
referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
|
|
2731
|
-
minimumSequenceNumber: this.deltaManager.minimumSequenceNumber,
|
|
2732
|
-
};
|
|
2733
|
-
}
|
|
2734
|
-
async closeStaleSummarizer() {
|
|
2735
|
-
// Delay before restarting summarizer to prevent the summarizer from restarting too frequently.
|
|
2736
|
-
await delay(this.closeSummarizerDelayMs);
|
|
2737
|
-
this._summarizer?.stop("latestSummaryStateStale");
|
|
2738
|
-
this.disposeFn();
|
|
2739
|
-
}
|
|
2740
|
-
/**
|
|
2741
|
-
* Downloads the latest snapshot from storage.
|
|
2742
|
-
* By default, it also closes the container after downloading the snapshot. However, this may be
|
|
2743
|
-
* overridden via options.
|
|
2744
|
-
*/
|
|
2745
|
-
async fetchLatestSnapshotFromStorage(logger, event, readAndParseBlob) {
|
|
2746
|
-
return PerformanceEvent.timedExecAsync(logger, event, async (perfEvent) => {
|
|
2701
|
+
async fetchLatestSnapshotAndClose(logger, event, readAndParseBlob) {
|
|
2702
|
+
await PerformanceEvent.timedExecAsync(logger, event, async (perfEvent) => {
|
|
2747
2703
|
const stats = {};
|
|
2748
2704
|
const trace = Trace.start();
|
|
2749
2705
|
const versions = await this.storage.getVersions(null, 1, "prefetchLatestSummaryBeforeClose", FetchSource.noCache);
|
|
@@ -2756,12 +2712,10 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2756
2712
|
stats.snapshotRefSeq = latestSnapshotRefSeq;
|
|
2757
2713
|
stats.snapshotVersion = versions[0].id;
|
|
2758
2714
|
perfEvent.end(stats);
|
|
2759
|
-
return {
|
|
2760
|
-
snapshotTree: maybeSnapshot,
|
|
2761
|
-
versionId: versions[0].id,
|
|
2762
|
-
latestSnapshotRefSeq,
|
|
2763
|
-
};
|
|
2764
2715
|
});
|
|
2716
|
+
await delay(this.closeSummarizerDelayMs);
|
|
2717
|
+
this._summarizer?.stop("latestSummaryStateStale");
|
|
2718
|
+
this.disposeFn();
|
|
2765
2719
|
}
|
|
2766
2720
|
getPendingLocalState(props) {
|
|
2767
2721
|
this.verifyNotClosed();
|