@fluidframework/container-runtime 2.23.0 → 2.30.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.
Files changed (234) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/api-report/container-runtime.legacy.alpha.api.md +0 -246
  3. package/dist/blobManager/blobManager.d.ts +11 -9
  4. package/dist/blobManager/blobManager.d.ts.map +1 -1
  5. package/dist/blobManager/blobManager.js +38 -39
  6. package/dist/blobManager/blobManager.js.map +1 -1
  7. package/dist/blobManager/blobManagerSnapSum.d.ts +2 -4
  8. package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  9. package/dist/blobManager/blobManagerSnapSum.js +6 -6
  10. package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
  11. package/dist/channelCollection.d.ts +1 -7
  12. package/dist/channelCollection.d.ts.map +1 -1
  13. package/dist/channelCollection.js +1 -26
  14. package/dist/channelCollection.js.map +1 -1
  15. package/dist/connectionTelemetry.d.ts +0 -43
  16. package/dist/connectionTelemetry.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.js.map +1 -1
  18. package/dist/containerRuntime.d.ts +21 -141
  19. package/dist/containerRuntime.d.ts.map +1 -1
  20. package/dist/containerRuntime.js +49 -290
  21. package/dist/containerRuntime.js.map +1 -1
  22. package/dist/dataStoreContext.d.ts +0 -13
  23. package/dist/dataStoreContext.d.ts.map +1 -1
  24. package/dist/dataStoreContext.js +2 -25
  25. package/dist/dataStoreContext.js.map +1 -1
  26. package/dist/gc/garbageCollection.d.ts.map +1 -1
  27. package/dist/gc/garbageCollection.js +2 -20
  28. package/dist/gc/garbageCollection.js.map +1 -1
  29. package/dist/gc/gcConfigs.d.ts.map +1 -1
  30. package/dist/gc/gcConfigs.js +0 -2
  31. package/dist/gc/gcConfigs.js.map +1 -1
  32. package/dist/gc/gcDefinitions.d.ts +8 -24
  33. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  34. package/dist/gc/gcDefinitions.js +1 -3
  35. package/dist/gc/gcDefinitions.js.map +1 -1
  36. package/dist/gc/gcHelpers.d.ts.map +1 -1
  37. package/dist/gc/gcHelpers.js +1 -4
  38. package/dist/gc/gcHelpers.js.map +1 -1
  39. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  40. package/dist/gc/gcSummaryStateTracker.js +0 -1
  41. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  42. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  43. package/dist/gc/gcTelemetry.js +4 -16
  44. package/dist/gc/gcTelemetry.js.map +1 -1
  45. package/dist/index.d.ts +2 -2
  46. package/dist/index.d.ts.map +1 -1
  47. package/dist/index.js +2 -2
  48. package/dist/index.js.map +1 -1
  49. package/dist/legacy.d.ts +0 -29
  50. package/dist/messageTypes.d.ts.map +1 -1
  51. package/dist/messageTypes.js.map +1 -1
  52. package/dist/packageVersion.d.ts +1 -1
  53. package/dist/packageVersion.js +1 -1
  54. package/dist/packageVersion.js.map +1 -1
  55. package/dist/signalTelemetryProcessing.d.ts +33 -0
  56. package/dist/signalTelemetryProcessing.d.ts.map +1 -0
  57. package/dist/signalTelemetryProcessing.js +149 -0
  58. package/dist/signalTelemetryProcessing.js.map +1 -0
  59. package/dist/summary/documentSchema.d.ts +7 -31
  60. package/dist/summary/documentSchema.d.ts.map +1 -1
  61. package/dist/summary/documentSchema.js +2 -18
  62. package/dist/summary/documentSchema.js.map +1 -1
  63. package/dist/summary/index.d.ts +2 -1
  64. package/dist/summary/index.d.ts.map +1 -1
  65. package/dist/summary/index.js +7 -1
  66. package/dist/summary/index.js.map +1 -1
  67. package/dist/summary/orderedClientElection.d.ts +1 -3
  68. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  69. package/dist/summary/orderedClientElection.js.map +1 -1
  70. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -3
  71. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  72. package/dist/summary/runWhileConnectedCoordinator.js +2 -7
  73. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  74. package/dist/summary/runningSummarizer.d.ts +1 -2
  75. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  76. package/dist/summary/runningSummarizer.js +4 -23
  77. package/dist/summary/runningSummarizer.js.map +1 -1
  78. package/dist/summary/summarizer.d.ts +2 -5
  79. package/dist/summary/summarizer.d.ts.map +1 -1
  80. package/dist/summary/summarizer.js +3 -11
  81. package/dist/summary/summarizer.js.map +1 -1
  82. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  83. package/dist/summary/summarizerClientElection.js +0 -1
  84. package/dist/summary/summarizerClientElection.js.map +1 -1
  85. package/dist/summary/summarizerHeuristics.d.ts +1 -1
  86. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  87. package/dist/summary/summarizerHeuristics.js.map +1 -1
  88. package/dist/summary/summarizerTypes.d.ts +109 -22
  89. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  90. package/dist/summary/summarizerTypes.js.map +1 -1
  91. package/dist/summary/summaryFormat.d.ts +3 -9
  92. package/dist/summary/summaryFormat.d.ts.map +1 -1
  93. package/dist/summary/summaryFormat.js.map +1 -1
  94. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  95. package/dist/summary/summaryGenerator.js +3 -9
  96. package/dist/summary/summaryGenerator.js.map +1 -1
  97. package/dist/summary/summaryHelpers.d.ts +19 -0
  98. package/dist/summary/summaryHelpers.d.ts.map +1 -0
  99. package/dist/summary/summaryHelpers.js +90 -0
  100. package/dist/summary/summaryHelpers.js.map +1 -0
  101. package/dist/summary/summaryManager.d.ts.map +1 -1
  102. package/dist/summary/summaryManager.js +0 -2
  103. package/dist/summary/summaryManager.js.map +1 -1
  104. package/lib/blobManager/blobManager.d.ts +11 -9
  105. package/lib/blobManager/blobManager.d.ts.map +1 -1
  106. package/lib/blobManager/blobManager.js +37 -37
  107. package/lib/blobManager/blobManager.js.map +1 -1
  108. package/lib/blobManager/blobManagerSnapSum.d.ts +2 -4
  109. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  110. package/lib/blobManager/blobManagerSnapSum.js +6 -6
  111. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  112. package/lib/channelCollection.d.ts +1 -7
  113. package/lib/channelCollection.d.ts.map +1 -1
  114. package/lib/channelCollection.js +2 -29
  115. package/lib/channelCollection.js.map +1 -1
  116. package/lib/connectionTelemetry.d.ts +0 -43
  117. package/lib/connectionTelemetry.d.ts.map +1 -1
  118. package/lib/connectionTelemetry.js.map +1 -1
  119. package/lib/containerRuntime.d.ts +21 -141
  120. package/lib/containerRuntime.d.ts.map +1 -1
  121. package/lib/containerRuntime.js +51 -298
  122. package/lib/containerRuntime.js.map +1 -1
  123. package/lib/dataStoreContext.d.ts +0 -13
  124. package/lib/dataStoreContext.d.ts.map +1 -1
  125. package/lib/dataStoreContext.js +2 -25
  126. package/lib/dataStoreContext.js.map +1 -1
  127. package/lib/gc/garbageCollection.d.ts.map +1 -1
  128. package/lib/gc/garbageCollection.js +3 -23
  129. package/lib/gc/garbageCollection.js.map +1 -1
  130. package/lib/gc/gcConfigs.d.ts.map +1 -1
  131. package/lib/gc/gcConfigs.js +0 -2
  132. package/lib/gc/gcConfigs.js.map +1 -1
  133. package/lib/gc/gcDefinitions.d.ts +8 -24
  134. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  135. package/lib/gc/gcDefinitions.js +1 -3
  136. package/lib/gc/gcDefinitions.js.map +1 -1
  137. package/lib/gc/gcHelpers.d.ts.map +1 -1
  138. package/lib/gc/gcHelpers.js +1 -4
  139. package/lib/gc/gcHelpers.js.map +1 -1
  140. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  141. package/lib/gc/gcSummaryStateTracker.js +0 -1
  142. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  143. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  144. package/lib/gc/gcTelemetry.js +5 -19
  145. package/lib/gc/gcTelemetry.js.map +1 -1
  146. package/lib/index.d.ts +2 -2
  147. package/lib/index.d.ts.map +1 -1
  148. package/lib/index.js +2 -2
  149. package/lib/index.js.map +1 -1
  150. package/lib/legacy.d.ts +0 -29
  151. package/lib/messageTypes.d.ts.map +1 -1
  152. package/lib/messageTypes.js.map +1 -1
  153. package/lib/packageVersion.d.ts +1 -1
  154. package/lib/packageVersion.js +1 -1
  155. package/lib/packageVersion.js.map +1 -1
  156. package/lib/signalTelemetryProcessing.d.ts +33 -0
  157. package/lib/signalTelemetryProcessing.d.ts.map +1 -0
  158. package/lib/signalTelemetryProcessing.js +145 -0
  159. package/lib/signalTelemetryProcessing.js.map +1 -0
  160. package/lib/summary/documentSchema.d.ts +7 -31
  161. package/lib/summary/documentSchema.d.ts.map +1 -1
  162. package/lib/summary/documentSchema.js +2 -18
  163. package/lib/summary/documentSchema.js.map +1 -1
  164. package/lib/summary/index.d.ts +2 -1
  165. package/lib/summary/index.d.ts.map +1 -1
  166. package/lib/summary/index.js +1 -0
  167. package/lib/summary/index.js.map +1 -1
  168. package/lib/summary/orderedClientElection.d.ts +1 -3
  169. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  170. package/lib/summary/orderedClientElection.js.map +1 -1
  171. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -3
  172. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  173. package/lib/summary/runWhileConnectedCoordinator.js +2 -7
  174. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  175. package/lib/summary/runningSummarizer.d.ts +1 -2
  176. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  177. package/lib/summary/runningSummarizer.js +4 -23
  178. package/lib/summary/runningSummarizer.js.map +1 -1
  179. package/lib/summary/summarizer.d.ts +2 -5
  180. package/lib/summary/summarizer.d.ts.map +1 -1
  181. package/lib/summary/summarizer.js +3 -11
  182. package/lib/summary/summarizer.js.map +1 -1
  183. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  184. package/lib/summary/summarizerClientElection.js +0 -1
  185. package/lib/summary/summarizerClientElection.js.map +1 -1
  186. package/lib/summary/summarizerHeuristics.d.ts +1 -1
  187. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  188. package/lib/summary/summarizerHeuristics.js.map +1 -1
  189. package/lib/summary/summarizerTypes.d.ts +109 -22
  190. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  191. package/lib/summary/summarizerTypes.js.map +1 -1
  192. package/lib/summary/summaryFormat.d.ts +3 -9
  193. package/lib/summary/summaryFormat.d.ts.map +1 -1
  194. package/lib/summary/summaryFormat.js.map +1 -1
  195. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  196. package/lib/summary/summaryGenerator.js +3 -9
  197. package/lib/summary/summaryGenerator.js.map +1 -1
  198. package/lib/summary/summaryHelpers.d.ts +19 -0
  199. package/lib/summary/summaryHelpers.d.ts.map +1 -0
  200. package/lib/summary/summaryHelpers.js +84 -0
  201. package/lib/summary/summaryHelpers.js.map +1 -0
  202. package/lib/summary/summaryManager.d.ts.map +1 -1
  203. package/lib/summary/summaryManager.js +0 -2
  204. package/lib/summary/summaryManager.js.map +1 -1
  205. package/package.json +27 -20
  206. package/src/blobManager/blobManager.ts +70 -62
  207. package/src/blobManager/blobManagerSnapSum.ts +7 -9
  208. package/src/channelCollection.ts +3 -31
  209. package/src/connectionTelemetry.ts +0 -51
  210. package/src/containerRuntime.ts +111 -522
  211. package/src/dataStoreContext.ts +2 -32
  212. package/src/gc/garbageCollection.ts +9 -26
  213. package/src/gc/gcConfigs.ts +3 -6
  214. package/src/gc/gcDefinitions.ts +10 -28
  215. package/src/gc/gcHelpers.ts +0 -5
  216. package/src/gc/gcSummaryStateTracker.ts +1 -2
  217. package/src/gc/gcTelemetry.ts +6 -13
  218. package/src/index.ts +6 -6
  219. package/src/messageTypes.ts +0 -2
  220. package/src/packageVersion.ts +1 -1
  221. package/src/signalTelemetryProcessing.ts +233 -0
  222. package/src/summary/documentSchema.ts +7 -38
  223. package/src/summary/index.ts +12 -0
  224. package/src/summary/orderedClientElection.ts +1 -3
  225. package/src/summary/runWhileConnectedCoordinator.ts +3 -8
  226. package/src/summary/runningSummarizer.ts +12 -20
  227. package/src/summary/summarizer.ts +6 -18
  228. package/src/summary/summarizerClientElection.ts +0 -2
  229. package/src/summary/summarizerHeuristics.ts +1 -2
  230. package/src/summary/summarizerTypes.ts +119 -23
  231. package/src/summary/summaryFormat.ts +4 -13
  232. package/src/summary/summaryGenerator.ts +1 -8
  233. package/src/summary/summaryHelpers.ts +118 -0
  234. package/src/summary/summaryManager.ts +0 -2
@@ -2,15 +2,15 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { Trace, TypedEventEmitter, } from "@fluid-internal/client-utils";
6
- import { AttachState, } from "@fluidframework/container-definitions";
7
- import { LoaderHeader, isIDeltaManagerFull, } from "@fluidframework/container-definitions/internal";
5
+ import { Trace, TypedEventEmitter } from "@fluid-internal/client-utils";
6
+ import { AttachState } from "@fluidframework/container-definitions";
7
+ import { isIDeltaManagerFull } from "@fluidframework/container-definitions/internal";
8
8
  import { assert, Deferred, LazyPromise, PromiseCache, delay, } from "@fluidframework/core-utils/internal";
9
- import { SummaryType, } from "@fluidframework/driver-definitions";
10
- import { DriverHeader, FetchSource, MessageType, } from "@fluidframework/driver-definitions/internal";
9
+ import { SummaryType } from "@fluidframework/driver-definitions";
10
+ import { FetchSource, MessageType } from "@fluidframework/driver-definitions/internal";
11
11
  import { readAndParse } from "@fluidframework/driver-utils/internal";
12
12
  import { FlushMode, FlushModeExperimental, channelsTreeName, gcTreeKey, } from "@fluidframework/runtime-definitions/internal";
13
- import { GCDataBuilder, RequestParser, TelemetryContext, addBlobToSummary, addSummarizeResultToSummary, calculateStats, create404Response, exceptionToResponse, responseToException, seqFromTree, } from "@fluidframework/runtime-utils/internal";
13
+ import { GCDataBuilder, RequestParser, TelemetryContext, addBlobToSummary, addSummarizeResultToSummary, calculateStats, create404Response, exceptionToResponse, seqFromTree, } from "@fluidframework/runtime-utils/internal";
14
14
  import { DataCorruptionError, DataProcessingError, extractSafePropertiesFromMessage, GenericError, LoggingError, PerformanceEvent,
15
15
  // eslint-disable-next-line import/no-deprecated
16
16
  TaggedLoggerAdapter, UsageError, createChildLogger, createChildMonitoringContext, createSampledLogger, loggerToMonitoringContext, raiseConnectedEvent, wrapError, tagCodeArtifacts, } from "@fluidframework/telemetry-utils/internal";
@@ -24,20 +24,15 @@ import { channelToDataStore } from "./dataStore.js";
24
24
  import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
25
25
  import { DeltaManagerPendingOpsProxy, DeltaManagerSummarizerProxy, } from "./deltaManagerProxies.js";
26
26
  import { DeltaScheduler } from "./deltaScheduler.js";
27
- import {
28
- // eslint-disable-next-line import/no-deprecated
29
- GCNodeType, GarbageCollector, gcGenerationOptionName, } from "./gc/index.js";
27
+ import { GCNodeType, GarbageCollector, gcGenerationOptionName, } from "./gc/index.js";
30
28
  import { InboundBatchAggregator } from "./inboundBatchAggregator.js";
31
29
  import { RuntimeCompatDetails, validateLoaderCompatibility } from "./layerCompatState.js";
32
30
  import { ContainerMessageType, } from "./messageTypes.js";
33
31
  import { DuplicateBatchDetector, ensureContentsDeserialized, OpCompressor, OpDecompressor, OpGroupingManager, OpSplitter, Outbox, RemoteMessageProcessor, serializeOpContents, } from "./opLifecycle/index.js";
34
32
  import { pkgVersion } from "./packageVersion.js";
35
33
  import { PendingStateManager, } from "./pendingStateManager.js";
36
- import {
37
- // eslint-disable-next-line import/no-deprecated
38
- DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator,
39
- // eslint-disable-next-line import/no-deprecated
40
- Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName, chunksBlobName, recentBatchInfoBlobName, createRootSummarizerNodeWithGC, electedSummarizerBlobName, extractSummaryMetadataMessage, idCompressorBlobName, metadataBlobName, rootHasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, } from "./summary/index.js";
34
+ import { SignalTelemetryManager } from "./signalTelemetryProcessing.js";
35
+ import { DocumentsSchemaController, OrderedClientCollection, OrderedClientElection, RetriableSummaryError, RunWhileConnectedCoordinator, Summarizer, SummarizerClientElection, SummaryCollection, SummaryManager, aliasBlobName, chunksBlobName, recentBatchInfoBlobName, createRootSummarizerNodeWithGC, electedSummarizerBlobName, extractSummaryMetadataMessage, idCompressorBlobName, metadataBlobName, rootHasIsolatedChannels, summarizerClientType, wrapSummaryInChannelsTree, formCreateSummarizerFn, summarizerRequestUrl, validateSummaryHeuristicConfiguration, DefaultSummaryConfiguration, isSummariesDisabled, } from "./summary/index.js";
41
36
  import { Throttler, formExponentialFn } from "./throttler.js";
42
37
  /**
43
38
  * Creates an error object to be thrown / passed to Container's close fn in case of an unknown message type.
@@ -58,32 +53,9 @@ function getUnknownMessageTypeError(unknownContainerRuntimeMessageType, codePath
58
53
  },
59
54
  });
60
55
  }
61
- export function isSummariesDisabled(config) {
62
- return config.state === "disabled";
63
- }
64
- /**
65
- * @legacy
66
- * @alpha
67
- */
68
- export const DefaultSummaryConfiguration = {
69
- state: "enabled",
70
- minIdleTime: 0,
71
- maxIdleTime: 30 * 1000, // 30 secs.
72
- maxTime: 60 * 1000, // 1 min.
73
- maxOps: 100, // Summarize if 100 weighted ops received since last snapshot.
74
- minOpsForLastSummaryAttempt: 10,
75
- maxAckWaitTime: 3 * 60 * 1000, // 3 mins.
76
- maxOpsSinceLastSummary: 7000,
77
- initialSummarizerDelayMs: 5 * 1000, // 5 secs.
78
- nonRuntimeOpWeight: 0.1,
79
- runtimeOpWeight: 1,
80
- nonRuntimeHeuristicThreshold: 20,
81
- };
82
56
  /**
83
57
  * Error responses when requesting a deleted object will have this header set to true
84
- * @legacy
85
- * @alpha
86
- * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
58
+ * @internal
87
59
  */
88
60
  export const DeletedResponseHeaderKey = "wasDeleted";
89
61
  /**
@@ -199,55 +171,13 @@ export const makeLegacySendBatchFn = (submitFn, deltaManager) => (batch) => {
199
171
  deltaManager.flush();
200
172
  return clientSequenceNumber;
201
173
  };
202
- const summarizerRequestUrl = "_summarizer";
203
- /**
204
- * Create and retrieve the summmarizer
205
- */
206
- async function createSummarizer(loader, url) {
207
- const request = {
208
- headers: {
209
- [LoaderHeader.cache]: false,
210
- [LoaderHeader.clientDetails]: {
211
- capabilities: { interactive: false },
212
- type: summarizerClientType,
213
- },
214
- [DriverHeader.summarizingClient]: true,
215
- [LoaderHeader.reconnect]: false,
216
- },
217
- url,
218
- };
219
- const resolvedContainer = await loader.resolve(request);
220
- let fluidObject;
221
- // Older containers may not have the "getEntryPoint" API
222
- // ! This check will need to stay until LTS of loader moves past 2.0.0-internal.7.0.0
223
- if (resolvedContainer.getEntryPoint === undefined) {
224
- // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-explicit-any
225
- const response = (await resolvedContainer.request({
226
- url: `/${summarizerRequestUrl}`,
227
- }));
228
- if (response.status !== 200 || response.mimeType !== "fluid/object") {
229
- throw responseToException(response, request);
230
- }
231
- // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
232
- fluidObject = response.value;
233
- }
234
- else {
235
- fluidObject = await resolvedContainer.getEntryPoint();
236
- }
237
- if (fluidObject?.ISummarizer === undefined) {
238
- throw new UsageError("Fluid object does not implement ISummarizer");
239
- }
240
- return fluidObject.ISummarizer;
241
- }
242
174
  /**
243
175
  * Extract last message from the snapshot metadata.
244
176
  * Uses legacy property if not using explicit schema control, otherwise uses the new property.
245
177
  * This allows new runtime to make documents not openable for old runtimes, one explicit document schema control is enabled.
246
178
  * Please see addMetadataToSummary() as well
247
179
  */
248
- function lastMessageFromMetadata(
249
- // eslint-disable-next-line import/no-deprecated
250
- metadata) {
180
+ function lastMessageFromMetadata(metadata) {
251
181
  return metadata?.documentSchema?.runtime?.explicitSchemaControl
252
182
  ? metadata?.lastMessage
253
183
  : metadata?.message;
@@ -279,7 +209,6 @@ export async function loadContainerRuntime(params) {
279
209
  return ContainerRuntime.loadRuntime(params);
280
210
  }
281
211
  const defaultMaxConsecutiveReconnects = 7;
282
- const defaultTelemetrySignalSampleCount = 100;
283
212
  /**
284
213
  * Represents the runtime of the container. Contains helper functions/state of the container.
285
214
  * It will define the store level mappings.
@@ -335,15 +264,13 @@ export class ContainerRuntime extends TypedEventEmitter {
335
264
  const [chunks, recentBatchInfo, metadata, electedSummarizerData, aliases, serializedIdCompressor,] = await Promise.all([
336
265
  tryFetchBlob(chunksBlobName),
337
266
  tryFetchBlob(recentBatchInfoBlobName),
338
- // eslint-disable-next-line import/no-deprecated
339
267
  tryFetchBlob(metadataBlobName),
340
- // eslint-disable-next-line import/no-deprecated
341
268
  tryFetchBlob(electedSummarizerBlobName),
342
269
  tryFetchBlob(aliasBlobName),
343
270
  tryFetchBlob(idCompressorBlobName),
344
271
  ]);
345
272
  // read snapshot blobs needed for BlobManager to load
346
- const blobManagerSnapshot = await loadBlobManagerLoadInfo(context);
273
+ const blobManagerLoadInfo = await loadBlobManagerLoadInfo(context);
347
274
  const messageAtLastSummary = lastMessageFromMetadata(metadata);
348
275
  // Verify summary runtime sequence number matches protocol sequence number.
349
276
  const runtimeSequenceNumber = messageAtLastSummary?.sequenceNumber;
@@ -447,7 +374,6 @@ export class ContainerRuntime extends TypedEventEmitter {
447
374
  };
448
375
  const compressionLz4 = compressionOptions.minimumBatchSizeInBytes !== Number.POSITIVE_INFINITY &&
449
376
  compressionOptions.compressionAlgorithm === "lz4";
450
- // eslint-disable-next-line import/no-deprecated
451
377
  const documentSchemaController = new DocumentsSchemaController(existing, protocolSequenceNumber, metadata?.documentSchema, {
452
378
  explicitSchemaControl,
453
379
  compressionLz4,
@@ -475,7 +401,7 @@ export class ContainerRuntime extends TypedEventEmitter {
475
401
  enableGroupedBatching,
476
402
  explicitSchemaControl,
477
403
  };
478
- const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], internalRuntimeOptions, containerScope, logger, existing, blobManagerSnapshot, context.storage, createIdCompressorFn, documentSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, undefined, // summaryConfiguration
404
+ const runtime = new containerRuntimeCtor(context, registry, metadata, electedSummarizerData, chunks ?? [], aliases ?? [], internalRuntimeOptions, containerScope, logger, existing, blobManagerLoadInfo, context.storage, createIdCompressorFn, documentSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, undefined, // summaryConfiguration
479
405
  recentBatchInfo);
480
406
  runtime.blobManager.stashedBlobsUploadP.then(() => {
481
407
  // make sure we didn't reconnect before the promise resolved
@@ -604,23 +530,15 @@ export class ContainerRuntime extends TypedEventEmitter {
604
530
  return RuntimeCompatDetails;
605
531
  }
606
532
  /***/
607
- constructor(context, registry,
608
- // eslint-disable-next-line import/no-deprecated
609
- metadata,
610
- // eslint-disable-next-line import/no-deprecated
611
- electedSummarizerData, chunks, dataStoreAliasMap, baseRuntimeOptions, containerScope,
533
+ constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope,
612
534
  // Create a custom ITelemetryBaseLogger to output telemetry events.
613
- baseLogger, existing,
614
- // eslint-disable-next-line import/no-deprecated
615
- blobManagerSnapshot, _storage, createIdCompressor,
616
- // eslint-disable-next-line import/no-deprecated
617
- documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler,
535
+ baseLogger, existing, blobManagerLoadInfo, _storage, createIdCompressor, documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler,
618
536
  // eslint-disable-next-line unicorn/no-object-as-default-parameter
619
537
  summaryConfiguration = {
620
538
  // the defaults
621
539
  ...DefaultSummaryConfiguration,
622
540
  // the runtime configuration overrides
623
- ...baseRuntimeOptions.summaryOptions?.summaryConfigOverrides,
541
+ ...runtimeOptions.summaryOptions?.summaryConfigOverrides,
624
542
  }, recentBatchInfo) {
625
543
  super();
626
544
  this.registry = registry;
@@ -641,17 +559,7 @@ export class ContainerRuntime extends TypedEventEmitter {
641
559
  this.ensureNoDataModelChangesCalls = 0;
642
560
  this._disposed = false;
643
561
  this.emitDirtyDocumentEvent = true;
644
- this._signalTracking = {
645
- totalSignalsSentInLatencyWindow: 0,
646
- signalsLost: 0,
647
- signalsOutOfOrder: 0,
648
- signalsSentSinceLastLatencyMeasurement: 0,
649
- broadcastSignalSequenceNumber: 0,
650
- signalTimestamp: 0,
651
- roundTripSignalSequenceNumber: undefined,
652
- trackingSignalSequenceNumber: undefined,
653
- minimumTrackingSignalSequenceNumber: undefined,
654
- };
562
+ this.signalTelemetryManager = new SignalTelemetryManager();
655
563
  /**
656
564
  * It a cache for holding mapping for loading groupIds with its snapshot from the service. Add expiry policy of 1 minute.
657
565
  * Starting with 1 min and based on recorded usage we can tweak it later on.
@@ -665,11 +573,6 @@ export class ContainerRuntime extends TypedEventEmitter {
665
573
  this.disposeFn = disposeFn ?? closeFn;
666
574
  const maybeLoaderCompatDetails = context;
667
575
  validateLoaderCompatibility(maybeLoaderCompatDetails.ILayerCompatDetails, this.disposeFn);
668
- // Backfill in defaults for the internal runtimeOptions, since they may not be present on the provided runtimeOptions object
669
- const runtimeOptions = {
670
- flushMode: defaultFlushMode,
671
- ...baseRuntimeOptions,
672
- };
673
576
  this.mc = createChildMonitoringContext({
674
577
  logger: this.baseLogger,
675
578
  namespace: "ContainerRuntime",
@@ -781,7 +684,7 @@ export class ContainerRuntime extends TypedEventEmitter {
781
684
  this._deltaManager = outerDeltaManager;
782
685
  this.handleContext = new ContainerFluidHandleContext("", this);
783
686
  if (summaryConfiguration.state === "enabled") {
784
- this.validateSummaryHeuristicConfiguration(summaryConfiguration);
687
+ validateSummaryHeuristicConfiguration(summaryConfiguration);
785
688
  }
786
689
  this.summariesDisabled = isSummariesDisabled(summaryConfiguration);
787
690
  const { maxOpsSinceLastSummary = 0, initialSummarizerDelayMs = 0 } = isSummariesDisabled(summaryConfiguration)
@@ -879,9 +782,14 @@ export class ContainerRuntime extends TypedEventEmitter {
879
782
  // what is the interface of passing signals, we need the
880
783
  // downstream stores to wrap the signal.
881
784
  parentContext.submitSignal = (type, content, targetClientId) => {
785
+ // Future: Can the `content` argument type be IEnvelope?
786
+ // verifyNotClosed is called in FluidDataStoreContext, which is *the* expected caller.
882
787
  const envelope1 = content;
883
- const envelope2 = this.createNewSignalEnvelope(envelope1.address, type, envelope1.contents);
884
- return this.submitEnvelopedSignal(envelope2, targetClientId);
788
+ const envelope2 = createNewSignalEnvelope(envelope1.address, type, envelope1.contents);
789
+ if (targetClientId === undefined) {
790
+ this.signalTelemetryManager.applyTrackingToBroadcastSignalEnvelope(envelope2);
791
+ }
792
+ this.submitSignalFn(envelope2, targetClientId);
885
793
  };
886
794
  let snapshot = getSummaryForDatastores(baseSnapshot, metadata);
887
795
  if (snapshot !== undefined && snapshotWithContents !== undefined) {
@@ -896,8 +804,8 @@ export class ContainerRuntime extends TypedEventEmitter {
896
804
  }), (path) => this.garbageCollector.isNodeDeleted(path), new Map(dataStoreAliasMap), async (runtime) => provideEntryPoint);
897
805
  this.blobManager = new BlobManager({
898
806
  routeContext: this.handleContext,
899
- snapshot: blobManagerSnapshot,
900
- getStorage: () => this.storage,
807
+ blobManagerLoadInfo,
808
+ storage: this.storage,
901
809
  sendBlobAttachOp: (localId, blobId) => {
902
810
  if (!this.disposed) {
903
811
  this.submit({ type: ContainerMessageType.BlobAttach, contents: undefined }, undefined, {
@@ -985,10 +893,7 @@ export class ContainerRuntime extends TypedEventEmitter {
985
893
  const orderedClientElectionForSummarizer = new OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, SummarizerClientElection.isClientEligible, this.mc.config.getBoolean("Fluid.ContainerRuntime.OrderedClientElection.EnablePerformanceEvents"));
986
894
  this.summarizerClientElection = new SummarizerClientElection(orderedClientLogger, summaryCollection, orderedClientElectionForSummarizer, maxOpsSinceLastSummary);
987
895
  if (isSummarizerClient) {
988
- // eslint-disable-next-line import/no-deprecated
989
- this._summarizer = new Summarizer(this /* ISummarizerRuntime */, () => summaryConfiguration, this /* ISummarizerInternalsProvider */, this.handleContext, summaryCollection,
990
- // eslint-disable-next-line import/no-deprecated
991
- async (runtime) => RunWhileConnectedCoordinator.create(runtime,
896
+ this._summarizer = new Summarizer(this /* ISummarizerRuntime */, () => summaryConfiguration, this /* ISummarizerInternalsProvider */, this.handleContext, summaryCollection, async (runtime) => RunWhileConnectedCoordinator.create(runtime,
992
897
  // Summarization runs in summarizer client and needs access to the real (non-proxy) active
993
898
  // information. The proxy delta manager would always return false for summarizer client.
994
899
  () => this.innerDeltaManager.active));
@@ -1016,7 +921,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1016
921
  summaryCollection.on("default", defaultAction);
1017
922
  // Create the SummaryManager and mark the initial state
1018
923
  this.summaryManager = new SummaryManager(this.summarizerClientElection, this, // IConnectedState
1019
- summaryCollection, this.baseLogger, this.formCreateSummarizerFn(loader), new Throttler(60 * 1000, // 60 sec delay window
924
+ summaryCollection, this.baseLogger, formCreateSummarizerFn(loader), new Throttler(60 * 1000, // 60 sec delay window
1020
925
  30 * 1000, // 30 sec max delay
1021
926
  // throttling function increases exponentially (0ms, 40ms, 80ms, 160ms, etc)
1022
927
  formExponentialFn({ coefficient: 20, initialDelay: 0 })), {
@@ -1051,7 +956,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1051
956
  summaryFormatVersion: metadata?.summaryFormatVersion,
1052
957
  disableIsolatedChannels: metadata?.disableIsolatedChannels,
1053
958
  gcVersion: metadata?.gcFeature,
1054
- options: JSON.stringify(baseRuntimeOptions),
959
+ options: JSON.stringify(runtimeOptions),
1055
960
  idCompressorModeMetadata: metadata?.documentSchema?.runtime?.idCompressorMode,
1056
961
  idCompressorMode: this.sessionSchema.idCompressorMode,
1057
962
  sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
@@ -1076,7 +981,6 @@ export class ContainerRuntime extends TypedEventEmitter {
1076
981
  // saved state, i.e. all the ops marked by Loader layer sa savedOp === true.
1077
982
  this.skipSavedCompressorOps = pendingRuntimeState?.pendingIdCompressorState !== undefined;
1078
983
  }
1079
- // eslint-disable-next-line import/no-deprecated
1080
984
  onSchemaChange(schema) {
1081
985
  this.mc.logger.sendTelemetryEvent({
1082
986
  eventName: "SchemaChangeAccept",
@@ -1287,13 +1191,11 @@ export class ContainerRuntime extends TypedEventEmitter {
1287
1191
  }
1288
1192
  if (id === blobManagerBasePath && requestParser.isLeaf(2)) {
1289
1193
  const blob = await this.blobManager.getBlob(requestParser.pathParts[1]);
1290
- return blob
1291
- ? {
1292
- status: 200,
1293
- mimeType: "fluid/object",
1294
- value: blob,
1295
- }
1296
- : create404Response(request);
1194
+ return {
1195
+ status: 200,
1196
+ mimeType: "fluid/object",
1197
+ value: blob,
1198
+ };
1297
1199
  }
1298
1200
  else if (requestParser.pathParts.length > 0) {
1299
1201
  return await this.channelCollection.request(request);
@@ -1324,7 +1226,6 @@ export class ContainerRuntime extends TypedEventEmitter {
1324
1226
  const documentSchema = this.documentsSchemaController.summarizeDocumentSchema(this.deltaManager.lastSequenceNumber);
1325
1227
  // Is document schema explicit control on?
1326
1228
  const explicitSchemaControl = documentSchema?.runtime.explicitSchemaControl;
1327
- // eslint-disable-next-line import/no-deprecated
1328
1229
  const metadata = {
1329
1230
  ...this.createContainerMetadata,
1330
1231
  // Increment the summary number for the next summary that will be generated.
@@ -1338,8 +1239,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1338
1239
  // last message's sequence number.
1339
1240
  // See also lastMessageFromMetadata()
1340
1241
  message: explicitSchemaControl
1341
- ? // eslint-disable-next-line import/no-deprecated
1342
- { sequenceNumber: -1 }
1242
+ ? { sequenceNumber: -1 }
1343
1243
  : message,
1344
1244
  lastMessage: explicitSchemaControl ? message : undefined,
1345
1245
  documentSchema,
@@ -1561,14 +1461,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1561
1461
  if (connected) {
1562
1462
  assert(this.attachState === AttachState.Attached, 0x3cd /* Connection is possible only if container exists in storage */);
1563
1463
  if (changeOfState) {
1564
- this._signalTracking.signalsLost = 0;
1565
- this._signalTracking.signalsOutOfOrder = 0;
1566
- this._signalTracking.signalTimestamp = 0;
1567
- this._signalTracking.signalsSentSinceLastLatencyMeasurement = 0;
1568
- this._signalTracking.totalSignalsSentInLatencyWindow = 0;
1569
- this._signalTracking.roundTripSignalSequenceNumber = undefined;
1570
- this._signalTracking.trackingSignalSequenceNumber = undefined;
1571
- this._signalTracking.minimumTrackingSignalSequenceNumber = undefined;
1464
+ this.signalTelemetryManager.resetTracking();
1572
1465
  }
1573
1466
  }
1574
1467
  // Fail while disconnected
@@ -1867,9 +1760,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1867
1760
  break;
1868
1761
  }
1869
1762
  case ContainerMessageType.DocumentSchemaChange: {
1870
- this.documentsSchemaController.processDocumentSchemaMessages(
1871
- // eslint-disable-next-line import/no-deprecated
1872
- contents, local, message.sequenceNumber);
1763
+ this.documentsSchemaController.processDocumentSchemaMessages(contents, local, message.sequenceNumber);
1873
1764
  break;
1874
1765
  }
1875
1766
  default: {
@@ -1899,90 +1790,6 @@ export class ContainerRuntime extends TypedEventEmitter {
1899
1790
  }
1900
1791
  }
1901
1792
  }
1902
- /**
1903
- * Emits the Signal event and update the perf signal data.
1904
- */
1905
- sendSignalTelemetryEvent() {
1906
- const duration = Date.now() - this._signalTracking.signalTimestamp;
1907
- this.mc.logger.sendPerformanceEvent({
1908
- eventName: "SignalLatency",
1909
- details: {
1910
- duration, // Roundtrip duration of the tracked signal in milliseconds.
1911
- sent: this._signalTracking.totalSignalsSentInLatencyWindow, // Signals sent since the last logged SignalLatency event.
1912
- lost: this._signalTracking.signalsLost, // Signals lost since the last logged SignalLatency event.
1913
- outOfOrder: this._signalTracking.signalsOutOfOrder, // Out of order signals since the last logged SignalLatency event.
1914
- reconnectCount: this.consecutiveReconnects, // Container reconnect count.
1915
- },
1916
- });
1917
- this._signalTracking.signalsLost = 0;
1918
- this._signalTracking.signalsOutOfOrder = 0;
1919
- this._signalTracking.signalTimestamp = 0;
1920
- this._signalTracking.totalSignalsSentInLatencyWindow = 0;
1921
- }
1922
- /**
1923
- * Updates signal telemetry including emitting telemetry events.
1924
- */
1925
- processSignalForTelemetry(envelope) {
1926
- const { clientBroadcastSignalSequenceNumber, contents: envelopeContents, address: envelopeAddress, } = envelope;
1927
- if (clientBroadcastSignalSequenceNumber === undefined) {
1928
- return;
1929
- }
1930
- if (this._signalTracking.trackingSignalSequenceNumber === undefined ||
1931
- this._signalTracking.minimumTrackingSignalSequenceNumber === undefined) {
1932
- return;
1933
- }
1934
- if (clientBroadcastSignalSequenceNumber >= this._signalTracking.trackingSignalSequenceNumber) {
1935
- // Calculate the number of signals lost and log the event.
1936
- const signalsLost = clientBroadcastSignalSequenceNumber -
1937
- this._signalTracking.trackingSignalSequenceNumber;
1938
- if (signalsLost > 0) {
1939
- this._signalTracking.signalsLost += signalsLost;
1940
- this.mc.logger.sendErrorEvent({
1941
- eventName: "SignalLost",
1942
- details: {
1943
- signalsLost, // Number of lost signals detected.
1944
- expectedSequenceNumber: this._signalTracking.trackingSignalSequenceNumber, // The next expected signal sequence number.
1945
- clientBroadcastSignalSequenceNumber, // Actual signal sequence number received.
1946
- },
1947
- });
1948
- }
1949
- // Update the tracking signal sequence number to the next expected signal in the sequence.
1950
- this._signalTracking.trackingSignalSequenceNumber =
1951
- clientBroadcastSignalSequenceNumber + 1;
1952
- }
1953
- else if (
1954
- // Check if this is a signal in range of interest.
1955
- clientBroadcastSignalSequenceNumber >=
1956
- this._signalTracking.minimumTrackingSignalSequenceNumber) {
1957
- this._signalTracking.signalsOutOfOrder++;
1958
- const details = {
1959
- expectedSequenceNumber: this._signalTracking.trackingSignalSequenceNumber, // The next expected signal sequence number.
1960
- clientBroadcastSignalSequenceNumber, // Sequence number of the out of order signal.
1961
- };
1962
- // Only log `contents.type` when address is for container to avoid
1963
- // chance that contents type is customer data.
1964
- if (envelopeAddress === undefined) {
1965
- details.contentsType = envelopeContents.type; // Type of signal that was received out of order.
1966
- }
1967
- this.mc.logger.sendTelemetryEvent({
1968
- eventName: "SignalOutOfOrder",
1969
- details,
1970
- });
1971
- }
1972
- if (this._signalTracking.roundTripSignalSequenceNumber !== undefined &&
1973
- clientBroadcastSignalSequenceNumber >= this._signalTracking.roundTripSignalSequenceNumber) {
1974
- if (clientBroadcastSignalSequenceNumber ===
1975
- this._signalTracking.roundTripSignalSequenceNumber) {
1976
- // Latency tracked signal has been received.
1977
- // We now log the roundtrip duration of the tracked signal.
1978
- // This telemetry event also logs metrics for broadcast signals
1979
- // sent, lost, and out of order.
1980
- // These metrics are reset after logging the telemetry event.
1981
- this.sendSignalTelemetryEvent();
1982
- }
1983
- this._signalTracking.roundTripSignalSequenceNumber = undefined;
1984
- }
1985
- }
1986
1793
  processSignal(message, local) {
1987
1794
  const envelope = message.content;
1988
1795
  const transformed = {
@@ -1993,7 +1800,7 @@ export class ContainerRuntime extends TypedEventEmitter {
1993
1800
  };
1994
1801
  // Only collect signal telemetry for broadcast messages sent by the current client.
1995
1802
  if (message.clientId === this.clientId) {
1996
- this.processSignalForTelemetry(envelope);
1803
+ this.signalTelemetryManager.trackReceivedSignal(envelope, this.mc.logger, this.consecutiveReconnects);
1997
1804
  }
1998
1805
  if (envelope.address === undefined) {
1999
1806
  // No address indicates a container signal message.
@@ -2161,43 +1968,6 @@ export class ContainerRuntime extends TypedEventEmitter {
2161
1968
  }
2162
1969
  return true;
2163
1970
  }
2164
- createNewSignalEnvelope(address, type, content) {
2165
- const newEnvelope = {
2166
- address,
2167
- contents: { type, content },
2168
- };
2169
- return newEnvelope;
2170
- }
2171
- submitEnvelopedSignal(envelope, targetClientId) {
2172
- const isBroadcastSignal = targetClientId === undefined;
2173
- if (isBroadcastSignal) {
2174
- const clientBroadcastSignalSequenceNumber = ++this._signalTracking
2175
- .broadcastSignalSequenceNumber;
2176
- // Stamp with the broadcast signal sequence number.
2177
- envelope.clientBroadcastSignalSequenceNumber = clientBroadcastSignalSequenceNumber;
2178
- this._signalTracking.signalsSentSinceLastLatencyMeasurement++;
2179
- if (this._signalTracking.minimumTrackingSignalSequenceNumber === undefined ||
2180
- this._signalTracking.trackingSignalSequenceNumber === undefined) {
2181
- // Signal monitoring window is undefined
2182
- // Initialize tracking to expect the next signal sent by the connected client.
2183
- this._signalTracking.minimumTrackingSignalSequenceNumber =
2184
- clientBroadcastSignalSequenceNumber;
2185
- this._signalTracking.trackingSignalSequenceNumber =
2186
- clientBroadcastSignalSequenceNumber;
2187
- }
2188
- // We should not track the round trip of a new signal in the case we are already tracking one.
2189
- if (clientBroadcastSignalSequenceNumber % defaultTelemetrySignalSampleCount === 1 &&
2190
- this._signalTracking.roundTripSignalSequenceNumber === undefined) {
2191
- this._signalTracking.signalTimestamp = Date.now();
2192
- this._signalTracking.roundTripSignalSequenceNumber =
2193
- clientBroadcastSignalSequenceNumber;
2194
- this._signalTracking.totalSignalsSentInLatencyWindow +=
2195
- this._signalTracking.signalsSentSinceLastLatencyMeasurement;
2196
- this._signalTracking.signalsSentSinceLastLatencyMeasurement = 0;
2197
- }
2198
- }
2199
- this.submitSignalFn(envelope, targetClientId);
2200
- }
2201
1971
  /**
2202
1972
  * Submits the signal to be sent to other clients.
2203
1973
  * @param type - Type of the signal.
@@ -2212,8 +1982,11 @@ export class ContainerRuntime extends TypedEventEmitter {
2212
1982
  */
2213
1983
  submitSignal(type, content, targetClientId) {
2214
1984
  this.verifyNotClosed();
2215
- const envelope = this.createNewSignalEnvelope(undefined /* address */, type, content);
2216
- return this.submitEnvelopedSignal(envelope, targetClientId);
1985
+ const envelope = createNewSignalEnvelope(undefined /* address */, type, content);
1986
+ if (targetClientId === undefined) {
1987
+ this.signalTelemetryManager.applyTrackingToBroadcastSignalEnvelope(envelope);
1988
+ }
1989
+ this.submitSignalFn(envelope, targetClientId);
2217
1990
  }
2218
1991
  setAttachState(attachState) {
2219
1992
  if (attachState === AttachState.Attaching) {
@@ -2367,13 +2140,10 @@ export class ContainerRuntime extends TypedEventEmitter {
2367
2140
  * Returns the type of the GC node. Currently, there are nodes that belong to the root ("/"), data stores or
2368
2141
  * blob manager.
2369
2142
  */
2370
- // eslint-disable-next-line import/no-deprecated
2371
2143
  getNodeType(nodePath) {
2372
2144
  if (isBlobPath(nodePath)) {
2373
- // eslint-disable-next-line import/no-deprecated
2374
2145
  return GCNodeType.Blob;
2375
2146
  }
2376
- // eslint-disable-next-line import/no-deprecated
2377
2147
  return this.channelCollection.getGCNodeType(nodePath) ?? GCNodeType.Other;
2378
2148
  }
2379
2149
  /**
@@ -2387,13 +2157,10 @@ export class ContainerRuntime extends TypedEventEmitter {
2387
2157
  return ["_gcRoot"];
2388
2158
  }
2389
2159
  switch (this.getNodeType(nodePath)) {
2390
- // eslint-disable-next-line import/no-deprecated
2391
2160
  case GCNodeType.Blob: {
2392
2161
  return [blobManagerBasePath];
2393
2162
  }
2394
- // eslint-disable-next-line import/no-deprecated
2395
2163
  case GCNodeType.DataStore:
2396
- // eslint-disable-next-line import/no-deprecated
2397
2164
  case GCNodeType.SubDataStore: {
2398
2165
  return this.channelCollection.getDataStorePackagePath(nodePath);
2399
2166
  }
@@ -2461,7 +2228,6 @@ export class ContainerRuntime extends TypedEventEmitter {
2461
2228
  * op processing, updating SummarizerNode state tracking, and garbage collection.
2462
2229
  * @param options - options controlling how the summary is generated or submitted
2463
2230
  */
2464
- // eslint-disable-next-line import/no-deprecated
2465
2231
  async submitSummary(options) {
2466
2232
  const { cancellationToken, fullTree = false, finalAttempt = false, summaryLogger, latestSummaryRefSeqNum, } = options;
2467
2233
  // The summary number for this summary. This will be updated during the summary process, so get it now and
@@ -3063,7 +2829,6 @@ export class ContainerRuntime extends TypedEventEmitter {
3063
2829
  /**
3064
2830
  * Implementation of ISummarizerInternalsProvider.refreshLatestSummaryAck
3065
2831
  */
3066
- // eslint-disable-next-line import/no-deprecated
3067
2832
  async refreshLatestSummaryAck(options) {
3068
2833
  const { proposalHandle, ackHandle, summaryRefSeq, summaryLogger } = options;
3069
2834
  // proposalHandle is always passed from RunningSummarizer.
@@ -3222,27 +2987,15 @@ export class ContainerRuntime extends TypedEventEmitter {
3222
2987
  return this.summaryManager.enqueueSummarize(options);
3223
2988
  }
3224
2989
  }
3225
- /**
3226
- * Forms a function that will create and retrieve a Summarizer.
3227
- */
3228
- formCreateSummarizerFn(loader) {
3229
- return async () => {
3230
- return createSummarizer(loader, `/${summarizerRequestUrl}`);
3231
- };
3232
- }
3233
- validateSummaryHeuristicConfiguration(configuration) {
3234
- // eslint-disable-next-line no-restricted-syntax
3235
- for (const prop in configuration) {
3236
- if (typeof configuration[prop] === "number" && configuration[prop] < 0) {
3237
- throw new UsageError(`Summary heuristic configuration property "${prop}" cannot be less than 0`);
3238
- }
3239
- }
3240
- if (configuration.minIdleTime > configuration.maxIdleTime) {
3241
- throw new UsageError(`"minIdleTime" [${configuration.minIdleTime}] cannot be greater than "maxIdleTime" [${configuration.maxIdleTime}]`);
3242
- }
3243
- }
3244
2990
  get groupedBatchingEnabled() {
3245
2991
  return this.sessionSchema.opGroupingEnabled === true;
3246
2992
  }
3247
2993
  }
2994
+ export function createNewSignalEnvelope(address, type, content) {
2995
+ const newEnvelope = {
2996
+ address,
2997
+ contents: { type, content },
2998
+ };
2999
+ return newEnvelope;
3000
+ }
3248
3001
  //# sourceMappingURL=containerRuntime.js.map