@fluidframework/container-runtime 2.1.0-276326 → 2.1.0-281041
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/README.md +74 -21
- package/api-extractor/api-extractor.current.json +5 -0
- package/api-extractor/api-extractor.legacy.json +1 -1
- package/api-extractor.json +1 -1
- package/api-report/container-runtime.legacy.public.api.md +9 -0
- package/container-runtime.test-files.tar +0 -0
- package/dist/{blobManager.d.ts → blobManager/blobManager.d.ts} +19 -29
- package/dist/blobManager/blobManager.d.ts.map +1 -0
- package/dist/{blobManager.js → blobManager/blobManager.js} +42 -83
- package/dist/blobManager/blobManager.js.map +1 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts +30 -0
- package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -0
- package/dist/blobManager/blobManagerSnapSum.js +82 -0
- package/dist/blobManager/blobManagerSnapSum.js.map +1 -0
- package/dist/blobManager/index.d.ts +7 -0
- package/dist/blobManager/index.d.ts.map +1 -0
- package/dist/blobManager/index.js +16 -0
- package/dist/blobManager/index.js.map +1 -0
- package/dist/channelCollection.d.ts +1 -1
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +40 -8
- package/dist/channelCollection.js.map +1 -1
- package/dist/containerRuntime.d.ts +15 -10
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +199 -162
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +5 -0
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +16 -5
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +16 -10
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +4 -2
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcHelpers.d.ts.map +1 -1
- package/dist/gc/gcHelpers.js +12 -0
- package/dist/gc/gcHelpers.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +3 -2
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +6 -6
- package/dist/gc/gcTelemetry.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/metadata.d.ts +7 -1
- package/dist/metadata.d.ts.map +1 -1
- package/dist/metadata.js +6 -0
- package/dist/metadata.js.map +1 -1
- package/dist/opLifecycle/batchManager.d.ts +8 -1
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +37 -16
- package/dist/opLifecycle/batchManager.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/index.d.ts +1 -1
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +2 -1
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +12 -8
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +14 -11
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +11 -6
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +22 -6
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +43 -21
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +22 -6
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +59 -9
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts +39 -13
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +98 -33
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/public.d.ts +1 -1
- package/dist/scheduleManager.js +4 -0
- package/dist/scheduleManager.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 +1 -2
- package/dist/summary/index.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +0 -1
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js +7 -4
- package/dist/summary/summaryFormat.js.map +1 -1
- package/internal.d.ts +1 -1
- package/legacy.d.ts +1 -1
- package/lib/{blobManager.d.ts → blobManager/blobManager.d.ts} +19 -29
- package/lib/blobManager/blobManager.d.ts.map +1 -0
- package/lib/{blobManager.js → blobManager/blobManager.js} +40 -83
- package/lib/blobManager/blobManager.js.map +1 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts +30 -0
- package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -0
- package/lib/blobManager/blobManagerSnapSum.js +75 -0
- package/lib/blobManager/blobManagerSnapSum.js.map +1 -0
- package/lib/blobManager/index.d.ts +7 -0
- package/lib/blobManager/index.d.ts.map +1 -0
- package/lib/blobManager/index.js +7 -0
- package/lib/blobManager/index.js.map +1 -0
- package/lib/channelCollection.d.ts +1 -1
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +40 -8
- package/lib/channelCollection.js.map +1 -1
- package/lib/containerRuntime.d.ts +15 -10
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +149 -112
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +5 -0
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +17 -6
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +16 -10
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +4 -2
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcHelpers.d.ts.map +1 -1
- package/lib/gc/gcHelpers.js +12 -0
- package/lib/gc/gcHelpers.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +3 -2
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +6 -6
- package/lib/gc/gcTelemetry.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/metadata.d.ts +7 -1
- package/lib/metadata.d.ts.map +1 -1
- package/lib/metadata.js +4 -1
- package/lib/metadata.js.map +1 -1
- package/lib/opLifecycle/batchManager.d.ts +8 -1
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +35 -15
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +1 -1
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +1 -1
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +1 -1
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +12 -8
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +14 -11
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +11 -6
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +22 -6
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +44 -22
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +22 -6
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +57 -7
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts +39 -13
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +99 -34
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/public.d.ts +1 -1
- package/lib/scheduleManager.js +4 -0
- package/lib/scheduleManager.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 +1 -1
- package/lib/summary/index.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +0 -1
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js +5 -2
- package/lib/summary/summaryFormat.js.map +1 -1
- package/package.json +49 -34
- package/src/{blobManager.ts → blobManager/blobManager.ts} +57 -123
- package/src/blobManager/blobManagerSnapSum.ts +133 -0
- package/src/blobManager/index.ts +19 -0
- package/src/channelCollection.ts +48 -11
- package/src/containerRuntime.ts +213 -158
- package/src/dataStoreContext.ts +30 -6
- package/src/gc/garbageCollection.ts +17 -12
- package/src/gc/gcDefinitions.ts +7 -2
- package/src/gc/gcHelpers.ts +18 -6
- package/src/gc/gcTelemetry.ts +20 -8
- package/src/index.ts +1 -1
- package/src/metadata.ts +11 -1
- package/src/opLifecycle/README.md +0 -8
- package/src/opLifecycle/batchManager.ts +46 -16
- package/src/opLifecycle/definitions.ts +1 -1
- package/src/opLifecycle/index.ts +8 -1
- package/src/opLifecycle/opCompressor.ts +12 -8
- package/src/opLifecycle/opGroupingManager.ts +14 -11
- package/src/opLifecycle/opSplitter.ts +10 -6
- package/src/opLifecycle/outbox.ts +64 -26
- package/src/opLifecycle/remoteMessageProcessor.ts +84 -11
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +177 -60
- package/src/scheduleManager.ts +6 -2
- package/src/summary/README.md +81 -0
- package/src/summary/index.ts +0 -1
- package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -1
- package/src/summary/summaryFormat.ts +4 -2
- package/src/summary/summaryFormats.md +69 -8
- package/tsconfig.json +0 -1
- package/dist/blobManager.d.ts.map +0 -1
- package/dist/blobManager.js.map +0 -1
- package/lib/blobManager.d.ts.map +0 -1
- package/lib/blobManager.js.map +0 -1
- package/src/summary/images/appTree.png +0 -0
- package/src/summary/images/protocolAndAppTree.png +0 -0
- package/src/summary/images/summaryTree.png +0 -0
|
@@ -14,7 +14,7 @@ import type { IIdCompressor } from "@fluidframework/id-compressor";
|
|
|
14
14
|
import type { IIdCompressorCore, SerializedIdCompressorWithOngoingSession } from "@fluidframework/id-compressor/internal";
|
|
15
15
|
import { ISummaryTreeWithStats, ITelemetryContext, IGarbageCollectionData, CreateChildSummarizerNodeParam, FlushMode, IDataStore, IFluidDataStoreContextDetached, IFluidDataStoreRegistry, NamedFluidDataStoreRegistryEntries, SummarizeInternalFn } from "@fluidframework/runtime-definitions/internal";
|
|
16
16
|
import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
|
|
17
|
-
import {
|
|
17
|
+
import { IPendingBlobs, type IBlobManagerLoadInfo } from "./blobManager/index.js";
|
|
18
18
|
import { GCNodeType, IGCRuntimeOptions, IGCStats } from "./gc/index.js";
|
|
19
19
|
import { ContainerMessageType } from "./messageTypes.js";
|
|
20
20
|
import { IBatch } from "./opLifecycle/index.js";
|
|
@@ -534,6 +534,11 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
534
534
|
* The id of the version used to initially load this runtime, or undefined if it's newly created.
|
|
535
535
|
*/
|
|
536
536
|
private readonly loadedFromVersionId;
|
|
537
|
+
private readonly isSnapshotInstanceOfISnapshot;
|
|
538
|
+
/**
|
|
539
|
+
* The summary context of the last acked summary. The properties from this as used when uploading a summary.
|
|
540
|
+
*/
|
|
541
|
+
private lastAckedSummaryContext;
|
|
537
542
|
/**
|
|
538
543
|
* It a cache for holding mapping for loading groupIds with its snapshot from the service. Add expiry policy of 1 minute.
|
|
539
544
|
* Starting with 1 min and based on recorded usage we can tweak it later on.
|
|
@@ -624,6 +629,8 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
624
629
|
/**
|
|
625
630
|
* Flush the pending ops manually.
|
|
626
631
|
* This method is expected to be called at the end of a batch.
|
|
632
|
+
* @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch
|
|
633
|
+
* with the given Batch ID, which must be preserved
|
|
627
634
|
*/
|
|
628
635
|
private flush;
|
|
629
636
|
/**
|
|
@@ -645,7 +652,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
645
652
|
_createDataStoreWithProps(pkg: Readonly<string | string[]>, props?: any): Promise<IDataStore>;
|
|
646
653
|
private canSendOps;
|
|
647
654
|
/**
|
|
648
|
-
*
|
|
655
|
+
* Typically ops are batched and later flushed together, but in some cases we want to flush immediately.
|
|
649
656
|
*/
|
|
650
657
|
private currentlyBatching;
|
|
651
658
|
private readonly _quorum;
|
|
@@ -737,10 +744,6 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
737
744
|
* data store or an attachment blob.
|
|
738
745
|
*/
|
|
739
746
|
getGCNodePackagePath(nodePath: string): Promise<readonly string[] | undefined>;
|
|
740
|
-
/**
|
|
741
|
-
* Returns whether a given path is for attachment blobs that are in the format - "/BlobManager.basePath/...".
|
|
742
|
-
*/
|
|
743
|
-
private isBlobPath;
|
|
744
747
|
/**
|
|
745
748
|
* From a given list of routes, separate and return routes that belong to blob manager and data stores.
|
|
746
749
|
* @param routes - A list of routes that can belong to data stores or blob manager.
|
|
@@ -816,11 +819,13 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
|
|
|
816
819
|
/** Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck */
|
|
817
820
|
refreshLatestSummaryAck(options: IRefreshSummaryAckOptions): Promise<void>;
|
|
818
821
|
/**
|
|
819
|
-
* Fetches the latest snapshot from storage
|
|
820
|
-
*
|
|
821
|
-
*
|
|
822
|
+
* Fetches the latest snapshot from storage. If the fetched snapshot is same or newer than the one for which ack
|
|
823
|
+
* was received, close this client. Fetching the snapshot will update the cache for this client so if it's
|
|
824
|
+
* re-elected as summarizer, this will prevent any thrashing.
|
|
825
|
+
* If the fetched snapshot is older than the one for which ack was received, ignore the ack and return. This can
|
|
826
|
+
* happen in scenarios where the snapshot for the ack was lost in storage in scenarios like DB rollback, etc.
|
|
822
827
|
*/
|
|
823
|
-
private
|
|
828
|
+
private fetchLatestSnapshotAndMaybeClose;
|
|
824
829
|
getPendingLocalState(props?: IGetPendingLocalStateProps): unknown;
|
|
825
830
|
summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults;
|
|
826
831
|
enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"containerRuntime.d.ts","sourceRoot":"","sources":["../src/containerRuntime.ts"],"names":[],"mappings":"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"}
|
package/lib/containerRuntime.js
CHANGED
|
@@ -16,7 +16,7 @@ import { DataCorruptionError, DataProcessingError, GenericError, LoggingError, P
|
|
|
16
16
|
TaggedLoggerAdapter, UsageError, createChildLogger, createChildMonitoringContext, createSampledLogger, loggerToMonitoringContext, raiseConnectedEvent, wrapError, tagCodeArtifacts, } from "@fluidframework/telemetry-utils/internal";
|
|
17
17
|
import { v4 as uuid } from "uuid";
|
|
18
18
|
import { BindBatchTracker } from "./batchTracker.js";
|
|
19
|
-
import { BlobManager } from "./blobManager.js";
|
|
19
|
+
import { BlobManager, blobManagerBasePath, blobsTreeName, isBlobPath, loadBlobManagerLoadInfo, } from "./blobManager/index.js";
|
|
20
20
|
import { ChannelCollection, getSummaryForDatastores, wrapContext, } from "./channelCollection.js";
|
|
21
21
|
import { ReportOpPerfTelemetry } from "./connectionTelemetry.js";
|
|
22
22
|
import { ContainerFluidHandleContext } from "./containerHandleContext.js";
|
|
@@ -29,7 +29,7 @@ import { OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, Re
|
|
|
29
29
|
import { pkgVersion } from "./packageVersion.js";
|
|
30
30
|
import { PendingStateManager, } from "./pendingStateManager.js";
|
|
31
31
|
import { ScheduleManager } from "./scheduleManager.js";
|
|
32
|
-
import { DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator, Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName,
|
|
32
|
+
import { DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator, Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName, chunksBlobName, createRootSummarizerNodeWithGC, electedSummarizerBlobName, extractSummaryMetadataMessage, idCompressorBlobName, metadataBlobName, rootHasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, } from "./summary/index.js";
|
|
33
33
|
import { Throttler, formExponentialFn } from "./throttler.js";
|
|
34
34
|
/**
|
|
35
35
|
* Utility to implement compat behaviors given an unknown message type
|
|
@@ -161,7 +161,7 @@ export function getDeviceSpec() {
|
|
|
161
161
|
export const makeLegacySendBatchFn = (submitFn, deltaManager) => (batch) => {
|
|
162
162
|
// Default to negative one to match Container.submitBatch behavior
|
|
163
163
|
let clientSequenceNumber = -1;
|
|
164
|
-
for (const message of batch.
|
|
164
|
+
for (const message of batch.messages) {
|
|
165
165
|
clientSequenceNumber = submitFn(MessageType.Operation,
|
|
166
166
|
// For back-compat (submitFn only works on deserialized content)
|
|
167
167
|
message.contents === undefined ? undefined : JSON.parse(message.contents), true, // batch
|
|
@@ -277,12 +277,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
277
277
|
tryFetchBlob(idCompressorBlobName),
|
|
278
278
|
]);
|
|
279
279
|
// read snapshot blobs needed for BlobManager to load
|
|
280
|
-
const blobManagerSnapshot = await
|
|
281
|
-
// IContainerContext storage api return type still has undefined in 0.39 package version.
|
|
282
|
-
// So once we release 0.40 container-defn package we can remove this check.
|
|
283
|
-
assert(context.storage !== undefined, 0x256 /* "storage undefined in attached container" */);
|
|
284
|
-
return readAndParse(context.storage, id);
|
|
285
|
-
});
|
|
280
|
+
const blobManagerSnapshot = await loadBlobManagerLoadInfo(context);
|
|
286
281
|
const messageAtLastSummary = lastMessageFromMetadata(metadata);
|
|
287
282
|
// Verify summary runtime sequence number matches protocol sequence number.
|
|
288
283
|
const runtimeSequenceNumber = messageAtLastSummary?.sequenceNumber;
|
|
@@ -380,9 +375,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
380
375
|
return createIdCompressor(compressorLogger);
|
|
381
376
|
}
|
|
382
377
|
};
|
|
383
|
-
const
|
|
384
|
-
const compressionLz4 = disableCompression !== true &&
|
|
385
|
-
compressionOptions.minimumBatchSizeInBytes !== Infinity &&
|
|
378
|
+
const compressionLz4 = compressionOptions.minimumBatchSizeInBytes !== Infinity &&
|
|
386
379
|
compressionOptions.compressionAlgorithm === "lz4";
|
|
387
380
|
const documentSchemaController = new DocumentsSchemaController(existing, protocolSequenceNumber, metadata?.documentSchema, {
|
|
388
381
|
explicitSchemaControl,
|
|
@@ -393,9 +386,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
393
386
|
}, (schema) => {
|
|
394
387
|
runtime.onSchemaChange(schema);
|
|
395
388
|
});
|
|
396
|
-
const featureGatesForTelemetry = {
|
|
397
|
-
disableCompression,
|
|
398
|
-
};
|
|
389
|
+
const featureGatesForTelemetry = {};
|
|
399
390
|
const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], {
|
|
400
391
|
summaryOptions,
|
|
401
392
|
gcOptions,
|
|
@@ -665,14 +656,13 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
665
656
|
});
|
|
666
657
|
this.telemetryDocumentId = metadata?.telemetryDocumentId ?? uuid();
|
|
667
658
|
this.disableAttachReorder = this.mc.config.getBoolean("Fluid.ContainerRuntime.disableAttachOpReorder");
|
|
668
|
-
const disableChunking = this.mc.config.getBoolean("Fluid.ContainerRuntime.CompressionChunkingDisabled");
|
|
669
659
|
const opGroupingManager = new OpGroupingManager({
|
|
670
660
|
groupedBatchingEnabled: this.groupedBatchingEnabled,
|
|
671
661
|
opCountThreshold: this.mc.config.getNumber("Fluid.ContainerRuntime.GroupedBatchingOpCount") ?? 2,
|
|
672
662
|
reentrantBatchGroupingEnabled: this.mc.config.getBoolean("Fluid.ContainerRuntime.GroupedBatchingReentrancy") ??
|
|
673
663
|
true,
|
|
674
664
|
}, this.mc.logger);
|
|
675
|
-
const opSplitter = new OpSplitter(chunks, this.submitBatchFn,
|
|
665
|
+
const opSplitter = new OpSplitter(chunks, this.submitBatchFn, runtimeOptions.chunkSizeInBytes, runtimeOptions.maxBatchSizeInBytes, this.mc.logger);
|
|
676
666
|
this.remoteMessageProcessor = new RemoteMessageProcessor(opSplitter, new OpDecompressor(this.mc.logger), opGroupingManager);
|
|
677
667
|
const pendingRuntimeState = pendingLocalState;
|
|
678
668
|
this.pendingStateManager = new PendingStateManager({
|
|
@@ -680,10 +670,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
680
670
|
clientId: () => this.clientId,
|
|
681
671
|
close: this.closeFn,
|
|
682
672
|
connected: () => this.connected,
|
|
683
|
-
reSubmit: (message) => {
|
|
684
|
-
this.reSubmit(message);
|
|
685
|
-
this.flush();
|
|
686
|
-
},
|
|
687
673
|
reSubmitBatch: this.reSubmitBatch.bind(this),
|
|
688
674
|
isActiveConnection: () => this.innerDeltaManager.active,
|
|
689
675
|
isAttached: () => this.attachState !== AttachState.Detached,
|
|
@@ -766,6 +752,9 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
766
752
|
this.summarizerNode.updateBaseSummaryState(baseSnapshot);
|
|
767
753
|
}
|
|
768
754
|
const parentContext = wrapContext(this);
|
|
755
|
+
if (snapshotWithContents !== undefined) {
|
|
756
|
+
this.isSnapshotInstanceOfISnapshot = true;
|
|
757
|
+
}
|
|
769
758
|
// Due to a mismatch between different layers in terms of
|
|
770
759
|
// what is the interface of passing signals, we need the
|
|
771
760
|
// downstream stores to wrap the signal.
|
|
@@ -935,7 +924,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
935
924
|
sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
|
|
936
925
|
featureGates: JSON.stringify({
|
|
937
926
|
...featureGatesForTelemetry,
|
|
938
|
-
disableChunking,
|
|
939
927
|
disableAttachReorder: this.disableAttachReorder,
|
|
940
928
|
disablePartialFlush,
|
|
941
929
|
closeSummarizerDelayOverride,
|
|
@@ -1114,9 +1102,13 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1114
1102
|
let childTree = snapshotTree;
|
|
1115
1103
|
for (const part of pathParts) {
|
|
1116
1104
|
if (hasIsolatedChannels) {
|
|
1117
|
-
|
|
1105
|
+
// TODO Why are we non null asserting here
|
|
1106
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1107
|
+
childTree = childTree.trees[channelsTreeName];
|
|
1118
1108
|
}
|
|
1119
|
-
|
|
1109
|
+
// TODO Why are we non null asserting here
|
|
1110
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1111
|
+
childTree = childTree.trees[part];
|
|
1120
1112
|
}
|
|
1121
1113
|
return childTree;
|
|
1122
1114
|
}
|
|
@@ -1162,7 +1154,9 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1162
1154
|
// eslint-disable-next-line @typescript-eslint/return-await -- Adding an await here causes test failures
|
|
1163
1155
|
return this.resolveHandle(requestParser.createSubRequest(1));
|
|
1164
1156
|
}
|
|
1165
|
-
if (id ===
|
|
1157
|
+
if (id === blobManagerBasePath && requestParser.isLeaf(2)) {
|
|
1158
|
+
// TODO why are we non null asserting here?
|
|
1159
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
1166
1160
|
const blob = await this.blobManager.getBlob(requestParser.pathParts[1]);
|
|
1167
1161
|
return blob
|
|
1168
1162
|
? {
|
|
@@ -1476,25 +1470,36 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1476
1470
|
// but will not modify the contents object (likely it will replace it on the message).
|
|
1477
1471
|
const messageCopy = { ...messageArg };
|
|
1478
1472
|
const savedOp = messageCopy.metadata?.savedOp;
|
|
1479
|
-
|
|
1480
|
-
const
|
|
1481
|
-
|
|
1482
|
-
|
|
1483
|
-
|
|
1484
|
-
|
|
1485
|
-
|
|
1486
|
-
|
|
1473
|
+
if (modernRuntimeMessage) {
|
|
1474
|
+
const processResult = this.remoteMessageProcessor.process(messageCopy);
|
|
1475
|
+
if (processResult === undefined) {
|
|
1476
|
+
// This means the incoming message is an incomplete part of a message or batch
|
|
1477
|
+
// and we need to process more messages before the rest of the system can understand it.
|
|
1478
|
+
return;
|
|
1479
|
+
}
|
|
1480
|
+
const batchStartCsn = processResult.batchStartCsn;
|
|
1481
|
+
const batch = processResult.messages;
|
|
1482
|
+
const messages = local
|
|
1483
|
+
? this.pendingStateManager.processPendingLocalBatch(batch, batchStartCsn)
|
|
1484
|
+
: batch.map((message) => ({ message, localOpMetadata: undefined }));
|
|
1485
|
+
messages.forEach(({ message, localOpMetadata }) => {
|
|
1486
|
+
const msg = {
|
|
1487
|
+
message,
|
|
1487
1488
|
local,
|
|
1488
1489
|
modernRuntimeMessage,
|
|
1489
|
-
|
|
1490
|
-
|
|
1491
|
-
|
|
1492
|
-
|
|
1493
|
-
|
|
1494
|
-
|
|
1495
|
-
|
|
1496
|
-
msg
|
|
1497
|
-
|
|
1490
|
+
savedOp,
|
|
1491
|
+
localOpMetadata,
|
|
1492
|
+
};
|
|
1493
|
+
this.ensureNoDataModelChanges(() => this.processCore(msg));
|
|
1494
|
+
});
|
|
1495
|
+
}
|
|
1496
|
+
else {
|
|
1497
|
+
const msg = {
|
|
1498
|
+
message: messageCopy,
|
|
1499
|
+
local,
|
|
1500
|
+
modernRuntimeMessage,
|
|
1501
|
+
savedOp,
|
|
1502
|
+
};
|
|
1498
1503
|
this.ensureNoDataModelChanges(() => this.processCore(msg));
|
|
1499
1504
|
}
|
|
1500
1505
|
}
|
|
@@ -1502,7 +1507,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1502
1507
|
* Direct the message to the correct subsystem for processing, and implement other side effects
|
|
1503
1508
|
*/
|
|
1504
1509
|
processCore(messageWithContext) {
|
|
1505
|
-
const { message, local } = messageWithContext;
|
|
1510
|
+
const { message, local, localOpMetadata } = messageWithContext;
|
|
1506
1511
|
// Intercept to reduce minimum sequence number to the delta manager's minimum sequence number.
|
|
1507
1512
|
// Sequence numbers are not guaranteed to follow any sort of order. Re-entrancy is one of those situations
|
|
1508
1513
|
if (this.deltaManager.minimumSequenceNumber <
|
|
@@ -1516,15 +1521,8 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1516
1521
|
this.scheduleManager.beforeOpProcessing(message);
|
|
1517
1522
|
this._processedClientSequenceNumber = message.clientSequenceNumber;
|
|
1518
1523
|
try {
|
|
1519
|
-
//
|
|
1520
|
-
// These calls should be made for all but chunked ops:
|
|
1521
|
-
// 1) this.pendingStateManager.processPendingLocalMessage() below
|
|
1522
|
-
// 2) this.resetReconnectCount() below
|
|
1524
|
+
// RemoteMessageProcessor would have already reconstituted Chunked Ops into the original op type
|
|
1523
1525
|
assert(message.type !== ContainerMessageType.ChunkedOp, 0x93b /* we should never get here with chunked ops */);
|
|
1524
|
-
let localOpMetadata;
|
|
1525
|
-
if (local && messageWithContext.modernRuntimeMessage) {
|
|
1526
|
-
localOpMetadata = this.pendingStateManager.processPendingLocalMessage(messageWithContext.message);
|
|
1527
|
-
}
|
|
1528
1526
|
// If there are no more pending messages after processing a local message,
|
|
1529
1527
|
// the document is no longer dirty.
|
|
1530
1528
|
if (!this.hasPendingMessages()) {
|
|
@@ -1683,10 +1681,12 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1683
1681
|
/**
|
|
1684
1682
|
* Flush the pending ops manually.
|
|
1685
1683
|
* This method is expected to be called at the end of a batch.
|
|
1684
|
+
* @param resubmittingBatchId - If defined, indicates this is a resubmission of a batch
|
|
1685
|
+
* with the given Batch ID, which must be preserved
|
|
1686
1686
|
*/
|
|
1687
|
-
flush() {
|
|
1687
|
+
flush(resubmittingBatchId) {
|
|
1688
1688
|
assert(this._orderSequentiallyCalls === 0, 0x24c /* "Cannot call `flush()` from `orderSequentially`'s callback" */);
|
|
1689
|
-
this.outbox.flush();
|
|
1689
|
+
this.outbox.flush(resubmittingBatchId);
|
|
1690
1690
|
assert(this.outbox.isEmpty, 0x3cf /* reentrancy */);
|
|
1691
1691
|
}
|
|
1692
1692
|
/**
|
|
@@ -1699,7 +1699,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1699
1699
|
// Note: we are not touching any batches other than mainBatch here, for two reasons:
|
|
1700
1700
|
// 1. It would not help, as other batches are flushed independently from main batch.
|
|
1701
1701
|
// 2. There is no way to undo process of data store creation, blob creation, ID compressor ops, or other things tracked by other batches.
|
|
1702
|
-
checkpoint = this.outbox.
|
|
1702
|
+
checkpoint = this.outbox.getBatchCheckpoints().mainBatch;
|
|
1703
1703
|
}
|
|
1704
1704
|
try {
|
|
1705
1705
|
this._orderSequentiallyCalls++;
|
|
@@ -1790,7 +1790,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
1790
1790
|
return (this.connected && !this.innerDeltaManager.readOnlyInfo.readonly && !this.imminentClosure);
|
|
1791
1791
|
}
|
|
1792
1792
|
/**
|
|
1793
|
-
*
|
|
1793
|
+
* Typically ops are batched and later flushed together, but in some cases we want to flush immediately.
|
|
1794
1794
|
*/
|
|
1795
1795
|
currentlyBatching() {
|
|
1796
1796
|
return this.flushMode !== FlushMode.Immediate || this._orderSequentiallyCalls !== 0;
|
|
@@ -2007,7 +2007,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2007
2007
|
* blob manager.
|
|
2008
2008
|
*/
|
|
2009
2009
|
getNodeType(nodePath) {
|
|
2010
|
-
if (
|
|
2010
|
+
if (isBlobPath(nodePath)) {
|
|
2011
2011
|
return GCNodeType.Blob;
|
|
2012
2012
|
}
|
|
2013
2013
|
return this.channelCollection.getGCNodeType(nodePath) ?? GCNodeType.Other;
|
|
@@ -2024,7 +2024,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2024
2024
|
}
|
|
2025
2025
|
switch (this.getNodeType(nodePath)) {
|
|
2026
2026
|
case GCNodeType.Blob:
|
|
2027
|
-
return [
|
|
2027
|
+
return [blobManagerBasePath];
|
|
2028
2028
|
case GCNodeType.DataStore:
|
|
2029
2029
|
case GCNodeType.SubDataStore:
|
|
2030
2030
|
return this.channelCollection.getDataStorePackagePath(nodePath);
|
|
@@ -2032,16 +2032,6 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2032
2032
|
assert(false, 0x2de /* "Package path requested for unsupported node type." */);
|
|
2033
2033
|
}
|
|
2034
2034
|
}
|
|
2035
|
-
/**
|
|
2036
|
-
* Returns whether a given path is for attachment blobs that are in the format - "/BlobManager.basePath/...".
|
|
2037
|
-
*/
|
|
2038
|
-
isBlobPath(path) {
|
|
2039
|
-
const pathParts = path.split("/");
|
|
2040
|
-
if (pathParts.length < 2 || pathParts[1] !== BlobManager.basePath) {
|
|
2041
|
-
return false;
|
|
2042
|
-
}
|
|
2043
|
-
return true;
|
|
2044
|
-
}
|
|
2045
2035
|
/**
|
|
2046
2036
|
* From a given list of routes, separate and return routes that belong to blob manager and data stores.
|
|
2047
2037
|
* @param routes - A list of routes that can belong to data stores or blob manager.
|
|
@@ -2052,7 +2042,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2052
2042
|
const blobManagerRoutes = [];
|
|
2053
2043
|
const dataStoreRoutes = [];
|
|
2054
2044
|
for (const route of routes) {
|
|
2055
|
-
if (
|
|
2045
|
+
if (isBlobPath(route)) {
|
|
2056
2046
|
blobManagerRoutes.push(route);
|
|
2057
2047
|
}
|
|
2058
2048
|
else {
|
|
@@ -2161,7 +2151,7 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2161
2151
|
summaryRefSeqNum = this.deltaManager.lastSequenceNumber;
|
|
2162
2152
|
const minimumSequenceNumber = this.deltaManager.minimumSequenceNumber;
|
|
2163
2153
|
const message = `Summary @${summaryRefSeqNum}:${this.deltaManager.minimumSequenceNumber}`;
|
|
2164
|
-
const
|
|
2154
|
+
const lastAckedContext = this.lastAckedSummaryContext;
|
|
2165
2155
|
const startSummaryResult = this.summarizerNode.startSummary(summaryRefSeqNum, summaryNumberLogger, latestSummaryRefSeqNum);
|
|
2166
2156
|
/**
|
|
2167
2157
|
* This was added to validate that the summarizer node tree has the same reference sequence number from the
|
|
@@ -2213,10 +2203,10 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2213
2203
|
};
|
|
2214
2204
|
}
|
|
2215
2205
|
assert(summaryRefSeqNum === this.deltaManager.lastMessage?.sequenceNumber, 0x395 /* it's one and the same thing */);
|
|
2216
|
-
if (
|
|
2206
|
+
if (lastAckedContext !== this.lastAckedSummaryContext) {
|
|
2217
2207
|
return {
|
|
2218
2208
|
continue: false,
|
|
2219
|
-
error: `Last summary changed while summarizing. ${this.
|
|
2209
|
+
error: `Last summary changed while summarizing. ${this.lastAckedSummaryContext} !== ${lastAckedContext}`,
|
|
2220
2210
|
};
|
|
2221
2211
|
}
|
|
2222
2212
|
return { continue: true };
|
|
@@ -2272,6 +2262,8 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2272
2262
|
// Counting dataStores and handles
|
|
2273
2263
|
// Because handles are unchanged dataStores in the current logic,
|
|
2274
2264
|
// summarized dataStore count is total dataStore count minus handle count
|
|
2265
|
+
// TODO why are we non null asserting here
|
|
2266
|
+
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
2275
2267
|
const dataStoreTree = summaryTree.tree[channelsTreeName];
|
|
2276
2268
|
assert(dataStoreTree.type === SummaryType.Tree, 0x1fc /* "summary is not a tree" */);
|
|
2277
2269
|
const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === SummaryType.Handle).length;
|
|
@@ -2302,17 +2294,11 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2302
2294
|
error: new RetriableSummaryError(continueResult.error),
|
|
2303
2295
|
};
|
|
2304
2296
|
}
|
|
2305
|
-
const summaryContext =
|
|
2306
|
-
|
|
2307
|
-
|
|
2308
|
-
|
|
2309
|
-
|
|
2310
|
-
}
|
|
2311
|
-
: {
|
|
2312
|
-
proposalHandle: lastAck.summaryOp.contents.handle,
|
|
2313
|
-
ackHandle: lastAck.summaryAck.contents.handle,
|
|
2314
|
-
referenceSequenceNumber: summaryRefSeqNum,
|
|
2315
|
-
};
|
|
2297
|
+
const summaryContext = {
|
|
2298
|
+
proposalHandle: this.lastAckedSummaryContext?.proposalHandle ?? undefined,
|
|
2299
|
+
ackHandle: this.lastAckedSummaryContext?.ackHandle ?? this.loadedFromVersionId,
|
|
2300
|
+
referenceSequenceNumber: summaryRefSeqNum,
|
|
2301
|
+
};
|
|
2316
2302
|
let handle;
|
|
2317
2303
|
try {
|
|
2318
2304
|
handle = await this.storage.uploadSummaryWithContext(summarizeResult.summary, summaryContext);
|
|
@@ -2532,7 +2518,9 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2532
2518
|
else {
|
|
2533
2519
|
this.outbox.submit(message);
|
|
2534
2520
|
}
|
|
2535
|
-
if
|
|
2521
|
+
// Note: Technically, the system "always" batches - if this case is true we'll just have a single-message batch.
|
|
2522
|
+
const flushImmediatelyOnSubmit = !this.currentlyBatching();
|
|
2523
|
+
if (flushImmediatelyOnSubmit) {
|
|
2536
2524
|
this.flush();
|
|
2537
2525
|
}
|
|
2538
2526
|
else {
|
|
@@ -2599,13 +2587,16 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2599
2587
|
throw new Error("Runtime is closed");
|
|
2600
2588
|
}
|
|
2601
2589
|
}
|
|
2602
|
-
reSubmitBatch(batch) {
|
|
2590
|
+
reSubmitBatch(batch, batchId) {
|
|
2603
2591
|
this.orderSequentially(() => {
|
|
2604
2592
|
for (const message of batch) {
|
|
2605
2593
|
this.reSubmit(message);
|
|
2606
2594
|
}
|
|
2607
2595
|
});
|
|
2608
|
-
|
|
2596
|
+
// Only include Batch ID if "Offline Load" feature is enabled
|
|
2597
|
+
// It's only needed to identify batches across container forks arising from misuse of offline load.
|
|
2598
|
+
const includeBatchId = this.mc.config.getBoolean("Fluid.Container.enableOfflineLoad") ?? false;
|
|
2599
|
+
this.flush(includeBatchId ? batchId : undefined);
|
|
2609
2600
|
}
|
|
2610
2601
|
reSubmit(message) {
|
|
2611
2602
|
// Need to parse from string for back-compat
|
|
@@ -2696,45 +2687,91 @@ export class ContainerRuntime extends TypedEventEmitter {
|
|
|
2696
2687
|
const { proposalHandle, ackHandle, summaryRefSeq, summaryLogger } = options;
|
|
2697
2688
|
// proposalHandle is always passed from RunningSummarizer.
|
|
2698
2689
|
assert(proposalHandle !== undefined, 0x766 /* proposalHandle should be available */);
|
|
2699
|
-
const readAndParseBlob = async (id) => readAndParse(this.storage, id);
|
|
2700
2690
|
const result = await this.summarizerNode.refreshLatestSummary(proposalHandle, summaryRefSeq);
|
|
2691
|
+
/* eslint-disable jsdoc/check-indentation */
|
|
2701
2692
|
/**
|
|
2702
|
-
*
|
|
2703
|
-
*
|
|
2704
|
-
*
|
|
2705
|
-
*
|
|
2693
|
+
* If the snapshot corresponding to the ack is not tracked by this client, it was submitted by another client.
|
|
2694
|
+
* Take action as per the following scenarios:
|
|
2695
|
+
* 1. If that snapshot is older than the one tracked by this client, ignore the ack because only the latest
|
|
2696
|
+
* snapshot is tracked.
|
|
2697
|
+
* 2. If that snapshot is newer, attempt to fetch the latest snapshot and do one of the following:
|
|
2698
|
+
* 2.1. If the fetched snapshot is same or newer than the one for which ack was received, close this client.
|
|
2699
|
+
* The next summarizer client will likely start from this snapshot and get out of this state. Fetching
|
|
2700
|
+
* the snapshot updates the cache for this client so if it's re-elected as summarizer, this will prevent
|
|
2701
|
+
* any thrashing.
|
|
2702
|
+
* 2.2. If the fetched snapshot is older than the one for which ack was received, ignore the ack. This can
|
|
2703
|
+
* happen in scenarios where the snapshot for the ack was lost in storage (in scenarios like DB rollback,
|
|
2704
|
+
* etc.) but the summary ack is still there because it's tracked a different service. In such cases,
|
|
2705
|
+
* ignoring the ack is the correct thing to do because the latest snapshot in storage is not the one for
|
|
2706
|
+
* the ack but is still the one tracked by this client. If we were to close the summarizer like in the
|
|
2707
|
+
* previous scenario, it will result in this document stuck in this state in a loop.
|
|
2706
2708
|
*/
|
|
2707
|
-
|
|
2708
|
-
|
|
2709
|
-
|
|
2710
|
-
ackHandle,
|
|
2711
|
-
|
|
2712
|
-
}, readAndParseBlob);
|
|
2709
|
+
/* eslint-enable jsdoc/check-indentation */
|
|
2710
|
+
if (!result.isSummaryTracked) {
|
|
2711
|
+
if (result.isSummaryNewer) {
|
|
2712
|
+
await this.fetchLatestSnapshotAndMaybeClose(summaryRefSeq, ackHandle, summaryLogger);
|
|
2713
|
+
}
|
|
2713
2714
|
return;
|
|
2714
2715
|
}
|
|
2715
2716
|
// Notify the garbage collector so it can update its latest summary state.
|
|
2716
2717
|
await this.garbageCollector.refreshLatestSummary(result);
|
|
2718
|
+
// If we here, the ack was tracked by this client. Update the summary context of the last ack.
|
|
2719
|
+
this.lastAckedSummaryContext = {
|
|
2720
|
+
proposalHandle,
|
|
2721
|
+
ackHandle,
|
|
2722
|
+
referenceSequenceNumber: summaryRefSeq,
|
|
2723
|
+
};
|
|
2717
2724
|
}
|
|
2718
2725
|
/**
|
|
2719
|
-
* Fetches the latest snapshot from storage
|
|
2720
|
-
*
|
|
2721
|
-
*
|
|
2726
|
+
* Fetches the latest snapshot from storage. If the fetched snapshot is same or newer than the one for which ack
|
|
2727
|
+
* was received, close this client. Fetching the snapshot will update the cache for this client so if it's
|
|
2728
|
+
* re-elected as summarizer, this will prevent any thrashing.
|
|
2729
|
+
* If the fetched snapshot is older than the one for which ack was received, ignore the ack and return. This can
|
|
2730
|
+
* happen in scenarios where the snapshot for the ack was lost in storage in scenarios like DB rollback, etc.
|
|
2722
2731
|
*/
|
|
2723
|
-
async
|
|
2724
|
-
await PerformanceEvent.timedExecAsync(logger,
|
|
2725
|
-
const
|
|
2732
|
+
async fetchLatestSnapshotAndMaybeClose(targetRefSeq, targetAckHandle, logger) {
|
|
2733
|
+
const fetchedSnapshotRefSeq = await PerformanceEvent.timedExecAsync(logger, { eventName: "RefreshLatestSummaryAckFetch" }, async (perfEvent) => {
|
|
2734
|
+
const props = { targetRefSeq, targetAckHandle };
|
|
2726
2735
|
const trace = Trace.start();
|
|
2727
|
-
|
|
2728
|
-
|
|
2729
|
-
|
|
2730
|
-
|
|
2731
|
-
|
|
2732
|
-
|
|
2733
|
-
|
|
2734
|
-
|
|
2735
|
-
|
|
2736
|
-
|
|
2736
|
+
let snapshotTree;
|
|
2737
|
+
const scenarioName = "RefreshLatestSummaryAckFetch";
|
|
2738
|
+
// If loader supplied us the ISnapshot when loading, the new getSnapshotApi is supported and feature gate is ON, then use the
|
|
2739
|
+
// new API, otherwise it will reduce the service performance because the service will need to recalculate the full snapshot
|
|
2740
|
+
// in case previously getSnapshotApi was used and now we use the getVersions API.
|
|
2741
|
+
if (this.isSnapshotInstanceOfISnapshot &&
|
|
2742
|
+
this.storage.getSnapshot !== undefined &&
|
|
2743
|
+
this.mc.config.getBoolean("Fluid.Container.UseLoadingGroupIdForSnapshotFetch2") ===
|
|
2744
|
+
true) {
|
|
2745
|
+
const snapshot = await this.storage.getSnapshot({
|
|
2746
|
+
scenarioName,
|
|
2747
|
+
fetchSource: FetchSource.noCache,
|
|
2748
|
+
});
|
|
2749
|
+
const id = snapshot.snapshotTree.id;
|
|
2750
|
+
assert(id !== undefined, "id of the fetched snapshot should be defined");
|
|
2751
|
+
props.snapshotVersion = id;
|
|
2752
|
+
snapshotTree = snapshot.snapshotTree;
|
|
2753
|
+
}
|
|
2754
|
+
else {
|
|
2755
|
+
const versions = await this.storage.getVersions(null, 1, scenarioName, FetchSource.noCache);
|
|
2756
|
+
assert(!!versions && !!versions[0], 0x137 /* "Failed to get version from storage" */);
|
|
2757
|
+
snapshotTree = await this.storage.getSnapshotTree(versions[0]);
|
|
2758
|
+
assert(!!snapshotTree, 0x138 /* "Failed to get snapshot from storage" */);
|
|
2759
|
+
props.snapshotVersion = versions[0].id;
|
|
2760
|
+
}
|
|
2761
|
+
props.getSnapshotDuration = trace.trace().duration;
|
|
2762
|
+
const readAndParseBlob = async (id) => readAndParse(this.storage, id);
|
|
2763
|
+
const snapshotRefSeq = await seqFromTree(snapshotTree, readAndParseBlob);
|
|
2764
|
+
props.snapshotRefSeq = snapshotRefSeq;
|
|
2765
|
+
props.newerSnapshotPresent = snapshotRefSeq >= targetRefSeq;
|
|
2766
|
+
perfEvent.end({ details: props });
|
|
2767
|
+
return snapshotRefSeq;
|
|
2737
2768
|
});
|
|
2769
|
+
// If the snapshot that was fetched is older than the target snapshot, return. The summarizer will not be closed
|
|
2770
|
+
// because the snapshot is likely deleted from storage and it so, closing the summarizer will result in the
|
|
2771
|
+
// document being stuck in this state.
|
|
2772
|
+
if (fetchedSnapshotRefSeq < targetRefSeq) {
|
|
2773
|
+
return;
|
|
2774
|
+
}
|
|
2738
2775
|
await delay(this.closeSummarizerDelayMs);
|
|
2739
2776
|
this._summarizer?.stop("latestSummaryStateStale");
|
|
2740
2777
|
this.disposeFn();
|