@fluidframework/container-runtime 2.90.0 → 2.91.0

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.
@@ -5,5 +5,5 @@
5
5
  * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY
6
6
  */
7
7
  export declare const pkgName = "@fluidframework/container-runtime";
8
- export declare const pkgVersion = "2.90.0";
8
+ export declare const pkgVersion = "2.91.0";
9
9
  //# sourceMappingURL=packageVersion.d.ts.map
@@ -8,5 +8,5 @@
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
9
  exports.pkgVersion = exports.pkgName = void 0;
10
10
  exports.pkgName = "@fluidframework/container-runtime";
11
- exports.pkgVersion = "2.90.0";
11
+ exports.pkgVersion = "2.91.0";
12
12
  //# sourceMappingURL=packageVersion.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,mCAAmC,CAAC;AAC9C,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.90.0\";\n"]}
1
+ {"version":3,"file":"packageVersion.js","sourceRoot":"","sources":["../src/packageVersion.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;AAEU,QAAA,OAAO,GAAG,mCAAmC,CAAC;AAC9C,QAAA,UAAU,GAAG,QAAQ,CAAC","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n *\n * THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY\n */\n\nexport const pkgName = \"@fluidframework/container-runtime\";\nexport const pkgVersion = \"2.91.0\";\n"]}
@@ -17,7 +17,7 @@ export declare const runtimeCoreCompatDetails: {
17
17
  /**
18
18
  * The package version of the Runtime layer.
19
19
  */
20
- readonly pkgVersion: "2.90.0";
20
+ readonly pkgVersion: "2.91.0";
21
21
  /**
22
22
  * The current generation of the Runtime layer.
23
23
  */
@@ -64,6 +64,14 @@ export declare class SummaryManager extends TypedEventEmitter<ISummarizerEvents>
64
64
  private summarizer?;
65
65
  private _disposed;
66
66
  private summarizerStopTimeout?;
67
+ /**
68
+ * Monotonically increasing counter that tracks summarizer lifecycle generations.
69
+ * Incremented each time {@link cleanupAfterSummarizerStop} runs. Used by the
70
+ * promise chain in {@link startSummarization} to detect that cleanup has already
71
+ * been performed by another path (e.g. the stop timeout), so it can skip
72
+ * redundant cleanup that would corrupt the state machine.
73
+ */
74
+ private summarizerGeneration;
67
75
  get disposed(): boolean;
68
76
  get currentState(): SummaryManagerState;
69
77
  constructor(clientElection: ISummarizerClientElection, connectedState: IConnectedState, summaryCollection: Pick<SummaryCollection, "opsSinceLastAck" | "addOpListener" | "removeOpListener">, parentLogger: ITelemetryBaseLogger,
@@ -1 +1 @@
1
- {"version":3,"file":"summaryManager.d.ts","sourceRoot":"","sources":["../../src/summary/summaryManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"summaryManager.d.ts","sourceRoot":"","sources":["../../src/summary/summaryManager.ts"],"names":[],"mappings":"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"}
@@ -45,6 +45,14 @@ class SummaryManager extends client_utils_1.TypedEventEmitter {
45
45
  this.startThrottler = startThrottler;
46
46
  this.state = SummaryManagerState.Off;
47
47
  this._disposed = false;
48
+ /**
49
+ * Monotonically increasing counter that tracks summarizer lifecycle generations.
50
+ * Incremented each time {@link cleanupAfterSummarizerStop} runs. Used by the
51
+ * promise chain in {@link startSummarization} to detect that cleanup has already
52
+ * been performed by another path (e.g. the stop timeout), so it can skip
53
+ * redundant cleanup that would corrupt the state machine.
54
+ */
55
+ this.summarizerGeneration = 0;
48
56
  this.handleConnected = (clientId) => {
49
57
  this.latestClientId = clientId;
50
58
  // If we have a summarizer, it should have been either cancelled on disconnected by now.
@@ -135,6 +143,7 @@ class SummaryManager extends client_utils_1.TypedEventEmitter {
135
143
  (0, internal_1.assert)(this.state === SummaryManagerState.Off, 0x261 /* "Expected: off" */);
136
144
  this.state = SummaryManagerState.Starting;
137
145
  (0, internal_1.assert)(this.summarizer === undefined, 0x262 /* "Old summarizer is still working!" */);
146
+ const generation = this.summarizerGeneration;
138
147
  this.delayBeforeCreatingSummarizer()
139
148
  .then(async (startWithInitialDelay) => {
140
149
  if (this.disposed) {
@@ -216,11 +225,22 @@ class SummaryManager extends client_utils_1.TypedEventEmitter {
216
225
  }
217
226
  })
218
227
  .finally(() => {
228
+ if (generation !== this.summarizerGeneration) {
229
+ // Cleanup was already performed by another path (e.g. the stop timeout),
230
+ // and a new summarizer cycle may have started. Running cleanup again
231
+ // would corrupt the current state machine cycle.
232
+ this.logger.sendTelemetryEvent({
233
+ eventName: "SummarizerCleanupAlreadyDone",
234
+ currentState: this.state,
235
+ });
236
+ return;
237
+ }
219
238
  (0, internal_1.assert)(this.state !== SummaryManagerState.Off, 0x264 /* "Expected: Not Off" */);
220
239
  this.cleanupAfterSummarizerStop();
221
240
  });
222
241
  }
223
242
  cleanupAfterSummarizerStop() {
243
+ this.summarizerGeneration++;
224
244
  this.state = SummaryManagerState.Off;
225
245
  // Clear any pending stop timeout to avoid it firing for a different summarizer
226
246
  if (this.summarizerStopTimeout !== undefined) {
@@ -1 +1 @@
1
- {"version":3,"file":"summaryManager.js","sourceRoot":"","sources":["../../src/summary/summaryManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tISummarizerEvents,\n\tSummarizerStopReason,\n} from \"@fluidframework/container-runtime-definitions/internal\";\nimport type {\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\ttype ITelemetryLoggerExt,\n\tPerformanceEvent,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { IThrottler } from \"../throttler.js\";\n\nimport type { ISummarizerClientElection } from \"./summarizerClientElection.js\";\nimport type {\n\tIEnqueueSummarizeOptions,\n\tIOnDemandSummarizeOptions,\n\tISummarizer,\n} from \"./summarizerTypes.js\";\nimport { stopReasonCanRunLastSummary } from \"./summarizerUtils.js\";\nimport type { SummaryCollection } from \"./summaryCollection.js\";\nimport type {\n\tEnqueueSummarizeResult,\n\tISummarizeResults,\n} from \"./summaryDelayLoadedModule/index.js\";\n\nconst defaultInitialDelayMs = 5000;\nconst defaultOpsToBypassInitialDelay = 4000;\n\nexport enum SummaryManagerState {\n\tOff = 0,\n\tStarting = 1,\n\tRunning = 2,\n\tStopping = 3,\n}\n\n// Please note that all reasons in this list are not errors,\n// and thus they are not raised today to parent container as error.\n// If this needs to be changed in future, we should re-evaluate what and how we raise to summarizer\ntype StopReason = Extract<\n\tSummarizerStopReason,\n\t\"parentNotConnected\" | \"notElectedParent\" | \"notElectedClient\"\n>;\ntype ShouldSummarizeState =\n\t| { shouldSummarize: true }\n\t| { shouldSummarize: false; stopReason: StopReason };\n\nexport interface IConnectedEvents extends IEvent {\n\t(event: \"connected\", listener: (clientId: string) => void);\n\t(event: \"disconnected\", listener: () => void);\n}\n\n/**\n * IConnectedState describes an object that SummaryManager can watch to observe connection/disconnection.\n *\n * Under current implementation, its role will be fulfilled by the ContainerRuntime, but this could be replaced\n * with anything else that fulfills the contract if we want to shift the layer that the SummaryManager lives at.\n */\nexport interface IConnectedState extends IEventProvider<IConnectedEvents> {\n\treadonly connected: boolean;\n\n\t/**\n\t * Under current implementation this is undefined if we've never connected, otherwise it's the clientId from our\n\t * latest connection (even if we've since disconnected!). Although this happens to be the behavior we want in\n\t * SummaryManager, I suspect that globally we may eventually want to modify this behavior (e.g. make clientId\n\t * undefined while disconnected). To protect against this, let's assume this field can't be trusted while\n\t * disconnected and instead separately track \"latest clientId\" in SummaryManager.\n\t */\n\treadonly clientId: string | undefined;\n}\n\nexport interface ISummaryManagerConfig {\n\tinitialDelayMs: number;\n\topsToBypassInitialDelay: number;\n}\n\n/**\n * SummaryManager is created by parent container (i.e. interactive container with clientType !== \"summarizer\") only.\n * It observes changes in calculated summarizer and reacts to changes by either creating summarizer client or\n * stopping existing summarizer client.\n */\nexport class SummaryManager\n\textends TypedEventEmitter<ISummarizerEvents>\n\timplements IDisposable\n{\n\tprivate readonly logger: ITelemetryLoggerExt;\n\tprivate readonly opsToBypassInitialDelay: number;\n\tprivate readonly initialDelayMs: number;\n\tprivate latestClientId: string | undefined;\n\tprivate state = SummaryManagerState.Off;\n\tprivate summarizer?: ISummarizer;\n\tprivate _disposed = false;\n\tprivate summarizerStopTimeout?: ReturnType<typeof setTimeout>;\n\n\tpublic get disposed(): boolean {\n\t\treturn this._disposed;\n\t}\n\n\tpublic get currentState(): SummaryManagerState {\n\t\treturn this.state;\n\t}\n\n\tconstructor(\n\t\tprivate readonly clientElection: ISummarizerClientElection,\n\t\tprivate readonly connectedState: IConnectedState,\n\t\tprivate readonly summaryCollection: Pick<\n\t\t\tSummaryCollection,\n\t\t\t\"opsSinceLastAck\" | \"addOpListener\" | \"removeOpListener\"\n\t\t>,\n\t\tparentLogger: ITelemetryBaseLogger,\n\t\t/**\n\t\t * Creates summarizer by asking interactive container to spawn summarizing container and\n\t\t * get back its Summarizer instance.\n\t\t */\n\t\tprivate readonly createSummarizerFn: () => Promise<ISummarizer>,\n\t\tprivate readonly startThrottler: IThrottler,\n\t\t{\n\t\t\tinitialDelayMs = defaultInitialDelayMs,\n\t\t\topsToBypassInitialDelay = defaultOpsToBypassInitialDelay,\n\t\t}: Readonly<Partial<ISummaryManagerConfig>> = {},\n\t) {\n\t\tsuper();\n\n\t\tthis.logger = createChildLogger({\n\t\t\tlogger: parentLogger,\n\t\t\tnamespace: \"SummaryManager\",\n\t\t\tproperties: {\n\t\t\t\tall: { clientId: () => this.latestClientId },\n\t\t\t},\n\t\t});\n\n\t\tthis.connectedState.on(\"connected\", this.handleConnected);\n\t\tthis.connectedState.on(\"disconnected\", this.handleDisconnected);\n\t\tthis.latestClientId = this.connectedState.clientId;\n\n\t\tthis.opsToBypassInitialDelay = opsToBypassInitialDelay;\n\t\tthis.initialDelayMs = initialDelayMs;\n\t}\n\n\t/**\n\t * Until start is called, the SummaryManager won't begin attempting to start summarization. This ensures there's\n\t * a window between construction and starting where the caller can attach listeners.\n\t */\n\tpublic start(): void {\n\t\tthis.clientElection.on(\"electedSummarizerChanged\", this.refreshSummarizer);\n\t\tthis.refreshSummarizer();\n\t}\n\n\tprivate readonly handleConnected = (clientId: string): void => {\n\t\tthis.latestClientId = clientId;\n\t\t// If we have a summarizer, it should have been either cancelled on disconnected by now.\n\t\t// But because of lastSummary process, it can still hang around, so there is not much we can\n\t\t// check or assert.\n\t\tthis.refreshSummarizer();\n\t};\n\n\tprivate readonly handleDisconnected = (): void => {\n\t\tthis.refreshSummarizer();\n\t};\n\n\tprivate static readonly isStartingOrRunning = (\n\t\tstate: SummaryManagerState,\n\t): state is SummaryManagerState.Starting | SummaryManagerState.Running =>\n\t\tstate === SummaryManagerState.Starting || state === SummaryManagerState.Running;\n\n\tprivate getShouldSummarizeState(): ShouldSummarizeState {\n\t\tif (this.disposed) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n\t\t}\n\n\t\t// Note that if we're in the Running state, the electedClient may be a summarizer client, so we can't\n\t\t// enforce connectedState.clientId === clientElection.electedClientId. But once we're Running, we should\n\t\t// only transition to Stopping when the electedParentId changes. Stopping the summarizer without\n\t\t// changing the electedParent will just cause us to transition to Starting again.\n\n\t\t// New Parent has been elected and it is not the current client, or\n\t\tif (this.connectedState.clientId !== this.clientElection.electedParentId) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"notElectedParent\" };\n\t\t}\n\n\t\t// We are not already running the summarizer and we are not the current elected client id.\n\t\tif (\n\t\t\tthis.state !== SummaryManagerState.Running &&\n\t\t\tthis.connectedState.clientId !== this.clientElection.electedClientId\n\t\t) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"notElectedClient\" };\n\t\t}\n\n\t\tif (!this.connectedState.connected) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n\t\t}\n\n\t\treturn { shouldSummarize: true };\n\t}\n\n\tprivate readonly refreshSummarizer = (): void => {\n\t\t// Transition states depending on shouldSummarize, which is a calculated property\n\t\t// that is only true if this client is connected and is the elected summarizer.\n\t\tconst shouldSummarizeState = this.getShouldSummarizeState();\n\t\tswitch (this.state) {\n\t\t\tcase SummaryManagerState.Off: {\n\t\t\t\tif (shouldSummarizeState.shouldSummarize) {\n\t\t\t\t\tthis.startSummarization();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Starting: {\n\t\t\t\t// Cannot take any action until summarizer is created\n\t\t\t\t// state transition will occur after creation\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Running: {\n\t\t\t\tif (shouldSummarizeState.shouldSummarize === false) {\n\t\t\t\t\tthis.stop(shouldSummarizeState.stopReason);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Stopping: {\n\t\t\t\t// Cannot take any action until running summarizer finishes\n\t\t\t\t// state transition will occur after it stops\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate startSummarization(): void {\n\t\tassert(this.state === SummaryManagerState.Off, 0x261 /* \"Expected: off\" */);\n\t\tthis.state = SummaryManagerState.Starting;\n\n\t\tassert(this.summarizer === undefined, 0x262 /* \"Old summarizer is still working!\" */);\n\n\t\tthis.delayBeforeCreatingSummarizer()\n\t\t\t.then(async (startWithInitialDelay: boolean) => {\n\t\t\t\tif (this.disposed) {\n\t\t\t\t\treturn \"early exit (disposed)\";\n\t\t\t\t}\n\n\t\t\t\t// Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n\t\t\t\t// but only if creation was delayed. If it was not, then we want to ensure we always create\n\t\t\t\t// a summarizer to kick off lastSummary. Without that, we would not be able to summarize and get\n\t\t\t\t// document out of broken state if it has too many ops and ordering service keeps nacking main\n\t\t\t\t// container (and thus it goes into cycle of reconnects)\n\t\t\t\t// If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n\t\t\t\t// the summarizer at all.\n\t\t\t\tconst shouldSummarizeStateEarlyStage = this.getShouldSummarizeState();\n\t\t\t\tif (\n\t\t\t\t\tstartWithInitialDelay &&\n\t\t\t\t\tshouldSummarizeStateEarlyStage.shouldSummarize === false\n\t\t\t\t) {\n\t\t\t\t\treturn `early exit ${shouldSummarizeStateEarlyStage.stopReason}`;\n\t\t\t\t}\n\n\t\t\t\t// We transition to Running before requesting the summarizer, because after requesting we can't predict\n\t\t\t\t// when the electedClient will be replaced with the new summarizer client.\n\t\t\t\t// The alternative would be to let connectedState.clientId !== clientElection.electedClientId when\n\t\t\t\t// state === Starting || state === Running.\n\t\t\t\tassert(this.state === SummaryManagerState.Starting, 0x263 /* \"Expected: starting\" */);\n\t\t\t\tthis.state = SummaryManagerState.Running;\n\n\t\t\t\tconst summarizer = await this.createSummarizerFn();\n\t\t\t\tthis.summarizer = summarizer;\n\t\t\t\tthis.setupForwardedEvents(summarizer);\n\n\t\t\t\t// Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n\t\t\t\t// If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n\t\t\t\t// the summarizer at all.\n\t\t\t\tconst shouldSummarizeState = this.getShouldSummarizeState();\n\t\t\t\tif (shouldSummarizeState.shouldSummarize === false) {\n\t\t\t\t\t// In order to allow the last summary to run, we not only need a stop reason that would\n\t\t\t\t\t// allow it but also, startWithInitialDelay to be false (start the summarization immediately),\n\t\t\t\t\t// which would happen when we have a high enough number of unsummarized ops.\n\t\t\t\t\tif (\n\t\t\t\t\t\tstartWithInitialDelay ||\n\t\t\t\t\t\t!stopReasonCanRunLastSummary(shouldSummarizeState.stopReason)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.state = SummaryManagerState.Starting;\n\t\t\t\t\t\tsummarizer.stop(shouldSummarizeState.stopReason);\n\t\t\t\t\t\treturn `early exit after starting summarizer ${shouldSummarizeState.stopReason}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\t\teventName: \"LastAttemptToSummarize\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst clientId = this.latestClientId!;\n\n\t\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{ eventName: \"RunningSummarizer\", attempt: this.startThrottler.numAttempts },\n\t\t\t\t\tasync () => summarizer.run(clientId),\n\t\t\t\t);\n\t\t\t})\n\t\t\t.then((reason: string) => {\n\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\teventName: \"EndingSummarizer\",\n\t\t\t\t\treason,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendTelemetryEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"EndingSummarizer\",\n\t\t\t\t\t\treason: \"exception\",\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\t// Most of exceptions happen due to container being closed while loading it, due to\n\t\t\t\t// summarizer container loosing connection while load.\n\t\t\t\t// Not worth reporting such errors as errors. That said, we might miss some real errors if\n\t\t\t\t// we ignore blindly, so try to narrow signature we are looking for - skip logging\n\t\t\t\t// error only if this client should no longer be a summarizer (which in practice\n\t\t\t\t// means it also lost connection), and error happened on load (we do not have summarizer).\n\t\t\t\t// We could annotate the error raised in Container.load where the container closed during load with no error\n\t\t\t\t// and check for that case here, but that does not seem to be necessary.\n\t\t\t\tif (this.getShouldSummarizeState().shouldSummarize || this.summarizer !== undefined) {\n\t\t\t\t\t// Report any failure as an error unless it was due to cancellation (like \"disconnected\" error)\n\t\t\t\t\t// If failure happened on container load, we may not yet realized that socket disconnected, so check\n\t\t\t\t\t// offlineError.\n\t\t\t\t\tconst category =\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\terror?.errorType === DriverErrorTypes.offlineError ? \"generic\" : \"error\";\n\t\t\t\t\tthis.logger.sendTelemetryEvent(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teventName: \"SummarizerException\",\n\t\t\t\t\t\t\tcategory,\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tassert(this.state !== SummaryManagerState.Off, 0x264 /* \"Expected: Not Off\" */);\n\t\t\t\tthis.cleanupAfterSummarizerStop();\n\t\t\t});\n\t}\n\n\tprivate cleanupAfterSummarizerStop(): void {\n\t\tthis.state = SummaryManagerState.Off;\n\n\t\t// Clear any pending stop timeout to avoid it firing for a different summarizer\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t\tthis.summarizerStopTimeout = undefined;\n\t\t}\n\n\t\tthis.cleanupForwardedEvents();\n\t\tthis.summarizer?.close();\n\t\tthis.summarizer = undefined;\n\n\t\tif (this.getShouldSummarizeState().shouldSummarize) {\n\t\t\tthis.startSummarization();\n\t\t}\n\t}\n\n\tprivate stop(reason: SummarizerStopReason): void {\n\t\tif (!SummaryManager.isStartingOrRunning(this.state)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.state = SummaryManagerState.Stopping;\n\n\t\t// Stopping the running summarizer client should trigger a change\n\t\t// in states when the running summarizer closes\n\t\tthis.summarizer?.stop(reason);\n\n\t\tconst summarizerCloseTimeoutMs = 2 * 60 * 1000; // 2 minutes\n\t\t// Clear any existing timeout before setting a new one\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t}\n\t\t// Set a timeout to force cleanup if the summarizer doesn't close in time\n\t\tthis.summarizerStopTimeout = setTimeout(() => {\n\t\t\tif (this.state === SummaryManagerState.Stopping && this.summarizer !== undefined) {\n\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\teventName: \"SummarizerStopTimeout\",\n\t\t\t\t\ttimeoutMs: summarizerCloseTimeoutMs,\n\t\t\t\t\tstopReason: reason,\n\t\t\t\t});\n\t\t\t\tthis.cleanupAfterSummarizerStop();\n\t\t\t}\n\t\t}, summarizerCloseTimeoutMs);\n\t}\n\n\t/**\n\t * Implements initial delay before creating summarizer\n\t * @returns `true`, if creation is delayed due to heuristics (not many ops to summarize).\n\t * `false` if summarizer should start immediately due to too many unsummarized ops.\n\t */\n\tprivate async delayBeforeCreatingSummarizer(): Promise<boolean> {\n\t\t// throttle creation of new summarizer containers to prevent spamming the server with websocket connections\n\t\tlet delayMs = this.startThrottler.getDelay();\n\n\t\t// We have been elected the summarizer. Some day we may be able to summarize with a live document but for\n\t\t// now we play it safe and launch a second copy.\n\t\tthis.logger.sendTelemetryEvent({\n\t\t\teventName: \"CreatingSummarizer\",\n\t\t\tthrottlerDelay: delayMs,\n\t\t\tinitialDelay: this.initialDelayMs,\n\t\t\tstartThrottlerMaxDelayMs: this.startThrottler.maxDelayMs,\n\t\t\topsSinceLastAck: this.summaryCollection.opsSinceLastAck,\n\t\t\topsToBypassInitialDelay: this.opsToBypassInitialDelay,\n\t\t\telectedParentId: this.clientElection.electedParentId,\n\t\t\telectedClientId: this.clientElection.electedClientId,\n\t\t});\n\n\t\t// This delay helps ensure that last summarizer that might be left from previous client\n\t\t// has enough time to complete its last summary and thus new summarizer not conflict with previous one.\n\t\t// If, however, there are too many unsummarized ops, try to resolve it as quickly as possible, with\n\t\t// understanding that we may see nacks because of such quick action.\n\t\t// A better design would be for summarizer election logic to always select current summarizer as\n\t\t// summarizing client (i.e. clientType === \"summarizer\" can be elected) to ensure that nobody else can\n\t\t// summarizer while it finishes its work and moves to exit.\n\t\t// It also helps with pure boot scenario (single client) to offset expensive work a bit out from\n\t\t// critical boot sequence.\n\t\tlet startWithInitialDelay = false;\n\t\tif (this.summaryCollection.opsSinceLastAck < this.opsToBypassInitialDelay) {\n\t\t\tstartWithInitialDelay = true;\n\t\t\tdelayMs = Math.max(delayMs, this.initialDelayMs);\n\t\t}\n\n\t\tif (delayMs > 0) {\n\t\t\tlet timer: number | undefined;\n\t\t\tlet resolveOpPromiseFn: (value: void | PromiseLike<void>) => void;\n\t\t\t// Create a listener that will break the delay if we've exceeded the initial delay ops count.\n\t\t\tconst opsListenerFn = (): void => {\n\t\t\t\tif (this.summaryCollection.opsSinceLastAck >= this.opsToBypassInitialDelay) {\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tresolveOpPromiseFn();\n\t\t\t\t}\n\t\t\t};\n\t\t\t// Create a Promise that will resolve when the delay expires.\n\t\t\tconst delayPromise = new Promise<void>((resolve) => {\n\t\t\t\ttimer = setTimeout(() => resolve(), delayMs);\n\t\t\t});\n\t\t\t// Create a Promise that will resolve if the ops count passes the threshold.\n\t\t\tconst opPromise = new Promise<void>((resolve) => {\n\t\t\t\tresolveOpPromiseFn = resolve;\n\t\t\t});\n\t\t\tthis.summaryCollection.addOpListener(opsListenerFn);\n\t\t\tawait Promise.race([delayPromise, opPromise]);\n\t\t\tthis.summaryCollection.removeOpListener(opsListenerFn);\n\t\t}\n\t\treturn startWithInitialDelay;\n\t}\n\n\tpublic summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults {\n\t\tif (this.summarizer === undefined) {\n\t\t\tthrow new Error(\"No running summarizer client\");\n\t\t\t// TODO: could spawn a summarizer client temporarily.\n\t\t}\n\t\treturn this.summarizer.summarizeOnDemand(options);\n\t}\n\n\tpublic enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {\n\t\tif (this.summarizer === undefined) {\n\t\t\tthrow new Error(\"No running summarizer client\");\n\t\t\t// TODO: could spawn a summarizer client temporarily.\n\t\t}\n\t\treturn this.summarizer.enqueueSummarize(options);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.clientElection.off(\"electedSummarizerChanged\", this.refreshSummarizer);\n\t\tthis.connectedState.off(\"connected\", this.handleConnected);\n\t\tthis.connectedState.off(\"disconnected\", this.handleDisconnected);\n\t\tthis.cleanupForwardedEvents();\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t}\n\t\tthis._disposed = true;\n\t}\n\n\tprivate readonly forwardedEventsCleanup: (() => void)[] = [];\n\n\tprivate setupForwardedEvents(summarizer: ISummarizer): void {\n\t\tfor (const event of [\n\t\t\t\"summarize\",\n\t\t\t\"summarizeAllAttemptsFailed\",\n\t\t\t\"summarizerStop\",\n\t\t\t\"summarizerStart\",\n\t\t\t\"summarizerStartupFailed\",\n\t\t\t\"summarizeTimeout\",\n\t\t] as const) {\n\t\t\tconst listener = (...args: unknown[]): void => {\n\t\t\t\tthis.emit(event, ...args);\n\t\t\t};\n\t\t\t// TODO: better typing here\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n\t\t\tsummarizer.on(event as any, listener);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n\t\t\tthis.forwardedEventsCleanup.push(() => summarizer.off(event as any, listener));\n\t\t}\n\t}\n\n\tprivate cleanupForwardedEvents(): void {\n\t\tfor (const cleanup of this.forwardedEventsCleanup) {\n\t\t\tcleanup();\n\t\t}\n\t\tthis.forwardedEventsCleanup.length = 0;\n\t}\n}\n"]}
1
+ {"version":3,"file":"summaryManager.js","sourceRoot":"","sources":["../../src/summary/summaryManager.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { TypedEventEmitter } from \"@fluid-internal/client-utils\";\nimport type {\n\tISummarizerEvents,\n\tSummarizerStopReason,\n} from \"@fluidframework/container-runtime-definitions/internal\";\nimport type {\n\tIDisposable,\n\tIEvent,\n\tIEventProvider,\n\tITelemetryBaseLogger,\n} from \"@fluidframework/core-interfaces\";\nimport { assert } from \"@fluidframework/core-utils/internal\";\nimport { DriverErrorTypes } from \"@fluidframework/driver-definitions/internal\";\nimport {\n\ttype ITelemetryLoggerExt,\n\tPerformanceEvent,\n\tcreateChildLogger,\n} from \"@fluidframework/telemetry-utils/internal\";\n\nimport type { IThrottler } from \"../throttler.js\";\n\nimport type { ISummarizerClientElection } from \"./summarizerClientElection.js\";\nimport type {\n\tIEnqueueSummarizeOptions,\n\tIOnDemandSummarizeOptions,\n\tISummarizer,\n} from \"./summarizerTypes.js\";\nimport { stopReasonCanRunLastSummary } from \"./summarizerUtils.js\";\nimport type { SummaryCollection } from \"./summaryCollection.js\";\nimport type {\n\tEnqueueSummarizeResult,\n\tISummarizeResults,\n} from \"./summaryDelayLoadedModule/index.js\";\n\nconst defaultInitialDelayMs = 5000;\nconst defaultOpsToBypassInitialDelay = 4000;\n\nexport enum SummaryManagerState {\n\tOff = 0,\n\tStarting = 1,\n\tRunning = 2,\n\tStopping = 3,\n}\n\n// Please note that all reasons in this list are not errors,\n// and thus they are not raised today to parent container as error.\n// If this needs to be changed in future, we should re-evaluate what and how we raise to summarizer\ntype StopReason = Extract<\n\tSummarizerStopReason,\n\t\"parentNotConnected\" | \"notElectedParent\" | \"notElectedClient\"\n>;\ntype ShouldSummarizeState =\n\t| { shouldSummarize: true }\n\t| { shouldSummarize: false; stopReason: StopReason };\n\nexport interface IConnectedEvents extends IEvent {\n\t(event: \"connected\", listener: (clientId: string) => void);\n\t(event: \"disconnected\", listener: () => void);\n}\n\n/**\n * IConnectedState describes an object that SummaryManager can watch to observe connection/disconnection.\n *\n * Under current implementation, its role will be fulfilled by the ContainerRuntime, but this could be replaced\n * with anything else that fulfills the contract if we want to shift the layer that the SummaryManager lives at.\n */\nexport interface IConnectedState extends IEventProvider<IConnectedEvents> {\n\treadonly connected: boolean;\n\n\t/**\n\t * Under current implementation this is undefined if we've never connected, otherwise it's the clientId from our\n\t * latest connection (even if we've since disconnected!). Although this happens to be the behavior we want in\n\t * SummaryManager, I suspect that globally we may eventually want to modify this behavior (e.g. make clientId\n\t * undefined while disconnected). To protect against this, let's assume this field can't be trusted while\n\t * disconnected and instead separately track \"latest clientId\" in SummaryManager.\n\t */\n\treadonly clientId: string | undefined;\n}\n\nexport interface ISummaryManagerConfig {\n\tinitialDelayMs: number;\n\topsToBypassInitialDelay: number;\n}\n\n/**\n * SummaryManager is created by parent container (i.e. interactive container with clientType !== \"summarizer\") only.\n * It observes changes in calculated summarizer and reacts to changes by either creating summarizer client or\n * stopping existing summarizer client.\n */\nexport class SummaryManager\n\textends TypedEventEmitter<ISummarizerEvents>\n\timplements IDisposable\n{\n\tprivate readonly logger: ITelemetryLoggerExt;\n\tprivate readonly opsToBypassInitialDelay: number;\n\tprivate readonly initialDelayMs: number;\n\tprivate latestClientId: string | undefined;\n\tprivate state = SummaryManagerState.Off;\n\tprivate summarizer?: ISummarizer;\n\tprivate _disposed = false;\n\tprivate summarizerStopTimeout?: ReturnType<typeof setTimeout>;\n\t/**\n\t * Monotonically increasing counter that tracks summarizer lifecycle generations.\n\t * Incremented each time {@link cleanupAfterSummarizerStop} runs. Used by the\n\t * promise chain in {@link startSummarization} to detect that cleanup has already\n\t * been performed by another path (e.g. the stop timeout), so it can skip\n\t * redundant cleanup that would corrupt the state machine.\n\t */\n\tprivate summarizerGeneration = 0;\n\n\tpublic get disposed(): boolean {\n\t\treturn this._disposed;\n\t}\n\n\tpublic get currentState(): SummaryManagerState {\n\t\treturn this.state;\n\t}\n\n\tconstructor(\n\t\tprivate readonly clientElection: ISummarizerClientElection,\n\t\tprivate readonly connectedState: IConnectedState,\n\t\tprivate readonly summaryCollection: Pick<\n\t\t\tSummaryCollection,\n\t\t\t\"opsSinceLastAck\" | \"addOpListener\" | \"removeOpListener\"\n\t\t>,\n\t\tparentLogger: ITelemetryBaseLogger,\n\t\t/**\n\t\t * Creates summarizer by asking interactive container to spawn summarizing container and\n\t\t * get back its Summarizer instance.\n\t\t */\n\t\tprivate readonly createSummarizerFn: () => Promise<ISummarizer>,\n\t\tprivate readonly startThrottler: IThrottler,\n\t\t{\n\t\t\tinitialDelayMs = defaultInitialDelayMs,\n\t\t\topsToBypassInitialDelay = defaultOpsToBypassInitialDelay,\n\t\t}: Readonly<Partial<ISummaryManagerConfig>> = {},\n\t) {\n\t\tsuper();\n\n\t\tthis.logger = createChildLogger({\n\t\t\tlogger: parentLogger,\n\t\t\tnamespace: \"SummaryManager\",\n\t\t\tproperties: {\n\t\t\t\tall: { clientId: () => this.latestClientId },\n\t\t\t},\n\t\t});\n\n\t\tthis.connectedState.on(\"connected\", this.handleConnected);\n\t\tthis.connectedState.on(\"disconnected\", this.handleDisconnected);\n\t\tthis.latestClientId = this.connectedState.clientId;\n\n\t\tthis.opsToBypassInitialDelay = opsToBypassInitialDelay;\n\t\tthis.initialDelayMs = initialDelayMs;\n\t}\n\n\t/**\n\t * Until start is called, the SummaryManager won't begin attempting to start summarization. This ensures there's\n\t * a window between construction and starting where the caller can attach listeners.\n\t */\n\tpublic start(): void {\n\t\tthis.clientElection.on(\"electedSummarizerChanged\", this.refreshSummarizer);\n\t\tthis.refreshSummarizer();\n\t}\n\n\tprivate readonly handleConnected = (clientId: string): void => {\n\t\tthis.latestClientId = clientId;\n\t\t// If we have a summarizer, it should have been either cancelled on disconnected by now.\n\t\t// But because of lastSummary process, it can still hang around, so there is not much we can\n\t\t// check or assert.\n\t\tthis.refreshSummarizer();\n\t};\n\n\tprivate readonly handleDisconnected = (): void => {\n\t\tthis.refreshSummarizer();\n\t};\n\n\tprivate static readonly isStartingOrRunning = (\n\t\tstate: SummaryManagerState,\n\t): state is SummaryManagerState.Starting | SummaryManagerState.Running =>\n\t\tstate === SummaryManagerState.Starting || state === SummaryManagerState.Running;\n\n\tprivate getShouldSummarizeState(): ShouldSummarizeState {\n\t\tif (this.disposed) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n\t\t}\n\n\t\t// Note that if we're in the Running state, the electedClient may be a summarizer client, so we can't\n\t\t// enforce connectedState.clientId === clientElection.electedClientId. But once we're Running, we should\n\t\t// only transition to Stopping when the electedParentId changes. Stopping the summarizer without\n\t\t// changing the electedParent will just cause us to transition to Starting again.\n\n\t\t// New Parent has been elected and it is not the current client, or\n\t\tif (this.connectedState.clientId !== this.clientElection.electedParentId) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"notElectedParent\" };\n\t\t}\n\n\t\t// We are not already running the summarizer and we are not the current elected client id.\n\t\tif (\n\t\t\tthis.state !== SummaryManagerState.Running &&\n\t\t\tthis.connectedState.clientId !== this.clientElection.electedClientId\n\t\t) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"notElectedClient\" };\n\t\t}\n\n\t\tif (!this.connectedState.connected) {\n\t\t\treturn { shouldSummarize: false, stopReason: \"parentNotConnected\" };\n\t\t}\n\n\t\treturn { shouldSummarize: true };\n\t}\n\n\tprivate readonly refreshSummarizer = (): void => {\n\t\t// Transition states depending on shouldSummarize, which is a calculated property\n\t\t// that is only true if this client is connected and is the elected summarizer.\n\t\tconst shouldSummarizeState = this.getShouldSummarizeState();\n\t\tswitch (this.state) {\n\t\t\tcase SummaryManagerState.Off: {\n\t\t\t\tif (shouldSummarizeState.shouldSummarize) {\n\t\t\t\t\tthis.startSummarization();\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Starting: {\n\t\t\t\t// Cannot take any action until summarizer is created\n\t\t\t\t// state transition will occur after creation\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Running: {\n\t\t\t\tif (shouldSummarizeState.shouldSummarize === false) {\n\t\t\t\t\tthis.stop(shouldSummarizeState.stopReason);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tcase SummaryManagerState.Stopping: {\n\t\t\t\t// Cannot take any action until running summarizer finishes\n\t\t\t\t// state transition will occur after it stops\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tdefault: {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t};\n\n\tprivate startSummarization(): void {\n\t\tassert(this.state === SummaryManagerState.Off, 0x261 /* \"Expected: off\" */);\n\t\tthis.state = SummaryManagerState.Starting;\n\n\t\tassert(this.summarizer === undefined, 0x262 /* \"Old summarizer is still working!\" */);\n\n\t\tconst generation = this.summarizerGeneration;\n\n\t\tthis.delayBeforeCreatingSummarizer()\n\t\t\t.then(async (startWithInitialDelay: boolean) => {\n\t\t\t\tif (this.disposed) {\n\t\t\t\t\treturn \"early exit (disposed)\";\n\t\t\t\t}\n\n\t\t\t\t// Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n\t\t\t\t// but only if creation was delayed. If it was not, then we want to ensure we always create\n\t\t\t\t// a summarizer to kick off lastSummary. Without that, we would not be able to summarize and get\n\t\t\t\t// document out of broken state if it has too many ops and ordering service keeps nacking main\n\t\t\t\t// container (and thus it goes into cycle of reconnects)\n\t\t\t\t// If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n\t\t\t\t// the summarizer at all.\n\t\t\t\tconst shouldSummarizeStateEarlyStage = this.getShouldSummarizeState();\n\t\t\t\tif (\n\t\t\t\t\tstartWithInitialDelay &&\n\t\t\t\t\tshouldSummarizeStateEarlyStage.shouldSummarize === false\n\t\t\t\t) {\n\t\t\t\t\treturn `early exit ${shouldSummarizeStateEarlyStage.stopReason}`;\n\t\t\t\t}\n\n\t\t\t\t// We transition to Running before requesting the summarizer, because after requesting we can't predict\n\t\t\t\t// when the electedClient will be replaced with the new summarizer client.\n\t\t\t\t// The alternative would be to let connectedState.clientId !== clientElection.electedClientId when\n\t\t\t\t// state === Starting || state === Running.\n\t\t\t\tassert(this.state === SummaryManagerState.Starting, 0x263 /* \"Expected: starting\" */);\n\t\t\t\tthis.state = SummaryManagerState.Running;\n\n\t\t\t\tconst summarizer = await this.createSummarizerFn();\n\t\t\t\tthis.summarizer = summarizer;\n\t\t\t\tthis.setupForwardedEvents(summarizer);\n\n\t\t\t\t// Re-validate that it need to be running. Due to asynchrony, it may be not the case anymore\n\t\t\t\t// If we can't run the LastSummary, simply return as to avoid paying the cost of launching\n\t\t\t\t// the summarizer at all.\n\t\t\t\tconst shouldSummarizeState = this.getShouldSummarizeState();\n\t\t\t\tif (shouldSummarizeState.shouldSummarize === false) {\n\t\t\t\t\t// In order to allow the last summary to run, we not only need a stop reason that would\n\t\t\t\t\t// allow it but also, startWithInitialDelay to be false (start the summarization immediately),\n\t\t\t\t\t// which would happen when we have a high enough number of unsummarized ops.\n\t\t\t\t\tif (\n\t\t\t\t\t\tstartWithInitialDelay ||\n\t\t\t\t\t\t!stopReasonCanRunLastSummary(shouldSummarizeState.stopReason)\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.state = SummaryManagerState.Starting;\n\t\t\t\t\t\tsummarizer.stop(shouldSummarizeState.stopReason);\n\t\t\t\t\t\treturn `early exit after starting summarizer ${shouldSummarizeState.stopReason}`;\n\t\t\t\t\t}\n\t\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\t\teventName: \"LastAttemptToSummarize\",\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n\t\t\t\tconst clientId = this.latestClientId!;\n\n\t\t\t\treturn PerformanceEvent.timedExecAsync(\n\t\t\t\t\tthis.logger,\n\t\t\t\t\t{ eventName: \"RunningSummarizer\", attempt: this.startThrottler.numAttempts },\n\t\t\t\t\tasync () => summarizer.run(clientId),\n\t\t\t\t);\n\t\t\t})\n\t\t\t.then((reason: string) => {\n\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\teventName: \"EndingSummarizer\",\n\t\t\t\t\treason,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.catch((error) => {\n\t\t\t\tthis.logger.sendTelemetryEvent(\n\t\t\t\t\t{\n\t\t\t\t\t\teventName: \"EndingSummarizer\",\n\t\t\t\t\t\treason: \"exception\",\n\t\t\t\t\t},\n\t\t\t\t\terror,\n\t\t\t\t);\n\n\t\t\t\t// Most of exceptions happen due to container being closed while loading it, due to\n\t\t\t\t// summarizer container loosing connection while load.\n\t\t\t\t// Not worth reporting such errors as errors. That said, we might miss some real errors if\n\t\t\t\t// we ignore blindly, so try to narrow signature we are looking for - skip logging\n\t\t\t\t// error only if this client should no longer be a summarizer (which in practice\n\t\t\t\t// means it also lost connection), and error happened on load (we do not have summarizer).\n\t\t\t\t// We could annotate the error raised in Container.load where the container closed during load with no error\n\t\t\t\t// and check for that case here, but that does not seem to be necessary.\n\t\t\t\tif (this.getShouldSummarizeState().shouldSummarize || this.summarizer !== undefined) {\n\t\t\t\t\t// Report any failure as an error unless it was due to cancellation (like \"disconnected\" error)\n\t\t\t\t\t// If failure happened on container load, we may not yet realized that socket disconnected, so check\n\t\t\t\t\t// offlineError.\n\t\t\t\t\tconst category =\n\t\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\t\terror?.errorType === DriverErrorTypes.offlineError ? \"generic\" : \"error\";\n\t\t\t\t\tthis.logger.sendTelemetryEvent(\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\teventName: \"SummarizerException\",\n\t\t\t\t\t\t\tcategory,\n\t\t\t\t\t\t},\n\t\t\t\t\t\terror,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.finally(() => {\n\t\t\t\tif (generation !== this.summarizerGeneration) {\n\t\t\t\t\t// Cleanup was already performed by another path (e.g. the stop timeout),\n\t\t\t\t\t// and a new summarizer cycle may have started. Running cleanup again\n\t\t\t\t\t// would corrupt the current state machine cycle.\n\t\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\t\teventName: \"SummarizerCleanupAlreadyDone\",\n\t\t\t\t\t\tcurrentState: this.state,\n\t\t\t\t\t});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tassert(this.state !== SummaryManagerState.Off, 0x264 /* \"Expected: Not Off\" */);\n\t\t\t\tthis.cleanupAfterSummarizerStop();\n\t\t\t});\n\t}\n\n\tprivate cleanupAfterSummarizerStop(): void {\n\t\tthis.summarizerGeneration++;\n\t\tthis.state = SummaryManagerState.Off;\n\n\t\t// Clear any pending stop timeout to avoid it firing for a different summarizer\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t\tthis.summarizerStopTimeout = undefined;\n\t\t}\n\n\t\tthis.cleanupForwardedEvents();\n\t\tthis.summarizer?.close();\n\t\tthis.summarizer = undefined;\n\n\t\tif (this.getShouldSummarizeState().shouldSummarize) {\n\t\t\tthis.startSummarization();\n\t\t}\n\t}\n\n\tprivate stop(reason: SummarizerStopReason): void {\n\t\tif (!SummaryManager.isStartingOrRunning(this.state)) {\n\t\t\treturn;\n\t\t}\n\t\tthis.state = SummaryManagerState.Stopping;\n\n\t\t// Stopping the running summarizer client should trigger a change\n\t\t// in states when the running summarizer closes\n\t\tthis.summarizer?.stop(reason);\n\n\t\tconst summarizerCloseTimeoutMs = 2 * 60 * 1000; // 2 minutes\n\t\t// Clear any existing timeout before setting a new one\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t}\n\t\t// Set a timeout to force cleanup if the summarizer doesn't close in time\n\t\tthis.summarizerStopTimeout = setTimeout(() => {\n\t\t\tif (this.state === SummaryManagerState.Stopping && this.summarizer !== undefined) {\n\t\t\t\tthis.logger.sendTelemetryEvent({\n\t\t\t\t\teventName: \"SummarizerStopTimeout\",\n\t\t\t\t\ttimeoutMs: summarizerCloseTimeoutMs,\n\t\t\t\t\tstopReason: reason,\n\t\t\t\t});\n\t\t\t\tthis.cleanupAfterSummarizerStop();\n\t\t\t}\n\t\t}, summarizerCloseTimeoutMs);\n\t}\n\n\t/**\n\t * Implements initial delay before creating summarizer\n\t * @returns `true`, if creation is delayed due to heuristics (not many ops to summarize).\n\t * `false` if summarizer should start immediately due to too many unsummarized ops.\n\t */\n\tprivate async delayBeforeCreatingSummarizer(): Promise<boolean> {\n\t\t// throttle creation of new summarizer containers to prevent spamming the server with websocket connections\n\t\tlet delayMs = this.startThrottler.getDelay();\n\n\t\t// We have been elected the summarizer. Some day we may be able to summarize with a live document but for\n\t\t// now we play it safe and launch a second copy.\n\t\tthis.logger.sendTelemetryEvent({\n\t\t\teventName: \"CreatingSummarizer\",\n\t\t\tthrottlerDelay: delayMs,\n\t\t\tinitialDelay: this.initialDelayMs,\n\t\t\tstartThrottlerMaxDelayMs: this.startThrottler.maxDelayMs,\n\t\t\topsSinceLastAck: this.summaryCollection.opsSinceLastAck,\n\t\t\topsToBypassInitialDelay: this.opsToBypassInitialDelay,\n\t\t\telectedParentId: this.clientElection.electedParentId,\n\t\t\telectedClientId: this.clientElection.electedClientId,\n\t\t});\n\n\t\t// This delay helps ensure that last summarizer that might be left from previous client\n\t\t// has enough time to complete its last summary and thus new summarizer not conflict with previous one.\n\t\t// If, however, there are too many unsummarized ops, try to resolve it as quickly as possible, with\n\t\t// understanding that we may see nacks because of such quick action.\n\t\t// A better design would be for summarizer election logic to always select current summarizer as\n\t\t// summarizing client (i.e. clientType === \"summarizer\" can be elected) to ensure that nobody else can\n\t\t// summarizer while it finishes its work and moves to exit.\n\t\t// It also helps with pure boot scenario (single client) to offset expensive work a bit out from\n\t\t// critical boot sequence.\n\t\tlet startWithInitialDelay = false;\n\t\tif (this.summaryCollection.opsSinceLastAck < this.opsToBypassInitialDelay) {\n\t\t\tstartWithInitialDelay = true;\n\t\t\tdelayMs = Math.max(delayMs, this.initialDelayMs);\n\t\t}\n\n\t\tif (delayMs > 0) {\n\t\t\tlet timer: number | undefined;\n\t\t\tlet resolveOpPromiseFn: (value: void | PromiseLike<void>) => void;\n\t\t\t// Create a listener that will break the delay if we've exceeded the initial delay ops count.\n\t\t\tconst opsListenerFn = (): void => {\n\t\t\t\tif (this.summaryCollection.opsSinceLastAck >= this.opsToBypassInitialDelay) {\n\t\t\t\t\tclearTimeout(timer);\n\t\t\t\t\tresolveOpPromiseFn();\n\t\t\t\t}\n\t\t\t};\n\t\t\t// Create a Promise that will resolve when the delay expires.\n\t\t\tconst delayPromise = new Promise<void>((resolve) => {\n\t\t\t\ttimer = setTimeout(() => resolve(), delayMs);\n\t\t\t});\n\t\t\t// Create a Promise that will resolve if the ops count passes the threshold.\n\t\t\tconst opPromise = new Promise<void>((resolve) => {\n\t\t\t\tresolveOpPromiseFn = resolve;\n\t\t\t});\n\t\t\tthis.summaryCollection.addOpListener(opsListenerFn);\n\t\t\tawait Promise.race([delayPromise, opPromise]);\n\t\t\tthis.summaryCollection.removeOpListener(opsListenerFn);\n\t\t}\n\t\treturn startWithInitialDelay;\n\t}\n\n\tpublic summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults {\n\t\tif (this.summarizer === undefined) {\n\t\t\tthrow new Error(\"No running summarizer client\");\n\t\t\t// TODO: could spawn a summarizer client temporarily.\n\t\t}\n\t\treturn this.summarizer.summarizeOnDemand(options);\n\t}\n\n\tpublic enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {\n\t\tif (this.summarizer === undefined) {\n\t\t\tthrow new Error(\"No running summarizer client\");\n\t\t\t// TODO: could spawn a summarizer client temporarily.\n\t\t}\n\t\treturn this.summarizer.enqueueSummarize(options);\n\t}\n\n\tpublic dispose(): void {\n\t\tthis.clientElection.off(\"electedSummarizerChanged\", this.refreshSummarizer);\n\t\tthis.connectedState.off(\"connected\", this.handleConnected);\n\t\tthis.connectedState.off(\"disconnected\", this.handleDisconnected);\n\t\tthis.cleanupForwardedEvents();\n\t\tif (this.summarizerStopTimeout !== undefined) {\n\t\t\tclearTimeout(this.summarizerStopTimeout);\n\t\t}\n\t\tthis._disposed = true;\n\t}\n\n\tprivate readonly forwardedEventsCleanup: (() => void)[] = [];\n\n\tprivate setupForwardedEvents(summarizer: ISummarizer): void {\n\t\tfor (const event of [\n\t\t\t\"summarize\",\n\t\t\t\"summarizeAllAttemptsFailed\",\n\t\t\t\"summarizerStop\",\n\t\t\t\"summarizerStart\",\n\t\t\t\"summarizerStartupFailed\",\n\t\t\t\"summarizeTimeout\",\n\t\t] as const) {\n\t\t\tconst listener = (...args: unknown[]): void => {\n\t\t\t\tthis.emit(event, ...args);\n\t\t\t};\n\t\t\t// TODO: better typing here\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n\t\t\tsummarizer.on(event as any, listener);\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument\n\t\t\tthis.forwardedEventsCleanup.push(() => summarizer.off(event as any, listener));\n\t\t}\n\t}\n\n\tprivate cleanupForwardedEvents(): void {\n\t\tfor (const cleanup of this.forwardedEventsCleanup) {\n\t\t\tcleanup();\n\t\t}\n\t\tthis.forwardedEventsCleanup.length = 0;\n\t}\n}\n"]}
@@ -750,7 +750,7 @@ export declare class ContainerRuntime extends TypedEventEmitter<IContainerRuntim
750
750
  */
751
751
  get isDirty(): boolean;
752
752
  /**
753
- * Returns true if the container is dirty: not attached, or no pending user messages (could be some "non-dirtyable" ones though)
753
+ * Returns true if the container is dirty: not attached, or has pending user messages (ignores "non-dirtyable" ones though)
754
754
  */
755
755
  private computeCurrentDirtyState;
756
756
  /**
@@ -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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"}
@@ -10,7 +10,7 @@ import { SummaryType } from "@fluidframework/driver-definitions";
10
10
  import { FetchSource, MessageType } from "@fluidframework/driver-definitions/internal";
11
11
  import { readAndParse } from "@fluidframework/driver-utils/internal";
12
12
  import { createIdCompressor, createSessionId, deserializeIdCompressor, } from "@fluidframework/id-compressor/internal";
13
- import { FlushMode, FlushModeExperimental, channelsTreeName, gcTreeKey, } from "@fluidframework/runtime-definitions/internal";
13
+ import { FlushMode, channelsTreeName, gcTreeKey, } from "@fluidframework/runtime-definitions/internal";
14
14
  import { addBlobToSummary, addSummarizeResultToSummary, calculateStats, create404Response, defaultMinVersionForCollab, exceptionToResponse, GCDataBuilder, isValidMinVersionForCollab, RequestParser, RuntimeHeaders, validateMinimumVersionForCollab, seqFromTree, TelemetryContext, } from "@fluidframework/runtime-utils/internal";
15
15
  import { DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, GenericError, LoggingError, PerformanceEvent,
16
16
  // eslint-disable-next-line import-x/no-deprecated
@@ -742,7 +742,7 @@ export class ContainerRuntime extends TypedEventEmitter {
742
742
  }
743
743
  return eventEmitter;
744
744
  });
745
- const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, signalAudience, pendingLocalState, supportedFeatures, snapshotWithContents, getConnectionState, } = context;
745
+ const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, signalAudience, pendingLocalState, snapshotWithContents, getConnectionState, } = context;
746
746
  this.getConnectionState = getConnectionState;
747
747
  // In old loaders without dispose functionality, closeFn is equivalent but will also switch container to readonly mode
748
748
  this.disposeFn = disposeFn ?? closeFn;
@@ -912,19 +912,12 @@ export class ContainerRuntime extends TypedEventEmitter {
912
912
  this.mc.config.getBoolean("Fluid.ContainerRuntime.Test.DisableSummaries") === true;
913
913
  this.maxConsecutiveReconnects =
914
914
  this.mc.config.getNumber(maxConsecutiveReconnectsKey) ?? defaultMaxConsecutiveReconnects;
915
- // If the context has ILayerCompatDetails, it supports referenceSequenceNumbers since that features
916
- // predates ILayerCompatDetails.
917
- const referenceSequenceNumbersSupported = maybeLoaderCompatDetailsForRuntime.ILayerCompatDetails === undefined
918
- ? supportedFeatures?.get("referenceSequenceNumbers") === true
919
- : true;
920
- if (runtimeOptions.flushMode === FlushModeExperimental.Async &&
921
- !referenceSequenceNumbersSupported) {
922
- // The loader does not support reference sequence numbers, falling back on FlushMode.TurnBased
923
- this.mc.logger.sendErrorEvent({ eventName: "FlushModeFallback" });
924
- this._flushMode = FlushMode.TurnBased;
925
- }
926
- else {
927
- this._flushMode = runtimeOptions.flushMode;
915
+ this._flushMode = runtimeOptions.flushMode;
916
+ // TODO: Added in 2.90.0 - Remove this validation once we've released and confirmed no consumer passes an invalid flushMode value.
917
+ if (this._flushMode !== FlushMode.Immediate && this._flushMode !== FlushMode.TurnBased) {
918
+ const error = new UsageError("Invalid flushMode runtime option. Expected FlushMode.Immediate or FlushMode.TurnBased.");
919
+ this.closeFn(error);
920
+ throw error;
928
921
  }
929
922
  this.batchIdTrackingEnabled =
930
923
  this.mc.config.getBoolean("Fluid.Container.enableOfflineFull") ??
@@ -2299,7 +2292,7 @@ export class ContainerRuntime extends TypedEventEmitter {
2299
2292
  return this.lastEmittedDirty;
2300
2293
  }
2301
2294
  /**
2302
- * Returns true if the container is dirty: not attached, or no pending user messages (could be some "non-dirtyable" ones though)
2295
+ * Returns true if the container is dirty: not attached, or has pending user messages (ignores "non-dirtyable" ones though)
2303
2296
  */
2304
2297
  computeCurrentDirtyState() {
2305
2298
  return (this.attachState !== AttachState.Attached ||
@@ -3058,14 +3051,6 @@ export class ContainerRuntime extends TypedEventEmitter {
3058
3051
  Promise.resolve().then(() => this.flush());
3059
3052
  break;
3060
3053
  }
3061
- // FlushModeExperimental is experimental and not exposed directly in the runtime APIs
3062
- case FlushModeExperimental.Async: {
3063
- // When in Async flush mode, the runtime will accumulate all operations across JS turns and send them as a single
3064
- // batch when all micro-tasks are complete.
3065
- // Compared to TurnBased, this flush mode will capture more ops into the same batch.
3066
- setTimeout(() => this.flush(), 0);
3067
- break;
3068
- }
3069
3054
  default: {
3070
3055
  fail(0x587 /* Unreachable unless manually accumulating a batch */);
3071
3056
  }