@fluidframework/container-runtime 2.20.0 → 2.21.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 (333) hide show
  1. package/.eslintrc.cjs +36 -6
  2. package/CHANGELOG.md +38 -0
  3. package/api-report/container-runtime.legacy.alpha.api.md +31 -31
  4. package/dist/batchTracker.d.ts +1 -2
  5. package/dist/batchTracker.d.ts.map +1 -1
  6. package/dist/batchTracker.js +1 -1
  7. package/dist/batchTracker.js.map +1 -1
  8. package/dist/blobManager/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager/blobManager.js +14 -11
  10. package/dist/blobManager/blobManager.js.map +1 -1
  11. package/dist/blobManager/blobManagerSnapSum.d.ts +1 -0
  12. package/dist/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  13. package/dist/blobManager/blobManagerSnapSum.js +7 -5
  14. package/dist/blobManager/blobManagerSnapSum.js.map +1 -1
  15. package/dist/channelCollection.d.ts.map +1 -1
  16. package/dist/channelCollection.js +63 -41
  17. package/dist/channelCollection.js.map +1 -1
  18. package/dist/connectionTelemetry.d.ts +2 -2
  19. package/dist/connectionTelemetry.d.ts.map +1 -1
  20. package/dist/connectionTelemetry.js +4 -4
  21. package/dist/connectionTelemetry.js.map +1 -1
  22. package/dist/containerRuntime.d.ts +14 -30
  23. package/dist/containerRuntime.d.ts.map +1 -1
  24. package/dist/containerRuntime.js +264 -194
  25. package/dist/containerRuntime.js.map +1 -1
  26. package/dist/dataStore.js +6 -3
  27. package/dist/dataStore.js.map +1 -1
  28. package/dist/dataStoreContext.d.ts.map +1 -1
  29. package/dist/dataStoreContext.js +16 -11
  30. package/dist/dataStoreContext.js.map +1 -1
  31. package/dist/dataStoreContexts.d.ts.map +1 -1
  32. package/dist/dataStoreContexts.js +1 -0
  33. package/dist/dataStoreContexts.js.map +1 -1
  34. package/dist/deltaScheduler.d.ts.map +1 -1
  35. package/dist/deltaScheduler.js +5 -5
  36. package/dist/deltaScheduler.js.map +1 -1
  37. package/dist/gc/garbageCollection.d.ts.map +1 -1
  38. package/dist/gc/garbageCollection.js +36 -14
  39. package/dist/gc/garbageCollection.js.map +1 -1
  40. package/dist/gc/gcConfigs.d.ts.map +1 -1
  41. package/dist/gc/gcConfigs.js +2 -0
  42. package/dist/gc/gcConfigs.js.map +1 -1
  43. package/dist/gc/gcDefinitions.d.ts +8 -0
  44. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  45. package/dist/gc/gcDefinitions.js +1 -0
  46. package/dist/gc/gcDefinitions.js.map +1 -1
  47. package/dist/gc/gcHelpers.d.ts.map +1 -1
  48. package/dist/gc/gcHelpers.js +8 -5
  49. package/dist/gc/gcHelpers.js.map +1 -1
  50. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  51. package/dist/gc/gcSummaryStateTracker.js +2 -1
  52. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  53. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  54. package/dist/gc/gcTelemetry.js +29 -15
  55. package/dist/gc/gcTelemetry.js.map +1 -1
  56. package/dist/inboundBatchAggregator.js +3 -3
  57. package/dist/inboundBatchAggregator.js.map +1 -1
  58. package/dist/layerCompatState.d.ts +19 -0
  59. package/dist/layerCompatState.d.ts.map +1 -0
  60. package/dist/layerCompatState.js +64 -0
  61. package/dist/layerCompatState.js.map +1 -0
  62. package/dist/messageTypes.d.ts.map +1 -1
  63. package/dist/messageTypes.js.map +1 -1
  64. package/dist/opLifecycle/duplicateBatchDetector.js +2 -2
  65. package/dist/opLifecycle/duplicateBatchDetector.js.map +1 -1
  66. package/dist/opLifecycle/opCompressor.d.ts +3 -2
  67. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  68. package/dist/opLifecycle/opCompressor.js +13 -19
  69. package/dist/opLifecycle/opCompressor.js.map +1 -1
  70. package/dist/opLifecycle/opDecompressor.d.ts +3 -0
  71. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  72. package/dist/opLifecycle/opDecompressor.js +4 -1
  73. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  74. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  75. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  76. package/dist/opLifecycle/opGroupingManager.js +5 -3
  77. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  78. package/dist/opLifecycle/opSplitter.d.ts +13 -10
  79. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  80. package/dist/opLifecycle/opSplitter.js +14 -11
  81. package/dist/opLifecycle/opSplitter.js.map +1 -1
  82. package/dist/opLifecycle/outbox.d.ts +3 -3
  83. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  84. package/dist/opLifecycle/outbox.js +11 -15
  85. package/dist/opLifecycle/outbox.js.map +1 -1
  86. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  87. package/dist/opLifecycle/remoteMessageProcessor.js +3 -1
  88. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  89. package/dist/packageVersion.d.ts +1 -1
  90. package/dist/packageVersion.js +1 -1
  91. package/dist/packageVersion.js.map +1 -1
  92. package/dist/pendingStateManager.d.ts +3 -4
  93. package/dist/pendingStateManager.d.ts.map +1 -1
  94. package/dist/pendingStateManager.js +11 -10
  95. package/dist/pendingStateManager.js.map +1 -1
  96. package/dist/summary/documentSchema.d.ts +7 -0
  97. package/dist/summary/documentSchema.d.ts.map +1 -1
  98. package/dist/summary/documentSchema.js +6 -4
  99. package/dist/summary/documentSchema.js.map +1 -1
  100. package/dist/summary/orderedClientElection.d.ts +1 -0
  101. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  102. package/dist/summary/orderedClientElection.js +13 -11
  103. package/dist/summary/orderedClientElection.js.map +1 -1
  104. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -0
  105. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  106. package/dist/summary/runWhileConnectedCoordinator.js +7 -2
  107. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  108. package/dist/summary/runningSummarizer.d.ts +2 -2
  109. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  110. package/dist/summary/runningSummarizer.js +38 -17
  111. package/dist/summary/runningSummarizer.js.map +1 -1
  112. package/dist/summary/summarizer.d.ts +1 -0
  113. package/dist/summary/summarizer.d.ts.map +1 -1
  114. package/dist/summary/summarizer.js +18 -9
  115. package/dist/summary/summarizer.js.map +1 -1
  116. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  117. package/dist/summary/summarizerClientElection.js +1 -0
  118. package/dist/summary/summarizerClientElection.js.map +1 -1
  119. package/dist/summary/summarizerHeuristics.js +1 -1
  120. package/dist/summary/summarizerHeuristics.js.map +1 -1
  121. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  122. package/dist/summary/summarizerNode/index.js.map +1 -1
  123. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  124. package/dist/summary/summarizerNode/summarizerNode.js +30 -31
  125. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  126. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
  127. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
  128. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  129. package/dist/summary/summarizerTypes.d.ts +7 -0
  130. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  131. package/dist/summary/summarizerTypes.js.map +1 -1
  132. package/dist/summary/summaryCollection.d.ts +3 -4
  133. package/dist/summary/summaryCollection.d.ts.map +1 -1
  134. package/dist/summary/summaryCollection.js +9 -6
  135. package/dist/summary/summaryCollection.js.map +1 -1
  136. package/dist/summary/summaryFormat.d.ts +4 -1
  137. package/dist/summary/summaryFormat.d.ts.map +1 -1
  138. package/dist/summary/summaryFormat.js +3 -2
  139. package/dist/summary/summaryFormat.js.map +1 -1
  140. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  141. package/dist/summary/summaryGenerator.js +19 -8
  142. package/dist/summary/summaryGenerator.js.map +1 -1
  143. package/dist/summary/summaryManager.d.ts.map +1 -1
  144. package/dist/summary/summaryManager.js +12 -9
  145. package/dist/summary/summaryManager.js.map +1 -1
  146. package/lib/batchTracker.d.ts +1 -2
  147. package/lib/batchTracker.d.ts.map +1 -1
  148. package/lib/batchTracker.js +2 -2
  149. package/lib/batchTracker.js.map +1 -1
  150. package/lib/blobManager/blobManager.d.ts.map +1 -1
  151. package/lib/blobManager/blobManager.js +14 -11
  152. package/lib/blobManager/blobManager.js.map +1 -1
  153. package/lib/blobManager/blobManagerSnapSum.d.ts +1 -0
  154. package/lib/blobManager/blobManagerSnapSum.d.ts.map +1 -1
  155. package/lib/blobManager/blobManagerSnapSum.js +7 -5
  156. package/lib/blobManager/blobManagerSnapSum.js.map +1 -1
  157. package/lib/channelCollection.d.ts.map +1 -1
  158. package/lib/channelCollection.js +66 -42
  159. package/lib/channelCollection.js.map +1 -1
  160. package/lib/connectionTelemetry.d.ts +2 -2
  161. package/lib/connectionTelemetry.d.ts.map +1 -1
  162. package/lib/connectionTelemetry.js +5 -5
  163. package/lib/connectionTelemetry.js.map +1 -1
  164. package/lib/containerRuntime.d.ts +14 -30
  165. package/lib/containerRuntime.d.ts.map +1 -1
  166. package/lib/containerRuntime.js +271 -196
  167. package/lib/containerRuntime.js.map +1 -1
  168. package/lib/dataStore.js +6 -3
  169. package/lib/dataStore.js.map +1 -1
  170. package/lib/dataStoreContext.d.ts.map +1 -1
  171. package/lib/dataStoreContext.js +16 -11
  172. package/lib/dataStoreContext.js.map +1 -1
  173. package/lib/dataStoreContexts.d.ts.map +1 -1
  174. package/lib/dataStoreContexts.js +1 -0
  175. package/lib/dataStoreContexts.js.map +1 -1
  176. package/lib/deltaScheduler.d.ts.map +1 -1
  177. package/lib/deltaScheduler.js +6 -6
  178. package/lib/deltaScheduler.js.map +1 -1
  179. package/lib/gc/garbageCollection.d.ts.map +1 -1
  180. package/lib/gc/garbageCollection.js +39 -15
  181. package/lib/gc/garbageCollection.js.map +1 -1
  182. package/lib/gc/gcConfigs.d.ts.map +1 -1
  183. package/lib/gc/gcConfigs.js +2 -0
  184. package/lib/gc/gcConfigs.js.map +1 -1
  185. package/lib/gc/gcDefinitions.d.ts +8 -0
  186. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  187. package/lib/gc/gcDefinitions.js +1 -0
  188. package/lib/gc/gcDefinitions.js.map +1 -1
  189. package/lib/gc/gcHelpers.d.ts.map +1 -1
  190. package/lib/gc/gcHelpers.js +8 -5
  191. package/lib/gc/gcHelpers.js.map +1 -1
  192. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  193. package/lib/gc/gcSummaryStateTracker.js +2 -1
  194. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  195. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  196. package/lib/gc/gcTelemetry.js +32 -16
  197. package/lib/gc/gcTelemetry.js.map +1 -1
  198. package/lib/inboundBatchAggregator.js +4 -4
  199. package/lib/inboundBatchAggregator.js.map +1 -1
  200. package/lib/layerCompatState.d.ts +19 -0
  201. package/lib/layerCompatState.d.ts.map +1 -0
  202. package/lib/layerCompatState.js +60 -0
  203. package/lib/layerCompatState.js.map +1 -0
  204. package/lib/messageTypes.d.ts.map +1 -1
  205. package/lib/messageTypes.js.map +1 -1
  206. package/lib/opLifecycle/duplicateBatchDetector.js +2 -2
  207. package/lib/opLifecycle/duplicateBatchDetector.js.map +1 -1
  208. package/lib/opLifecycle/opCompressor.d.ts +3 -2
  209. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  210. package/lib/opLifecycle/opCompressor.js +13 -19
  211. package/lib/opLifecycle/opCompressor.js.map +1 -1
  212. package/lib/opLifecycle/opDecompressor.d.ts +3 -0
  213. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  214. package/lib/opLifecycle/opDecompressor.js +4 -1
  215. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  216. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  217. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  218. package/lib/opLifecycle/opGroupingManager.js +5 -3
  219. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  220. package/lib/opLifecycle/opSplitter.d.ts +13 -10
  221. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  222. package/lib/opLifecycle/opSplitter.js +14 -11
  223. package/lib/opLifecycle/opSplitter.js.map +1 -1
  224. package/lib/opLifecycle/outbox.d.ts +3 -3
  225. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  226. package/lib/opLifecycle/outbox.js +11 -15
  227. package/lib/opLifecycle/outbox.js.map +1 -1
  228. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  229. package/lib/opLifecycle/remoteMessageProcessor.js +3 -1
  230. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  231. package/lib/packageVersion.d.ts +1 -1
  232. package/lib/packageVersion.js +1 -1
  233. package/lib/packageVersion.js.map +1 -1
  234. package/lib/pendingStateManager.d.ts +3 -4
  235. package/lib/pendingStateManager.d.ts.map +1 -1
  236. package/lib/pendingStateManager.js +12 -11
  237. package/lib/pendingStateManager.js.map +1 -1
  238. package/lib/summary/documentSchema.d.ts +7 -0
  239. package/lib/summary/documentSchema.d.ts.map +1 -1
  240. package/lib/summary/documentSchema.js +6 -4
  241. package/lib/summary/documentSchema.js.map +1 -1
  242. package/lib/summary/orderedClientElection.d.ts +1 -0
  243. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  244. package/lib/summary/orderedClientElection.js +13 -11
  245. package/lib/summary/orderedClientElection.js.map +1 -1
  246. package/lib/summary/runWhileConnectedCoordinator.d.ts +1 -0
  247. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  248. package/lib/summary/runWhileConnectedCoordinator.js +7 -2
  249. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  250. package/lib/summary/runningSummarizer.d.ts +2 -2
  251. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  252. package/lib/summary/runningSummarizer.js +38 -17
  253. package/lib/summary/runningSummarizer.js.map +1 -1
  254. package/lib/summary/summarizer.d.ts +1 -0
  255. package/lib/summary/summarizer.d.ts.map +1 -1
  256. package/lib/summary/summarizer.js +18 -9
  257. package/lib/summary/summarizer.js.map +1 -1
  258. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  259. package/lib/summary/summarizerClientElection.js +1 -0
  260. package/lib/summary/summarizerClientElection.js.map +1 -1
  261. package/lib/summary/summarizerHeuristics.js +1 -1
  262. package/lib/summary/summarizerHeuristics.js.map +1 -1
  263. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  264. package/lib/summary/summarizerNode/index.js.map +1 -1
  265. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  266. package/lib/summary/summarizerNode/summarizerNode.js +30 -31
  267. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  268. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +1 -1
  269. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
  270. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  271. package/lib/summary/summarizerTypes.d.ts +7 -0
  272. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  273. package/lib/summary/summarizerTypes.js.map +1 -1
  274. package/lib/summary/summaryCollection.d.ts +3 -4
  275. package/lib/summary/summaryCollection.d.ts.map +1 -1
  276. package/lib/summary/summaryCollection.js +9 -6
  277. package/lib/summary/summaryCollection.js.map +1 -1
  278. package/lib/summary/summaryFormat.d.ts +4 -1
  279. package/lib/summary/summaryFormat.d.ts.map +1 -1
  280. package/lib/summary/summaryFormat.js +2 -2
  281. package/lib/summary/summaryFormat.js.map +1 -1
  282. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  283. package/lib/summary/summaryGenerator.js +19 -8
  284. package/lib/summary/summaryGenerator.js.map +1 -1
  285. package/lib/summary/summaryManager.d.ts.map +1 -1
  286. package/lib/summary/summaryManager.js +12 -9
  287. package/lib/summary/summaryManager.js.map +1 -1
  288. package/package.json +21 -43
  289. package/src/batchTracker.ts +3 -3
  290. package/src/blobManager/blobManager.ts +16 -14
  291. package/src/blobManager/blobManagerSnapSum.ts +8 -8
  292. package/src/channelCollection.ts +63 -44
  293. package/src/connectionTelemetry.ts +12 -6
  294. package/src/containerRuntime.ts +306 -235
  295. package/src/dataStore.ts +6 -3
  296. package/src/dataStoreContext.ts +16 -16
  297. package/src/dataStoreContexts.ts +1 -0
  298. package/src/deltaScheduler.ts +6 -6
  299. package/src/gc/garbageCollection.ts +47 -20
  300. package/src/gc/gcConfigs.ts +9 -1
  301. package/src/gc/gcDefinitions.ts +12 -0
  302. package/src/gc/gcHelpers.ts +9 -4
  303. package/src/gc/gcSummaryStateTracker.ts +3 -1
  304. package/src/gc/gcTelemetry.ts +26 -11
  305. package/src/inboundBatchAggregator.ts +4 -4
  306. package/src/layerCompatState.ts +75 -0
  307. package/src/messageTypes.ts +2 -0
  308. package/src/opLifecycle/README.md +43 -34
  309. package/src/opLifecycle/duplicateBatchDetector.ts +2 -2
  310. package/src/opLifecycle/opCompressor.ts +16 -23
  311. package/src/opLifecycle/opDecompressor.ts +4 -1
  312. package/src/opLifecycle/opGroupingManager.ts +5 -4
  313. package/src/opLifecycle/opSplitter.ts +14 -11
  314. package/src/opLifecycle/outbox.ts +13 -20
  315. package/src/opLifecycle/remoteMessageProcessor.ts +3 -1
  316. package/src/packageVersion.ts +1 -1
  317. package/src/pendingStateManager.ts +15 -10
  318. package/src/summary/documentSchema.ts +11 -4
  319. package/src/summary/orderedClientElection.ts +14 -11
  320. package/src/summary/runWhileConnectedCoordinator.ts +6 -0
  321. package/src/summary/runningSummarizer.ts +43 -19
  322. package/src/summary/summarizer.ts +24 -11
  323. package/src/summary/summarizerClientElection.ts +2 -0
  324. package/src/summary/summarizerHeuristics.ts +1 -1
  325. package/src/summary/summarizerNode/index.ts +1 -0
  326. package/src/summary/summarizerNode/summarizerNode.ts +32 -31
  327. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -4
  328. package/src/summary/summarizerTypes.ts +7 -0
  329. package/src/summary/summaryCollection.ts +19 -8
  330. package/src/summary/summaryFormat.ts +10 -5
  331. package/src/summary/summaryGenerator.ts +25 -10
  332. package/src/summary/summaryManager.ts +14 -12
  333. package/container-runtime.test-files.tar +0 -0
@@ -198,20 +198,23 @@ export class SummarizerNode implements IRootSummarizerNode {
198
198
  this.wipSummarizeCalled = true;
199
199
 
200
200
  // Try to reuse the tree if unchanged
201
- if (this.canReuseHandle && !fullTree && !this.hasChanged()) {
202
- if (this._lastSummaryReferenceSequenceNumber !== undefined) {
203
- this.wipSkipRecursion = true;
204
- const stats = mergeStats();
205
- stats.handleNodeCount++;
206
- return {
207
- summary: {
208
- type: SummaryType.Handle,
209
- handle: this.summaryHandleId,
210
- handleType: SummaryType.Tree,
211
- },
212
- stats,
213
- };
214
- }
201
+ if (
202
+ this.canReuseHandle &&
203
+ !fullTree &&
204
+ !this.hasChanged() &&
205
+ this._lastSummaryReferenceSequenceNumber !== undefined
206
+ ) {
207
+ this.wipSkipRecursion = true;
208
+ const stats = mergeStats();
209
+ stats.handleNodeCount++;
210
+ return {
211
+ summary: {
212
+ type: SummaryType.Handle,
213
+ handle: this.summaryHandleId,
214
+ handleType: SummaryType.Tree,
215
+ },
216
+ stats,
217
+ };
215
218
  }
216
219
 
217
220
  let incrementalSummaryContext: IExperimentalIncrementalSummaryContext | undefined;
@@ -221,14 +224,14 @@ export class SummarizerNode implements IRootSummarizerNode {
221
224
  0x5df /* Summarize should not be called when not tracking the summary */,
222
225
  );
223
226
  incrementalSummaryContext =
224
- this._lastSummaryReferenceSequenceNumber !== undefined
225
- ? {
227
+ this._lastSummaryReferenceSequenceNumber === undefined
228
+ ? undefined
229
+ : {
226
230
  summarySequenceNumber: this.wipReferenceSequenceNumber,
227
231
  latestSummarySequenceNumber: this._lastSummaryReferenceSequenceNumber,
228
232
  // TODO: remove summaryPath.
229
233
  summaryPath: this.summaryHandleId,
230
- }
231
- : undefined;
234
+ };
232
235
  }
233
236
 
234
237
  const result = await this.summarizeInternalFn(
@@ -340,17 +343,15 @@ export class SummarizerNode implements IRootSummarizerNode {
340
343
  this.wipReferenceSequenceNumber !== undefined,
341
344
  0x1a4 /* "Not tracking a summary" */,
342
345
  );
343
- if (parentSkipRecursion) {
344
- if (this._lastSummaryReferenceSequenceNumber === undefined) {
345
- // This case the child is added after the latest non-failure summary.
346
- // This node and all children should consider themselves as still not
347
- // having a successful summary yet.
348
- // We cannot "reuse" this node if unchanged since that summary, because
349
- // handles will be unable to point to that node. It never made it to the
350
- // tree itself, and only exists as an attach op in the _outstandingOps.
351
- this.clearSummary();
352
- return;
353
- }
346
+ if (parentSkipRecursion && this._lastSummaryReferenceSequenceNumber === undefined) {
347
+ // This case the child is added after the latest non-failure summary.
348
+ // This node and all children should consider themselves as still not
349
+ // having a successful summary yet.
350
+ // We cannot "reuse" this node if unchanged since that summary, because
351
+ // handles will be unable to point to that node. It never made it to the
352
+ // tree itself, and only exists as an attach op in the _outstandingOps.
353
+ this.clearSummary();
354
+ return;
354
355
  }
355
356
 
356
357
  for (const child of this.children.values()) {
@@ -617,9 +618,9 @@ export class SummarizerNode implements IRootSummarizerNode {
617
618
  }
618
619
  // In case we have pending summaries on the parent, let's initialize it on the child.
619
620
  if (child._lastSummaryReferenceSequenceNumber !== undefined) {
620
- this.pendingSummaries.forEach((pendingSummaryInfo, proposedHandle) => {
621
+ for (const [proposedHandle, pendingSummaryInfo] of this.pendingSummaries.entries()) {
621
622
  child.addPendingSummary(proposedHandle, pendingSummaryInfo);
622
- });
623
+ }
623
624
  }
624
625
  }
625
626
 
@@ -51,7 +51,7 @@ interface PendingSummaryInfoWithGC extends PendingSummaryInfo {
51
51
  * - Manages the used routes of this node. These are used to identify if this node is referenced in the document
52
52
  * and to determine if the node's used state changed since last summary.
53
53
  *
54
- * - Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls
54
+ *- Adds trackState param to summarize. If trackState is false, it bypasses the SummarizerNode and calls
55
55
  * directly into summarizeInternal method.
56
56
  */
57
57
  export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummarizerNodeWithGC {
@@ -156,8 +156,8 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
156
156
  this.gcData = cloneGCData(baseGCDetails.gcData);
157
157
  }
158
158
  if (baseGCDetails.usedRoutes !== undefined) {
159
- this.usedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
160
- this.referenceUsedRoutes = Array.from(baseGCDetails.usedRoutes).sort();
159
+ this.usedRoutes = [...baseGCDetails.usedRoutes].sort();
160
+ this.referenceUsedRoutes = [...baseGCDetails.usedRoutes].sort();
161
161
  }
162
162
  }
163
163
 
@@ -427,7 +427,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
427
427
  const pendingSummaryWithGC = pendingSummary as PendingSummaryInfoWithGC;
428
428
  if (pendingSummaryWithGC.serializedUsedRoutes !== undefined) {
429
429
  const childNodeUsedRoutes = unpackChildNodesUsedRoutes(
430
- JSON.parse(pendingSummaryWithGC.serializedUsedRoutes),
430
+ JSON.parse(pendingSummaryWithGC.serializedUsedRoutes) as string[],
431
431
  );
432
432
  const newSerializedRoutes = childNodeUsedRoutes.get(id) ?? [""];
433
433
  const childPendingSummaryInfo = {
@@ -41,6 +41,7 @@ import { SummarizeReason } from "./summaryGenerator.js";
41
41
  * @param T - cancellation reason type
42
42
  * @legacy
43
43
  * @alpha
44
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
44
45
  */
45
46
  export interface ICancellationToken<T> {
46
47
  /**
@@ -58,6 +59,7 @@ export interface ICancellationToken<T> {
58
59
  * Similar to AbortSignal, but using promise instead of events
59
60
  * @legacy
60
61
  * @alpha
62
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
61
63
  */
62
64
  export type ISummaryCancellationToken = ICancellationToken<SummarizerStopReason>;
63
65
 
@@ -65,6 +67,7 @@ export type ISummaryCancellationToken = ICancellationToken<SummarizerStopReason>
65
67
  * Data required to update internal tracking state after receiving a Summary Ack.
66
68
  * @legacy
67
69
  * @alpha
70
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
68
71
  */
69
72
  export interface IRefreshSummaryAckOptions {
70
73
  /**
@@ -88,6 +91,7 @@ export interface IRefreshSummaryAckOptions {
88
91
  /**
89
92
  * @legacy
90
93
  * @alpha
94
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
91
95
  */
92
96
  export interface ISummarizerInternalsProvider {
93
97
  /**
@@ -112,6 +116,7 @@ export interface ISummarizingWarning extends ContainerWarning {
112
116
  /**
113
117
  * @legacy
114
118
  * @alpha
119
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
115
120
  */
116
121
  export interface IConnectableRuntime {
117
122
  readonly disposed: boolean;
@@ -123,6 +128,7 @@ export interface IConnectableRuntime {
123
128
  /**
124
129
  * @legacy
125
130
  * @alpha
131
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
126
132
  */
127
133
  export interface ISummarizerRuntime extends IConnectableRuntime {
128
134
  readonly baseLogger: ITelemetryBaseLogger;
@@ -158,6 +164,7 @@ export interface ISummarizeOptions {
158
164
  /**
159
165
  * @legacy
160
166
  * @alpha
167
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
161
168
  */
162
169
  export interface ISubmitSummaryOptions extends ISummarizeOptions {
163
170
  /**
@@ -5,7 +5,11 @@
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IDeltaManager } from "@fluidframework/container-definitions/internal";
8
- import { IDisposable, IEvent } from "@fluidframework/core-interfaces";
8
+ import {
9
+ IDisposable,
10
+ IEvent,
11
+ type ITelemetryBaseLogger,
12
+ } from "@fluidframework/core-interfaces";
9
13
  import { assert, Deferred } from "@fluidframework/core-utils/internal";
10
14
  import {
11
15
  IDocumentMessage,
@@ -15,7 +19,10 @@ import {
15
19
  MessageType,
16
20
  ISequencedDocumentMessage,
17
21
  } from "@fluidframework/driver-definitions/internal";
18
- import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
22
+ import {
23
+ createChildLogger,
24
+ ITelemetryLoggerExt,
25
+ } from "@fluidframework/telemetry-utils/internal";
19
26
 
20
27
  /**
21
28
  * Interface for summary op messages with typed contents.
@@ -284,12 +291,14 @@ export class SummaryCollection extends TypedEventEmitter<ISummaryCollectionOpEve
284
291
  this.deltaManager.off("op", listener);
285
292
  }
286
293
 
294
+ private readonly logger: ITelemetryLoggerExt;
287
295
  public constructor(
288
296
  private readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>,
289
- private readonly logger: ITelemetryLoggerExt,
297
+ logger: ITelemetryBaseLogger,
290
298
  ) {
291
299
  super();
292
300
  this.deltaManager.on("op", (op) => this.handleOp(op));
301
+ this.logger = createChildLogger({ logger });
293
302
  }
294
303
 
295
304
  /**
@@ -369,20 +378,22 @@ export class SummaryCollection extends TypedEventEmitter<ISummaryCollectionOpEve
369
378
  const op = { ...opArg };
370
379
 
371
380
  switch (op.type) {
372
- case MessageType.Summarize:
381
+ case MessageType.Summarize: {
373
382
  this.parseContent(op);
374
383
  return this.handleSummaryOp(op as ISummaryOpMessage);
384
+ }
375
385
  case MessageType.SummaryAck:
376
- case MessageType.SummaryNack:
386
+ case MessageType.SummaryNack: {
377
387
  // Old files (prior to PR #10077) may not contain this info
378
- if (op.data !== undefined) {
379
- op.contents = JSON.parse(op.data);
380
- } else {
388
+ if (op.data === undefined) {
381
389
  this.parseContent(op);
390
+ } else {
391
+ op.contents = JSON.parse(op.data);
382
392
  }
383
393
  return op.type === MessageType.SummaryAck
384
394
  ? this.handleSummaryAck(op as ISummaryAckMessage)
385
395
  : this.handleSummaryNack(op as ISummaryNackMessage);
396
+ }
386
397
  default: {
387
398
  // If the difference between timestamp of current op and last summary op is greater than
388
399
  // the maxAckWaitTime, then we need to inform summarizer to not wait and summarize
@@ -10,10 +10,7 @@ import {
10
10
  ISnapshotTree,
11
11
  ISequencedDocumentMessage,
12
12
  } from "@fluidframework/driver-definitions/internal";
13
- import {
14
- blobHeadersBlobName as blobNameForBlobHeaders,
15
- readAndParse,
16
- } from "@fluidframework/driver-utils/internal";
13
+ import { readAndParse } from "@fluidframework/driver-utils/internal";
17
14
  import {
18
15
  ISummaryTreeWithStats,
19
16
  channelsTreeName,
@@ -21,8 +18,10 @@ import {
21
18
  } from "@fluidframework/runtime-definitions/internal";
22
19
 
23
20
  import { blobsTreeName } from "../blobManager/index.js";
21
+ // eslint-disable-next-line import/no-deprecated
24
22
  import { IGCMetadata } from "../gc/index.js";
25
23
 
24
+ // eslint-disable-next-line import/no-deprecated
26
25
  import { IDocumentSchema } from "./documentSchema.js";
27
26
 
28
27
  /**
@@ -130,7 +129,9 @@ export function hasIsolatedChannels(attributes: ReadFluidDataStoreAttributes): b
130
129
  /**
131
130
  * @legacy
132
131
  * @alpha
132
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
133
133
  */
134
+ // eslint-disable-next-line import/no-deprecated
134
135
  export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGCMetadata {
135
136
  readonly summaryFormatVersion: 1;
136
137
  /**
@@ -154,12 +155,14 @@ export interface IContainerRuntimeMetadata extends ICreateContainerMetadata, IGC
154
155
  */
155
156
  readonly telemetryDocumentId?: string;
156
157
 
158
+ // eslint-disable-next-line import/no-deprecated
157
159
  readonly documentSchema?: IDocumentSchema;
158
160
  }
159
161
 
160
162
  /**
161
163
  * @legacy
162
164
  * @alpha
165
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
163
166
  */
164
167
  export interface ICreateContainerMetadata {
165
168
  /**
@@ -176,6 +179,7 @@ export interface ICreateContainerMetadata {
176
179
  * The properties of an ISequencedDocumentMessage to be stored in the metadata blob in summary.
177
180
  * @legacy
178
181
  * @alpha
182
+ * @deprecated This type will be moved to internal in 2.30. External usage is not necessary or supported.
179
183
  */
180
184
  export type ISummaryMetadataMessage = Pick<
181
185
  ISequencedDocumentMessage,
@@ -227,7 +231,6 @@ export const chunksBlobName = ".chunks";
227
231
  export const recentBatchInfoBlobName = ".recentBatchInfo";
228
232
  export const electedSummarizerBlobName = ".electedSummarizer";
229
233
  export const idCompressorBlobName = ".idCompressor";
230
- export const blobHeadersBlobName = blobNameForBlobHeaders;
231
234
 
232
235
  export function rootHasIsolatedChannels(metadata?: IContainerRuntimeMetadata): boolean {
233
236
  return !!metadata && !metadata.disableIsolatedChannels;
@@ -308,3 +311,5 @@ export async function getFluidDataStoreAttributes(
308
311
  assert(formatVersion > 0, 0x1d5 /* Invalid snapshot format version */);
309
312
  return attributes;
310
313
  }
314
+
315
+ export { blobHeadersBlobName } from "@fluidframework/driver-utils/internal";
@@ -25,10 +25,13 @@ import {
25
25
  IAckSummaryResult,
26
26
  IBroadcastSummaryResult,
27
27
  INackSummaryResult,
28
+ // eslint-disable-next-line import/no-deprecated
28
29
  IRefreshSummaryAckOptions,
30
+ // eslint-disable-next-line import/no-deprecated
29
31
  ISubmitSummaryOptions,
30
32
  ISummarizeHeuristicData,
31
33
  ISummarizeResults,
34
+ // eslint-disable-next-line import/no-deprecated
32
35
  ISummaryCancellationToken,
33
36
  SubmitSummaryFailureData,
34
37
  SubmitSummaryResult,
@@ -49,6 +52,7 @@ export type raceTimerResult<T> =
49
52
  export async function raceTimer<T>(
50
53
  promise: Promise<T>,
51
54
  timer: Promise<IPromiseTimerResult>,
55
+ // eslint-disable-next-line import/no-deprecated
52
56
  cancellationToken?: ISummaryCancellationToken,
53
57
  ): Promise<raceTimerResult<T>> {
54
58
  const promises: Promise<raceTimerResult<T>>[] = [
@@ -211,10 +215,12 @@ export class SummaryGenerator {
211
215
  private readonly pendingAckTimer: IPromiseTimer,
212
216
  private readonly heuristicData: ISummarizeHeuristicData,
213
217
  private readonly submitSummaryCallback: (
218
+ // eslint-disable-next-line import/no-deprecated
214
219
  options: ISubmitSummaryOptions,
215
220
  ) => Promise<SubmitSummaryResult>,
216
221
  private readonly successfulSummaryCallback: () => void,
217
222
  private readonly refreshLatestSummaryCallback: (
223
+ // eslint-disable-next-line import/no-deprecated
218
224
  options: IRefreshSummaryAckOptions,
219
225
  ) => Promise<void>,
220
226
  private readonly summaryWatcher: Pick<IClientSummaryWatcher, "watchSummary">,
@@ -232,19 +238,23 @@ export class SummaryGenerator {
232
238
  * @param resultsBuilder - optional, result builder to use to build pass or fail result.
233
239
  */
234
240
  public summarize(
241
+ // eslint-disable-next-line import/no-deprecated
235
242
  summaryOptions: ISubmitSummaryOptions,
236
243
  resultsBuilder = new SummarizeResultBuilder(),
237
244
  ): ISummarizeResults {
238
- this.summarizeCore(summaryOptions, resultsBuilder).catch((error) => {
239
- const message = "UnexpectedSummarizeError";
240
- summaryOptions.summaryLogger.sendErrorEvent({ eventName: message }, error);
241
- resultsBuilder.fail(message, error);
242
- });
245
+ this.summarizeCore(summaryOptions, resultsBuilder).catch(
246
+ (error: IRetriableFailureError) => {
247
+ const message = "UnexpectedSummarizeError";
248
+ summaryOptions.summaryLogger.sendErrorEvent({ eventName: message }, error);
249
+ resultsBuilder.fail(message, error);
250
+ },
251
+ );
243
252
 
244
253
  return resultsBuilder.build();
245
254
  }
246
255
 
247
256
  private async summarizeCore(
257
+ // eslint-disable-next-line import/no-deprecated
248
258
  submitSummaryOptions: ISubmitSummaryOptions,
249
259
  resultsBuilder: SummarizeResultBuilder,
250
260
  ): Promise<void> {
@@ -521,17 +531,19 @@ export class SummaryGenerator {
521
531
  initialProps: SummaryGeneratorTelemetry,
522
532
  ): SummaryGeneratorTelemetry {
523
533
  switch (summaryData.stage) {
524
- case "base":
534
+ case "base": {
525
535
  return initialProps;
536
+ }
526
537
 
527
- case "generate":
538
+ case "generate": {
528
539
  return {
529
540
  ...initialProps,
530
541
  ...summaryData.summaryStats,
531
542
  generateDuration: summaryData.generateDuration,
532
543
  };
544
+ }
533
545
 
534
- case "upload":
546
+ case "upload": {
535
547
  return {
536
548
  ...initialProps,
537
549
  ...summaryData.summaryStats,
@@ -539,8 +551,9 @@ export class SummaryGenerator {
539
551
  handle: summaryData.handle,
540
552
  uploadDuration: summaryData.uploadDuration,
541
553
  };
554
+ }
542
555
 
543
- case "submit":
556
+ case "submit": {
544
557
  return {
545
558
  ...initialProps,
546
559
  ...summaryData.summaryStats,
@@ -553,9 +566,11 @@ export class SummaryGenerator {
553
566
  nonRuntimeOpsSinceLastSummary: this.heuristicData.numNonRuntimeOps,
554
567
  runtimeOpsSinceLastSummary: this.heuristicData.numRuntimeOps,
555
568
  };
569
+ }
556
570
 
557
- default:
571
+ default: {
558
572
  assert(true, 0x397 /* Unexpected summary stage */);
573
+ }
559
574
  }
560
575
 
561
576
  return initialProps;
@@ -24,6 +24,7 @@ import {
24
24
 
25
25
  import { IThrottler } from "../throttler.js";
26
26
 
27
+ // eslint-disable-next-line import/no-deprecated
27
28
  import { Summarizer } from "./summarizer.js";
28
29
  import { ISummarizerClientElection } from "./summarizerClientElection.js";
29
30
  import {
@@ -284,6 +285,7 @@ export class SummaryManager
284
285
  // which would happen when we have a high enough number of unsummarized ops.
285
286
  if (
286
287
  startWithInitialDelay ||
288
+ // eslint-disable-next-line import/no-deprecated
287
289
  !Summarizer.stopReasonCanRunLastSummary(shouldSummarizeState.stopReason)
288
290
  ) {
289
291
  this.state = SummaryManagerState.Starting;
@@ -406,7 +408,7 @@ export class SummaryManager
406
408
  }
407
409
 
408
410
  if (delayMs > 0) {
409
- let timer;
411
+ let timer: number | undefined;
410
412
  let resolveOpPromiseFn: (value: void | PromiseLike<void>) => void;
411
413
  // Create a listener that will break the delay if we've exceeded the initial delay ops count.
412
414
  const opsListenerFn = (): void => {
@@ -432,7 +434,7 @@ export class SummaryManager
432
434
 
433
435
  public summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults {
434
436
  if (this.summarizer === undefined) {
435
- throw Error("No running summarizer client");
437
+ throw new Error("No running summarizer client");
436
438
  // TODO: could spawn a summarizer client temporarily.
437
439
  }
438
440
  return this.summarizer.summarizeOnDemand(options);
@@ -440,7 +442,7 @@ export class SummaryManager
440
442
 
441
443
  public enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {
442
444
  if (this.summarizer === undefined) {
443
- throw Error("No running summarizer client");
445
+ throw new Error("No running summarizer client");
444
446
  // TODO: could spawn a summarizer client temporarily.
445
447
  }
446
448
  return this.summarizer.enqueueSummarize(options);
@@ -457,28 +459,28 @@ export class SummaryManager
457
459
  private readonly forwardedEvents = new Map<string, () => void>();
458
460
 
459
461
  private setupForwardedEvents(): void {
460
- [
462
+ for (const event of [
461
463
  "summarize",
462
464
  "summarizeAllAttemptsFailed",
463
465
  "summarizerStop",
464
466
  "summarizerStart",
465
467
  "summarizerStartupFailed",
466
- ].forEach((event) => {
467
- const listener = (...args: any[]): void => {
468
+ ]) {
469
+ const listener = (...args: unknown[]): void => {
468
470
  this.emit(event, ...args);
469
471
  };
470
472
  // TODO: better typing here
471
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
473
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
472
474
  this.summarizer?.on(event as any, listener);
473
475
  this.forwardedEvents.set(event, listener);
474
- });
476
+ }
475
477
  }
476
478
 
477
479
  private cleanupForwardedEvents(): void {
478
- this.forwardedEvents.forEach((listener, event) =>
479
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
480
- this.summarizer?.off(event as any, listener),
481
- );
480
+ for (const [event, listener] of this.forwardedEvents.entries()) {
481
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-unsafe-argument
482
+ this.summarizer?.off(event as any, listener);
483
+ }
482
484
  this.forwardedEvents.clear();
483
485
  }
484
486
  }
Binary file