@fluidframework/container-runtime 2.0.0-rc.1.0.3 → 2.0.0-rc.2.0.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 (690) hide show
  1. package/{.eslintrc.js → .eslintrc.cjs} +5 -5
  2. package/{.mocharc.js → .mocharc.cjs} +1 -1
  3. package/CHANGELOG.md +54 -0
  4. package/README.md +45 -0
  5. package/{api-extractor-esm.json → api-extractor-cjs.json} +5 -1
  6. package/api-extractor-lint.json +1 -1
  7. package/api-extractor.json +1 -1
  8. package/api-report/container-runtime.api.md +68 -30
  9. package/dist/batchTracker.d.ts +1 -2
  10. package/dist/batchTracker.d.ts.map +1 -1
  11. package/dist/batchTracker.js.map +1 -1
  12. package/dist/blobManager.js.map +1 -1
  13. package/dist/channelCollection.d.ts +223 -0
  14. package/dist/channelCollection.d.ts.map +1 -0
  15. package/dist/{dataStores.js → channelCollection.js} +399 -83
  16. package/dist/channelCollection.js.map +1 -0
  17. package/dist/connectionTelemetry.d.ts +11 -1
  18. package/dist/connectionTelemetry.d.ts.map +1 -1
  19. package/dist/connectionTelemetry.js +42 -4
  20. package/dist/connectionTelemetry.js.map +1 -1
  21. package/dist/container-runtime-alpha.d.ts +98 -40
  22. package/dist/container-runtime-beta.d.ts +27 -9
  23. package/dist/container-runtime-public.d.ts +27 -9
  24. package/dist/container-runtime-untrimmed.d.ts +123 -40
  25. package/dist/containerHandleContext.d.ts +1 -1
  26. package/dist/containerHandleContext.d.ts.map +1 -1
  27. package/dist/containerHandleContext.js.map +1 -1
  28. package/dist/containerRuntime.d.ts +79 -55
  29. package/dist/containerRuntime.d.ts.map +1 -1
  30. package/dist/containerRuntime.js +541 -411
  31. package/dist/containerRuntime.js.map +1 -1
  32. package/dist/dataStore.d.ts +2 -3
  33. package/dist/dataStore.d.ts.map +1 -1
  34. package/dist/dataStore.js +12 -11
  35. package/dist/dataStore.js.map +1 -1
  36. package/dist/dataStoreContext.d.ts +71 -30
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +182 -141
  39. package/dist/dataStoreContext.js.map +1 -1
  40. package/dist/dataStoreContexts.d.ts +1 -1
  41. package/dist/dataStoreContexts.d.ts.map +1 -1
  42. package/dist/dataStoreContexts.js.map +1 -1
  43. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  44. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  45. package/dist/deltaManagerSummarizerProxy.js +91 -5
  46. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  47. package/dist/gc/garbageCollection.d.ts +22 -5
  48. package/dist/gc/garbageCollection.d.ts.map +1 -1
  49. package/dist/gc/garbageCollection.js +134 -75
  50. package/dist/gc/garbageCollection.js.map +1 -1
  51. package/dist/gc/gcConfigs.d.ts +2 -2
  52. package/dist/gc/gcConfigs.d.ts.map +1 -1
  53. package/dist/gc/gcConfigs.js +21 -21
  54. package/dist/gc/gcConfigs.js.map +1 -1
  55. package/dist/gc/gcDefinitions.d.ts +29 -6
  56. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  57. package/dist/gc/gcDefinitions.js +5 -1
  58. package/dist/gc/gcDefinitions.js.map +1 -1
  59. package/dist/gc/gcHelpers.d.ts +2 -2
  60. package/dist/gc/gcHelpers.d.ts.map +1 -1
  61. package/dist/gc/gcHelpers.js.map +1 -1
  62. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  63. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  64. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  65. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  66. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryStateTracker.js +18 -6
  68. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  69. package/dist/gc/gcTelemetry.d.ts +7 -7
  70. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  71. package/dist/gc/gcTelemetry.js +20 -20
  72. package/dist/gc/gcTelemetry.js.map +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.d.ts +6 -1
  74. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  75. package/dist/gc/gcUnreferencedStateTracker.js +22 -11
  76. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  77. package/dist/gc/index.d.ts +8 -8
  78. package/dist/gc/index.d.ts.map +1 -1
  79. package/dist/gc/index.js +40 -38
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/index.d.ts +8 -20
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +28 -40
  84. package/dist/index.js.map +1 -1
  85. package/dist/messageTypes.d.ts +4 -4
  86. package/dist/messageTypes.d.ts.map +1 -1
  87. package/dist/messageTypes.js.map +1 -1
  88. package/dist/opLifecycle/batchManager.d.ts +2 -2
  89. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  90. package/dist/opLifecycle/batchManager.js.map +1 -1
  91. package/dist/opLifecycle/definitions.d.ts +2 -2
  92. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  93. package/dist/opLifecycle/definitions.js.map +1 -1
  94. package/dist/opLifecycle/index.d.ts +8 -8
  95. package/dist/opLifecycle/index.d.ts.map +1 -1
  96. package/dist/opLifecycle/index.js +18 -18
  97. package/dist/opLifecycle/index.js.map +1 -1
  98. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  99. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  100. package/dist/opLifecycle/opCompressor.js +4 -4
  101. package/dist/opLifecycle/opCompressor.js.map +1 -1
  102. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  103. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  104. package/dist/opLifecycle/opDecompressor.js +3 -3
  105. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  106. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  107. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  108. package/dist/opLifecycle/opGroupingManager.js +1 -10
  109. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  110. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  111. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  112. package/dist/opLifecycle/opSplitter.js +5 -5
  113. package/dist/opLifecycle/opSplitter.js.map +1 -1
  114. package/dist/opLifecycle/outbox.d.ts +7 -7
  115. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  116. package/dist/opLifecycle/outbox.js +20 -12
  117. package/dist/opLifecycle/outbox.js.map +1 -1
  118. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  119. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  120. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  121. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  122. package/dist/package.json +3 -0
  123. package/dist/packageVersion.d.ts +1 -1
  124. package/dist/packageVersion.js +1 -1
  125. package/dist/packageVersion.js.map +1 -1
  126. package/dist/pendingStateManager.d.ts +2 -1
  127. package/dist/pendingStateManager.d.ts.map +1 -1
  128. package/dist/pendingStateManager.js +18 -10
  129. package/dist/pendingStateManager.js.map +1 -1
  130. package/dist/scheduleManager.d.ts +1 -2
  131. package/dist/scheduleManager.d.ts.map +1 -1
  132. package/dist/scheduleManager.js +5 -5
  133. package/dist/scheduleManager.js.map +1 -1
  134. package/dist/summary/index.d.ts +12 -12
  135. package/dist/summary/index.d.ts.map +1 -1
  136. package/dist/summary/index.js +43 -43
  137. package/dist/summary/index.js.map +1 -1
  138. package/dist/summary/orderedClientElection.js +8 -8
  139. package/dist/summary/orderedClientElection.js.map +1 -1
  140. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  141. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  142. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  143. package/dist/summary/runningSummarizer.d.ts +11 -10
  144. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  145. package/dist/summary/runningSummarizer.js +114 -81
  146. package/dist/summary/runningSummarizer.js.map +1 -1
  147. package/dist/summary/summarizer.d.ts +4 -4
  148. package/dist/summary/summarizer.d.ts.map +1 -1
  149. package/dist/summary/summarizer.js +6 -6
  150. package/dist/summary/summarizer.js.map +1 -1
  151. package/dist/summary/summarizerClientElection.d.ts +2 -2
  152. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  153. package/dist/summary/summarizerClientElection.js.map +1 -1
  154. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  155. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  156. package/dist/summary/summarizerHeuristics.js.map +1 -1
  157. package/dist/summary/summarizerNode/index.d.ts +3 -3
  158. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  159. package/dist/summary/summarizerNode/index.js +4 -4
  160. package/dist/summary/summarizerNode/index.js.map +1 -1
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  162. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  163. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  164. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  168. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  172. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  173. package/dist/summary/summarizerTypes.d.ts +10 -21
  174. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  175. package/dist/summary/summarizerTypes.js.map +1 -1
  176. package/dist/summary/summaryFormat.d.ts +15 -2
  177. package/dist/summary/summaryFormat.d.ts.map +1 -1
  178. package/dist/summary/summaryFormat.js.map +1 -1
  179. package/dist/summary/summaryGenerator.d.ts +6 -5
  180. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  181. package/dist/summary/summaryGenerator.js +10 -1
  182. package/dist/summary/summaryGenerator.js.map +1 -1
  183. package/dist/summary/summaryManager.d.ts +5 -6
  184. package/dist/summary/summaryManager.d.ts.map +1 -1
  185. package/dist/summary/summaryManager.js +4 -5
  186. package/dist/summary/summaryManager.js.map +1 -1
  187. package/dist/tsdoc-metadata.json +1 -1
  188. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  189. package/lib/batchTracker.d.ts.map +1 -0
  190. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  191. package/lib/batchTracker.js.map +1 -0
  192. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
  193. package/lib/blobManager.d.ts.map +1 -0
  194. package/lib/{blobManager.mjs → blobManager.js} +1 -1
  195. package/lib/blobManager.js.map +1 -0
  196. package/lib/channelCollection.d.ts +223 -0
  197. package/lib/channelCollection.d.ts.map +1 -0
  198. package/lib/{dataStores.mjs → channelCollection.js} +384 -71
  199. package/lib/channelCollection.js.map +1 -0
  200. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  201. package/lib/connectionTelemetry.d.ts.map +1 -0
  202. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  203. package/lib/connectionTelemetry.js.map +1 -0
  204. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +98 -40
  205. package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
  206. package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
  207. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +123 -40
  208. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  209. package/lib/containerHandleContext.d.ts.map +1 -0
  210. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  211. package/lib/containerHandleContext.js.map +1 -0
  212. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +84 -56
  213. package/lib/containerRuntime.d.ts.map +1 -0
  214. package/lib/{containerRuntime.mjs → containerRuntime.js} +460 -332
  215. package/lib/containerRuntime.js.map +1 -0
  216. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  217. package/lib/dataStore.d.ts.map +1 -0
  218. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  219. package/lib/dataStore.js.map +1 -0
  220. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +72 -31
  221. package/lib/dataStoreContext.d.ts.map +1 -0
  222. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +174 -133
  223. package/lib/dataStoreContext.js.map +1 -0
  224. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
  225. package/lib/dataStoreContexts.d.ts.map +1 -0
  226. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
  227. package/lib/dataStoreContexts.js.map +1 -0
  228. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  229. package/lib/dataStoreRegistry.d.ts.map +1 -0
  230. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  231. package/lib/dataStoreRegistry.js.map +1 -0
  232. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  233. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  234. package/lib/deltaManagerSummarizerProxy.js +124 -0
  235. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  236. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  237. package/lib/deltaScheduler.d.ts.map +1 -0
  238. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  239. package/lib/deltaScheduler.js.map +1 -0
  240. package/lib/{error.d.mts → error.d.ts} +1 -1
  241. package/lib/error.d.ts.map +1 -0
  242. package/lib/{error.mjs → error.js} +1 -1
  243. package/lib/error.js.map +1 -0
  244. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +23 -6
  245. package/lib/gc/garbageCollection.d.ts.map +1 -0
  246. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +103 -44
  247. package/lib/gc/garbageCollection.js.map +1 -0
  248. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  249. package/lib/gc/gcConfigs.d.ts.map +1 -0
  250. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
  251. package/lib/gc/gcConfigs.js.map +1 -0
  252. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +30 -7
  253. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  254. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +5 -1
  255. package/lib/gc/gcDefinitions.js.map +1 -0
  256. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  257. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  258. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  259. package/lib/gc/gcHelpers.js.map +1 -0
  260. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  261. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  262. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  263. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  264. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  265. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  266. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  267. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  268. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  269. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  270. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  271. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  272. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +8 -8
  273. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  274. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -5
  275. package/lib/gc/gcTelemetry.js.map +1 -0
  276. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +7 -2
  277. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  278. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +12 -2
  279. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  280. package/lib/gc/{index.d.mts → index.d.ts} +9 -9
  281. package/lib/gc/index.d.ts.map +1 -0
  282. package/lib/gc/{index.mjs → index.js} +8 -8
  283. package/lib/gc/index.js.map +1 -0
  284. package/lib/{index.d.mts → index.d.ts} +9 -21
  285. package/lib/index.d.ts.map +1 -0
  286. package/lib/index.js +12 -0
  287. package/lib/index.js.map +1 -0
  288. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  289. package/lib/messageTypes.d.ts.map +1 -0
  290. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  291. package/lib/messageTypes.js.map +1 -0
  292. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  293. package/lib/metadata.d.ts.map +1 -0
  294. package/lib/{metadata.mjs → metadata.js} +1 -1
  295. package/lib/metadata.js.map +1 -0
  296. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  297. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  298. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  299. package/lib/opLifecycle/batchManager.js.map +1 -0
  300. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  301. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  302. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  303. package/lib/opLifecycle/definitions.js.map +1 -0
  304. package/lib/opLifecycle/index.d.ts +13 -0
  305. package/lib/opLifecycle/index.d.ts.map +1 -0
  306. package/lib/opLifecycle/index.js +12 -0
  307. package/lib/opLifecycle/index.js.map +1 -0
  308. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  309. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  310. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  311. package/lib/opLifecycle/opCompressor.js.map +1 -0
  312. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  313. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  314. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  315. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  316. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  317. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  319. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  320. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  321. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  323. package/lib/opLifecycle/opSplitter.js.map +1 -0
  324. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  325. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  326. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  327. package/lib/opLifecycle/outbox.js.map +1 -0
  328. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  329. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  330. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  331. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  332. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  333. package/lib/opProperties.d.ts.map +1 -0
  334. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  335. package/lib/opProperties.js.map +1 -0
  336. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  337. package/lib/packageVersion.d.ts.map +1 -0
  338. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  339. package/lib/packageVersion.js.map +1 -0
  340. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  341. package/lib/pendingStateManager.d.ts.map +1 -0
  342. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  343. package/lib/pendingStateManager.js.map +1 -0
  344. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  345. package/lib/scheduleManager.d.ts.map +1 -0
  346. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  347. package/lib/scheduleManager.js.map +1 -0
  348. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  349. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  350. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  351. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  352. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  353. package/lib/summary/index.d.ts.map +1 -0
  354. package/lib/summary/{index.mjs → index.js} +12 -12
  355. package/lib/summary/index.js.map +1 -0
  356. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  357. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  358. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  359. package/lib/summary/orderedClientElection.js.map +1 -0
  360. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  361. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  362. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  363. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  364. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  365. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  366. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  367. package/lib/summary/runningSummarizer.js.map +1 -0
  368. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  369. package/lib/summary/summarizer.d.ts.map +1 -0
  370. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  371. package/lib/summary/summarizer.js.map +1 -0
  372. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  373. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  374. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  375. package/lib/summary/summarizerClientElection.js.map +1 -0
  376. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  377. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  378. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  379. package/lib/summary/summarizerHeuristics.js.map +1 -0
  380. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  381. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  382. package/lib/summary/summarizerNode/index.js +7 -0
  383. package/lib/summary/summarizerNode/index.js.map +1 -0
  384. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  385. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  386. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  387. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  388. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  389. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  391. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  393. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  395. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  396. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  397. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  398. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  399. package/lib/summary/summarizerTypes.js.map +1 -0
  400. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  401. package/lib/summary/summaryCollection.d.ts.map +1 -0
  402. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  403. package/lib/summary/summaryCollection.js.map +1 -0
  404. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  405. package/lib/summary/summaryFormat.d.ts.map +1 -0
  406. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  407. package/lib/summary/summaryFormat.js.map +1 -0
  408. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  409. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  410. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  411. package/lib/summary/summaryGenerator.js.map +1 -0
  412. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  413. package/lib/summary/summaryManager.d.ts.map +1 -0
  414. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  415. package/lib/summary/summaryManager.js.map +1 -0
  416. package/lib/test/batchTracker.spec.js +88 -0
  417. package/lib/test/batchTracker.spec.js.map +1 -0
  418. package/lib/test/blobManager.spec.js +835 -0
  419. package/lib/test/blobManager.spec.js.map +1 -0
  420. package/lib/test/channelCollection.spec.js +141 -0
  421. package/lib/test/channelCollection.spec.js.map +1 -0
  422. package/lib/test/containerRuntime.spec.js +1748 -0
  423. package/lib/test/containerRuntime.spec.js.map +1 -0
  424. package/lib/test/dataStoreContext.spec.js +801 -0
  425. package/lib/test/dataStoreContext.spec.js.map +1 -0
  426. package/lib/test/dataStoreCreation.spec.js +312 -0
  427. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  428. package/lib/test/dataStoreRegistry.spec.js +26 -0
  429. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  430. package/lib/test/fuzz/fuzzUtils.js +66 -0
  431. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  432. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  433. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  434. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  435. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  436. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  437. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  438. package/lib/test/gc/garbageCollection.spec.js +1465 -0
  439. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  440. package/lib/test/gc/gcConfigs.spec.js +690 -0
  441. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  442. package/lib/test/gc/gcHelpers.spec.js +110 -0
  443. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  444. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  445. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  446. package/lib/test/gc/gcStats.spec.js +391 -0
  447. package/lib/test/gc/gcStats.spec.js.map +1 -0
  448. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  449. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  450. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  451. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  452. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  453. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  454. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  455. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  456. package/lib/test/getPendingBlobs.spec.js +193 -0
  457. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  458. package/lib/test/hardwareStats.spec.js +93 -0
  459. package/lib/test/hardwareStats.spec.js.map +1 -0
  460. package/lib/test/index.js +6 -0
  461. package/lib/test/index.js.map +1 -0
  462. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  463. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  464. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  465. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  466. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  467. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  468. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  469. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  470. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  471. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  473. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  475. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  476. package/lib/test/pendingStateManager.spec.js +329 -0
  477. package/lib/test/pendingStateManager.spec.js.map +1 -0
  478. package/lib/test/scheduleManager.spec.js +270 -0
  479. package/lib/test/scheduleManager.spec.js.map +1 -0
  480. package/lib/test/summarizerNode.spec.js +326 -0
  481. package/lib/test/summarizerNode.spec.js.map +1 -0
  482. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  483. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  484. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  485. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  486. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  487. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  488. package/lib/test/summary/summarizer.spec.js +29 -0
  489. package/lib/test/summary/summarizer.spec.js.map +1 -0
  490. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  491. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  492. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  493. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  494. package/lib/test/summary/summaryCollection.spec.js +200 -0
  495. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  496. package/lib/test/summary/summaryManager.spec.js +430 -0
  497. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  498. package/lib/test/summary/testQuorumClients.js +34 -0
  499. package/lib/test/summary/testQuorumClients.js.map +1 -0
  500. package/lib/test/throttler.spec.js +175 -0
  501. package/lib/test/throttler.spec.js.map +1 -0
  502. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  503. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  504. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  505. package/lib/throttler.d.ts.map +1 -0
  506. package/lib/{throttler.mjs → throttler.js} +1 -1
  507. package/lib/throttler.js.map +1 -0
  508. package/package.json +99 -88
  509. package/src/batchTracker.ts +1 -1
  510. package/src/blobManager.ts +1 -1
  511. package/src/{dataStores.ts → channelCollection.ts} +520 -84
  512. package/src/connectionTelemetry.ts +42 -3
  513. package/src/containerHandleContext.ts +1 -1
  514. package/src/containerRuntime.ts +661 -464
  515. package/src/dataStore.ts +13 -15
  516. package/src/dataStoreContext.ts +257 -184
  517. package/src/dataStoreContexts.ts +1 -1
  518. package/src/deltaManagerSummarizerProxy.ts +132 -7
  519. package/src/gc/garbageCollection.ts +121 -46
  520. package/src/gc/gcConfigs.ts +3 -3
  521. package/src/gc/gcDefinitions.ts +30 -7
  522. package/src/gc/gcHelpers.ts +2 -2
  523. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  524. package/src/gc/gcSummaryStateTracker.ts +19 -7
  525. package/src/gc/gcTelemetry.ts +10 -9
  526. package/src/gc/gcUnreferencedStateTracker.ts +12 -1
  527. package/src/gc/index.ts +10 -8
  528. package/src/index.ts +16 -27
  529. package/src/messageTypes.ts +4 -4
  530. package/src/opLifecycle/README.md +2 -4
  531. package/src/opLifecycle/batchManager.ts +2 -2
  532. package/src/opLifecycle/definitions.ts +2 -2
  533. package/src/opLifecycle/index.ts +8 -8
  534. package/src/opLifecycle/opCompressor.ts +3 -3
  535. package/src/opLifecycle/opDecompressor.ts +3 -3
  536. package/src/opLifecycle/opGroupingManager.ts +3 -12
  537. package/src/opLifecycle/opSplitter.ts +3 -3
  538. package/src/opLifecycle/outbox.ts +29 -9
  539. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  540. package/src/packageVersion.ts +1 -1
  541. package/src/pendingStateManager.ts +19 -13
  542. package/src/scheduleManager.ts +4 -4
  543. package/src/summary/index.ts +13 -12
  544. package/src/summary/orderedClientElection.ts +1 -1
  545. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  546. package/src/summary/runningSummarizer.ts +141 -93
  547. package/src/summary/summarizer.ts +7 -7
  548. package/src/summary/summarizerClientElection.ts +2 -2
  549. package/src/summary/summarizerHeuristics.ts +3 -3
  550. package/src/summary/summarizerNode/index.ts +6 -3
  551. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  552. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  553. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  554. package/src/summary/summarizerTypes.ts +12 -24
  555. package/src/summary/summaryFormat.ts +16 -2
  556. package/src/summary/summaryGenerator.ts +16 -4
  557. package/src/summary/summaryManager.ts +6 -7
  558. package/tsconfig.cjs.json +7 -0
  559. package/tsconfig.json +2 -5
  560. package/dist/dataStores.d.ts +0 -149
  561. package/dist/dataStores.d.ts.map +0 -1
  562. package/dist/dataStores.js.map +0 -1
  563. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  564. package/dist/deltaManagerProxyBase.js +0 -77
  565. package/dist/deltaManagerProxyBase.js.map +0 -1
  566. package/lib/batchTracker.d.mts.map +0 -1
  567. package/lib/batchTracker.mjs.map +0 -1
  568. package/lib/blobManager.d.mts.map +0 -1
  569. package/lib/blobManager.mjs.map +0 -1
  570. package/lib/connectionTelemetry.d.mts.map +0 -1
  571. package/lib/connectionTelemetry.mjs.map +0 -1
  572. package/lib/containerHandleContext.d.mts.map +0 -1
  573. package/lib/containerHandleContext.mjs.map +0 -1
  574. package/lib/containerRuntime.d.mts.map +0 -1
  575. package/lib/containerRuntime.mjs.map +0 -1
  576. package/lib/dataStore.d.mts.map +0 -1
  577. package/lib/dataStore.mjs.map +0 -1
  578. package/lib/dataStoreContext.d.mts.map +0 -1
  579. package/lib/dataStoreContext.mjs.map +0 -1
  580. package/lib/dataStoreContexts.d.mts.map +0 -1
  581. package/lib/dataStoreContexts.mjs.map +0 -1
  582. package/lib/dataStoreRegistry.d.mts.map +0 -1
  583. package/lib/dataStoreRegistry.mjs.map +0 -1
  584. package/lib/dataStores.d.mts +0 -149
  585. package/lib/dataStores.d.mts.map +0 -1
  586. package/lib/dataStores.mjs.map +0 -1
  587. package/lib/deltaManagerProxyBase.d.mts +0 -35
  588. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  589. package/lib/deltaManagerProxyBase.mjs +0 -73
  590. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  591. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  592. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  593. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  594. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  595. package/lib/deltaScheduler.d.mts.map +0 -1
  596. package/lib/deltaScheduler.mjs.map +0 -1
  597. package/lib/error.d.mts.map +0 -1
  598. package/lib/error.mjs.map +0 -1
  599. package/lib/gc/garbageCollection.d.mts.map +0 -1
  600. package/lib/gc/garbageCollection.mjs.map +0 -1
  601. package/lib/gc/gcConfigs.d.mts.map +0 -1
  602. package/lib/gc/gcConfigs.mjs.map +0 -1
  603. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  604. package/lib/gc/gcDefinitions.mjs.map +0 -1
  605. package/lib/gc/gcHelpers.mjs.map +0 -1
  606. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  607. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  608. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  609. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  610. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  611. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  612. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  613. package/lib/gc/gcTelemetry.mjs.map +0 -1
  614. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  615. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  616. package/lib/gc/index.d.mts.map +0 -1
  617. package/lib/gc/index.mjs.map +0 -1
  618. package/lib/index.d.mts.map +0 -1
  619. package/lib/index.mjs +0 -24
  620. package/lib/index.mjs.map +0 -1
  621. package/lib/messageTypes.d.mts.map +0 -1
  622. package/lib/messageTypes.mjs.map +0 -1
  623. package/lib/metadata.d.mts.map +0 -1
  624. package/lib/metadata.mjs.map +0 -1
  625. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  626. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  627. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  628. package/lib/opLifecycle/definitions.mjs.map +0 -1
  629. package/lib/opLifecycle/index.d.mts +0 -13
  630. package/lib/opLifecycle/index.d.mts.map +0 -1
  631. package/lib/opLifecycle/index.mjs +0 -12
  632. package/lib/opLifecycle/index.mjs.map +0 -1
  633. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  634. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  635. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  636. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  637. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  638. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  639. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  640. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  641. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  642. package/lib/opLifecycle/outbox.mjs.map +0 -1
  643. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  644. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  645. package/lib/opProperties.d.mts.map +0 -1
  646. package/lib/opProperties.mjs.map +0 -1
  647. package/lib/packageVersion.d.mts.map +0 -1
  648. package/lib/packageVersion.mjs.map +0 -1
  649. package/lib/pendingStateManager.d.mts.map +0 -1
  650. package/lib/pendingStateManager.mjs.map +0 -1
  651. package/lib/scheduleManager.d.mts.map +0 -1
  652. package/lib/scheduleManager.mjs.map +0 -1
  653. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  654. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  655. package/lib/summary/index.d.mts.map +0 -1
  656. package/lib/summary/index.mjs.map +0 -1
  657. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  658. package/lib/summary/orderedClientElection.mjs.map +0 -1
  659. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  660. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  661. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  662. package/lib/summary/runningSummarizer.mjs.map +0 -1
  663. package/lib/summary/summarizer.d.mts.map +0 -1
  664. package/lib/summary/summarizer.mjs.map +0 -1
  665. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  666. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  667. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  668. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  669. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  670. package/lib/summary/summarizerNode/index.mjs +0 -7
  671. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  672. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  673. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  674. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  675. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  676. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  677. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  678. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  679. package/lib/summary/summarizerTypes.mjs.map +0 -1
  680. package/lib/summary/summaryCollection.d.mts.map +0 -1
  681. package/lib/summary/summaryCollection.mjs.map +0 -1
  682. package/lib/summary/summaryFormat.d.mts.map +0 -1
  683. package/lib/summary/summaryFormat.mjs.map +0 -1
  684. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  685. package/lib/summary/summaryGenerator.mjs.map +0 -1
  686. package/lib/summary/summaryManager.d.mts.map +0 -1
  687. package/lib/summary/summaryManager.mjs.map +0 -1
  688. package/lib/throttler.d.mts.map +0 -1
  689. package/lib/throttler.mjs.map +0 -1
  690. package/src/deltaManagerProxyBase.ts +0 -111
@@ -2,7 +2,6 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { EventEmitter } from "events";
6
5
  import { IDeltaManager } from "@fluidframework/container-definitions";
7
6
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
7
  import {
@@ -13,11 +12,12 @@ import {
13
12
  ITelemetryLoggerExt,
14
13
  } from "@fluidframework/telemetry-utils";
15
14
  import { assert } from "@fluidframework/core-utils";
15
+ import type { EventEmitter } from "@fluid-internal/client-utils";
16
16
  import { performance } from "@fluid-internal/client-utils";
17
17
  import { isRuntimeMessage } from "@fluidframework/driver-utils";
18
- import { DeltaScheduler } from "./deltaScheduler";
19
- import { pkgVersion } from "./packageVersion";
20
- import { IBatchMetadata } from "./metadata";
18
+ import { DeltaScheduler } from "./deltaScheduler.js";
19
+ import { pkgVersion } from "./packageVersion.js";
20
+ import { IBatchMetadata } from "./metadata.js";
21
21
 
22
22
  type IRuntimeMessageMetadata =
23
23
  | undefined
@@ -10,28 +10,28 @@ export {
10
10
  ITrackedClient,
11
11
  OrderedClientCollection,
12
12
  OrderedClientElection,
13
- } from "./orderedClientElection";
14
- export { defaultMaxAttemptsForSubmitFailures, RunningSummarizer } from "./runningSummarizer";
13
+ } from "./orderedClientElection.js";
14
+ export { defaultMaxAttemptsForSubmitFailures, RunningSummarizer } from "./runningSummarizer.js";
15
15
  export {
16
16
  ICancellableSummarizerController,
17
17
  neverCancelledSummaryToken,
18
18
  RunWhileConnectedCoordinator,
19
- } from "./runWhileConnectedCoordinator";
20
- export { Summarizer } from "./summarizer";
19
+ } from "./runWhileConnectedCoordinator.js";
20
+ export { Summarizer } from "./summarizer.js";
21
21
  export {
22
22
  ISummarizerClientElection,
23
23
  ISummarizerClientElectionEvents,
24
24
  SummarizerClientElection,
25
25
  summarizerClientType,
26
- } from "./summarizerClientElection";
27
- export { SummarizeHeuristicData, SummarizeHeuristicRunner } from "./summarizerHeuristics";
26
+ } from "./summarizerClientElection.js";
27
+ export { SummarizeHeuristicData, SummarizeHeuristicRunner } from "./summarizerHeuristics.js";
28
28
  export {
29
29
  createRootSummarizerNode,
30
30
  createRootSummarizerNodeWithGC,
31
31
  IRefreshSummaryResult,
32
32
  IRootSummarizerNode,
33
33
  IRootSummarizerNodeWithGC,
34
- } from "./summarizerNode";
34
+ } from "./summarizerNode/index.js";
35
35
  export {
36
36
  IConnectableRuntime,
37
37
  IGeneratedSummaryStats,
@@ -65,7 +65,7 @@ export {
65
65
  SummaryStage,
66
66
  IRetriableFailureResult,
67
67
  ISummarizeEventProps,
68
- } from "./summarizerTypes";
68
+ } from "./summarizerTypes.js";
69
69
  export {
70
70
  IAckedSummary,
71
71
  ISummaryCollectionOpEvents,
@@ -77,7 +77,7 @@ export {
77
77
  ISummaryNackMessage,
78
78
  OpActionEventListener,
79
79
  OpActionEventName,
80
- } from "./summaryCollection";
80
+ } from "./summaryCollection.js";
81
81
  export {
82
82
  aliasBlobName,
83
83
  blobsTreeName,
@@ -98,12 +98,13 @@ export {
98
98
  WriteFluidDataStoreAttributes,
99
99
  wrapSummaryInChannelsTree,
100
100
  idCompressorBlobName,
101
- } from "./summaryFormat";
102
- export { getFailMessage, RetriableSummaryError, SummarizeReason } from "./summaryGenerator";
101
+ IdCompressorMode,
102
+ } from "./summaryFormat.js";
103
+ export { getFailMessage, RetriableSummaryError, SummarizeReason } from "./summaryGenerator.js";
103
104
  export {
104
105
  IConnectedEvents,
105
106
  IConnectedState,
106
107
  ISummaryManagerConfig,
107
108
  SummaryManager,
108
109
  SummaryManagerState,
109
- } from "./summaryManager";
110
+ } from "./summaryManager.js";
@@ -13,7 +13,7 @@ import { assert } from "@fluidframework/core-utils";
13
13
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
14
14
  import { IDeltaManager } from "@fluidframework/container-definitions";
15
15
  import { IClient, IQuorumClients, ISequencedClient } from "@fluidframework/protocol-definitions";
16
- import { summarizerClientType } from "./summarizerClientElection";
16
+ import { summarizerClientType } from "./summarizerClientElection.js";
17
17
 
18
18
  // helper types for recursive readonly.
19
19
  // eslint-disable-next-line @typescript-eslint/ban-types
@@ -8,7 +8,7 @@ import {
8
8
  SummarizerStopReason,
9
9
  IConnectableRuntime,
10
10
  ISummaryCancellationToken,
11
- } from "./summarizerTypes";
11
+ } from "./summarizerTypes.js";
12
12
 
13
13
  /**
14
14
  * Similar to AbortController, but using promise instead of events
@@ -15,9 +15,9 @@ import { assert, delay, Deferred, PromiseTimer } from "@fluidframework/core-util
15
15
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
16
16
  import { DriverErrorTypes } from "@fluidframework/driver-definitions";
17
17
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
18
- import { ISummaryConfiguration } from "../containerRuntime";
19
- import { opSize } from "../opProperties";
20
- import { SummarizeHeuristicRunner } from "./summarizerHeuristics";
18
+ import { ISummaryConfiguration } from "../containerRuntime.js";
19
+ import { opSize } from "../opProperties.js";
20
+ import { SummarizeHeuristicRunner } from "./summarizerHeuristics.js";
21
21
  import {
22
22
  IEnqueueSummarizeOptions,
23
23
  ISummarizeOptions,
@@ -36,14 +36,14 @@ import {
36
36
  IRefreshSummaryAckOptions,
37
37
  ISummarizerEvents,
38
38
  ISummarizeEventProps,
39
- } from "./summarizerTypes";
40
- import { IAckedSummary, IClientSummaryWatcher, SummaryCollection } from "./summaryCollection";
39
+ } from "./summarizerTypes.js";
40
+ import { IAckedSummary, IClientSummaryWatcher, SummaryCollection } from "./summaryCollection.js";
41
41
  import {
42
42
  raceTimer,
43
43
  SummarizeReason,
44
44
  SummarizeResultBuilder,
45
45
  SummaryGenerator,
46
- } from "./summaryGenerator";
46
+ } from "./summaryGenerator.js";
47
47
 
48
48
  const maxSummarizeAckWaitTime = 10 * 60 * 1000; // 10 minutes
49
49
 
@@ -91,15 +91,26 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
91
91
  runtime,
92
92
  );
93
93
 
94
- // Before doing any heuristics or proceeding with its refreshing, if there is a summary ack received while
95
- // this summarizer catches up, let's refresh state before proceeding with the summarization.
96
- const lastAckRefSeq = await summarizer.handleSummaryAck();
94
+ // If there have been any acks newer that the one this client loaded from until now, process them before
95
+ // starting the running summarizer which will trigger summary heuristics.
96
+ // This is done primarily to handle scenarios where the summarizer loads from a cached snapshot and there
97
+ // is newer one available. The ack for the newer summary is processed before summarizing because otherwise
98
+ // that summary would fail as it has an older parent.
99
+ let nextReferenceSequenceNumber = runtime.deltaManager.initialSequenceNumber + 1;
100
+ const latestAck = summaryCollection.latestAck;
101
+ if (
102
+ latestAck !== undefined &&
103
+ latestAck.summaryOp.referenceSequenceNumber >= nextReferenceSequenceNumber
104
+ ) {
105
+ await summarizer.handleSummaryAck(latestAck);
106
+ nextReferenceSequenceNumber = latestAck.summaryOp.referenceSequenceNumber + 1;
107
+ }
97
108
 
98
109
  await summarizer.waitStart();
99
110
 
100
- // Handle summary acks asynchronously
111
+ // Process summary acks asynchronously
101
112
  // Note: no exceptions are thrown from processIncomingSummaryAcks handler as it handles all exceptions
102
- summarizer.processIncomingSummaryAcks(lastAckRefSeq).catch((error) => {
113
+ summarizer.processIncomingSummaryAcks(nextReferenceSequenceNumber).catch((error) => {
103
114
  createChildLogger({ logger }).sendErrorEvent(
104
115
  { eventName: "HandleSummaryAckFatalError" },
105
116
  error,
@@ -243,6 +254,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
243
254
  }
244
255
  });
245
256
 
257
+ const immediatelyRefreshLatestSummaryAck =
258
+ this.mc.config.getBoolean("Fluid.Summarizer.immediatelyRefreshLatestSummaryAck") ??
259
+ true;
246
260
  this.generator = new SummaryGenerator(
247
261
  this.pendingAckTimer,
248
262
  this.heuristicData,
@@ -250,6 +264,11 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
250
264
  () => {
251
265
  this.totalSuccessfulAttempts++;
252
266
  },
267
+ async (options: IRefreshSummaryAckOptions) => {
268
+ if (immediatelyRefreshLatestSummaryAck) {
269
+ await this.refreshLatestSummaryAckAndHandleError(options);
270
+ }
271
+ },
253
272
  this.summaryWatcher,
254
273
  this.mc.logger,
255
274
  );
@@ -272,94 +291,85 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
272
291
  : defaultMaxAttemptsForSubmitFailures;
273
292
  }
274
293
 
275
- private async handleSummaryAck(): Promise<number> {
276
- const lastAck: IAckedSummary | undefined = this.summaryCollection.latestAck;
277
- let refSequenceNumber = -1;
278
- // In case we haven't received the lastestAck yet, just return.
279
- if (lastAck !== undefined) {
280
- refSequenceNumber = lastAck.summaryOp.referenceSequenceNumber;
281
- const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;
282
- const summaryOpHandle = lastAck.summaryOp.contents.handle;
283
- const summaryAckHandle = lastAck.summaryAck.contents.handle;
284
- while (this.summarizingLock !== undefined) {
285
- summaryLogger.sendTelemetryEvent({
286
- eventName: "RefreshAttemptWithSummarizerRunning",
287
- referenceSequenceNumber: refSequenceNumber,
294
+ private async handleSummaryAck(ack: IAckedSummary) {
295
+ const refSequenceNumber = ack.summaryOp.referenceSequenceNumber;
296
+ const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;
297
+ const summaryOpHandle = ack.summaryOp.contents.handle;
298
+ const summaryAckHandle = ack.summaryAck.contents.handle;
299
+ while (this.summarizingLock !== undefined) {
300
+ summaryLogger.sendTelemetryEvent({
301
+ eventName: "RefreshAttemptWithSummarizerRunning",
302
+ referenceSequenceNumber: refSequenceNumber,
303
+ proposalHandle: summaryOpHandle,
304
+ ackHandle: summaryAckHandle,
305
+ });
306
+ await this.summarizingLock;
307
+ }
308
+
309
+ // Make sure we block any summarizer from being executed/enqueued while
310
+ // executing the refreshLatestSummaryAck.
311
+ // https://dev.azure.com/fluidframework/internal/_workitems/edit/779
312
+ await this.lockedSummaryAction(
313
+ () => {},
314
+ async () => {
315
+ const options: IRefreshSummaryAckOptions = {
288
316
  proposalHandle: summaryOpHandle,
289
317
  ackHandle: summaryAckHandle,
290
- });
291
- await this.summarizingLock;
292
- }
318
+ summaryRefSeq: refSequenceNumber,
319
+ summaryLogger,
320
+ };
321
+ await this.refreshLatestSummaryAckAndHandleError(options);
322
+ },
323
+ () => {},
324
+ );
325
+ }
293
326
 
294
- // Make sure we block any summarizer from being executed/enqueued while
295
- // executing the refreshLatestSummaryAck.
296
- // https://dev.azure.com/fluidframework/internal/_workitems/edit/779
297
- await this.lockedSummaryAction(
298
- () => {},
299
- async () =>
300
- this.refreshLatestSummaryAckCallback({
301
- proposalHandle: summaryOpHandle,
302
- ackHandle: summaryAckHandle,
303
- summaryRefSeq: refSequenceNumber,
304
- summaryLogger,
305
- }).catch(async (error) => {
306
- // If the error is 404, so maybe the fetched version no longer exists on server. We just
307
- // ignore this error in that case, as that means we will have another summaryAck for the
308
- // latest version with which we will refresh the state. However in case of single commit
309
- // summary, we might me missing a summary ack, so in that case we are still fine as the
310
- // code in `submitSummary` function in container runtime, will refresh the latest state
311
- // by calling `prefetchLatestSummaryThenClose`. We will load the next summarizer from the
312
- // updated state and be fine.
313
- const isIgnoredError =
314
- isFluidError(error) &&
315
- error.errorType === DriverErrorTypes.fileNotFoundOrAccessDeniedError;
316
-
317
- summaryLogger.sendTelemetryEvent(
318
- {
319
- eventName: isIgnoredError
320
- ? "HandleSummaryAckErrorIgnored"
321
- : "HandleLastSummaryAckError",
322
- referenceSequenceNumber: refSequenceNumber,
323
- proposalHandle: summaryOpHandle,
324
- ackHandle: summaryAckHandle,
325
- },
326
- error,
327
- );
328
- }),
329
- () => {},
327
+ private readonly refreshLatestSummaryAckAndHandleError = async (
328
+ options: IRefreshSummaryAckOptions,
329
+ ) => {
330
+ return this.refreshLatestSummaryAckCallback(options).catch(async (error) => {
331
+ // If the error is 404, so maybe the fetched version no longer exists on server. We just
332
+ // ignore this error in that case, as that means we will have another summaryAck for the
333
+ // latest version with which we will refresh the state. However in case of single commit
334
+ // summary, we might be missing a summary ack, so in that case we are still fine as the
335
+ // code in `submitSummary` function in container runtime, will refresh the latest state
336
+ // by calling `prefetchLatestSummaryThenClose`. We will load the next summarizer from the
337
+ // updated state and be fine.
338
+ const isIgnoredError =
339
+ isFluidError(error) &&
340
+ error.errorType === DriverErrorTypes.fileNotFoundOrAccessDeniedError;
341
+
342
+ options.summaryLogger.sendTelemetryEvent(
343
+ {
344
+ eventName: isIgnoredError
345
+ ? "HandleSummaryAckErrorIgnored"
346
+ : "HandleLastSummaryAckError",
347
+ referenceSequenceNumber: options.summaryRefSeq,
348
+ proposalHandle: options.proposalHandle,
349
+ ackHandle: options.ackHandle,
350
+ },
351
+ error,
330
352
  );
331
- refSequenceNumber++;
332
- }
333
- return refSequenceNumber;
334
- }
353
+ });
354
+ };
335
355
 
336
356
  /**
337
- * Responsible for receiving and processing all the summaryAcks.
338
- * In case there was a summary ack processed by the running summarizer before processIncomingSummaryAcks is called,
339
- * it will wait for the summary ack that is newer than the one indicated by the lastAckRefSeq.
340
- * @param lastAckRefSeq - Identifies the minimum reference sequence number the summarizer needs to wait for.
341
- * In case of a negative number, the summarizer will wait for ANY summary ack that is greater than the deltaManager's initial sequence number,
342
- * and, in case of a positive one, it will wait for a summary ack that is greater than this current reference sequence number.
357
+ * Responsible for receiving and processing all the summary acks.
358
+ * It starts processing ACKs after the one for the summary this client loaded from (initialSequenceNumber). Any
359
+ * ACK before that is not interesting as it will simply be ignored.
360
+ *
361
+ * @param referenceSequenceNumber - The referenceSequenceNumber of the summary from which to start processing
362
+ * acks.
343
363
  */
344
- private async processIncomingSummaryAcks(lastAckRefSeq: number) {
345
- let refSequenceNumber =
346
- lastAckRefSeq > 0 ? lastAckRefSeq : this.runtime.deltaManager.initialSequenceNumber;
364
+ private async processIncomingSummaryAcks(referenceSequenceNumber: number) {
365
+ // Start waiting for acks that are for summaries newer that the one this client loaded from.
366
+ let nextReferenceSequenceNumber = referenceSequenceNumber;
347
367
  while (!this.disposed) {
348
- const summaryLogger = this.tryGetCorrelatedLogger(refSequenceNumber) ?? this.mc.logger;
349
-
350
- // Initialize ack with undefined if exception happens inside of waitSummaryAck on second iteration,
351
- // we record undefined, not previous handles.
352
- await this.summaryCollection.waitSummaryAck(refSequenceNumber);
353
-
354
- summaryLogger.sendTelemetryEvent({
355
- eventName: "processIncomingSummaryAcks",
356
- referenceSequenceNumber: refSequenceNumber,
357
- lastAckRefSeq,
358
- });
359
-
360
- refSequenceNumber = await this.handleSummaryAck();
361
- // A valid Summary Ack must have been processed.
362
- assert(refSequenceNumber >= 0, 0x58f /* Invalid ref sequence number */);
368
+ const ackedSummary = await this.summaryCollection.waitSummaryAck(
369
+ nextReferenceSequenceNumber,
370
+ );
371
+ await this.handleSummaryAck(ackedSummary);
372
+ nextReferenceSequenceNumber = ackedSummary.summaryOp.referenceSequenceNumber + 1;
363
373
  }
364
374
  }
365
375
 
@@ -571,10 +581,22 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
571
581
  ...options,
572
582
  summaryLogger,
573
583
  cancellationToken: this.cancellationToken,
584
+ latestSummaryRefSeqNum:
585
+ this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
574
586
  };
575
587
  const summarizeResult = this.generator.summarize(summaryOptions, resultsBuilder);
576
588
  // ensure we wait till the end of the process
577
- return summarizeResult.receivedSummaryAckOrNack;
589
+ const result = await summarizeResult.receivedSummaryAckOrNack;
590
+ if (!result.success) {
591
+ this.mc.logger.sendErrorEvent(
592
+ {
593
+ eventName: "SummarizeFailed",
594
+ maxAttempts: 1,
595
+ summaryAttempts: 1,
596
+ },
597
+ result.error,
598
+ );
599
+ }
578
600
  },
579
601
  () => {
580
602
  this.afterSummaryAction();
@@ -627,6 +649,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
627
649
  let summaryAttempts = 0;
628
650
  let summaryAttemptsPerPhase = 0;
629
651
  let summaryAttemptPhase = 0;
652
+ let error: any;
630
653
  while (summaryAttemptPhase < attemptOptions.length) {
631
654
  if (this.cancellationToken.cancelled) {
632
655
  return;
@@ -655,6 +678,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
655
678
  ...summarizeOptions,
656
679
  summaryLogger,
657
680
  cancellationToken: this.cancellationToken,
681
+ latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
658
682
  };
659
683
 
660
684
  // Note: no need to account for cancellationToken.waitCancelled here, as
@@ -665,6 +689,8 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
665
689
  return;
666
690
  }
667
691
 
692
+ error = ackNackResult.error;
693
+
668
694
  // Check for retryDelay that can come from summaryNack, upload summary or submit summary flows.
669
695
  // Retry the same step only once per retryAfter response.
670
696
  const submitResult = await resultSummarize.summarySubmitted;
@@ -686,6 +712,14 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
686
712
  await delay(delaySeconds * 1000);
687
713
  }
688
714
  }
715
+ this.mc.logger.sendErrorEvent(
716
+ {
717
+ eventName: "SummarizeFailed",
718
+ maxAttempts: attemptOptions.length,
719
+ summaryAttempts: summaryAttemptPhase,
720
+ },
721
+ error,
722
+ );
689
723
  this.stopSummarizerCallback("failToSummarize");
690
724
  }
691
725
 
@@ -716,6 +750,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
716
750
  summaryLogger,
717
751
  cancellationToken: this.cancellationToken,
718
752
  finalAttempt,
753
+ latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
719
754
  };
720
755
  const summarizeResult = this.generator.summarize(summaryOptions);
721
756
  return { summarizeProps, summarizeResult };
@@ -736,6 +771,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
736
771
  let done = false;
737
772
  let status: "success" | "failure" | "canceled" = "success";
738
773
  let results: ISummarizeResults | undefined;
774
+ let error: any;
739
775
  do {
740
776
  currentAttempt++;
741
777
  if (this.cancellationToken.cancelled) {
@@ -770,11 +806,12 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
770
806
 
771
807
  // Emit "summarize" event for this failed attempt.
772
808
  status = "failure";
809
+ error = ackNackResult.error;
773
810
  const eventProps: ISummarizeEventProps = {
774
811
  result: status,
775
812
  currentAttempt,
776
813
  maxAttempts,
777
- error: ackNackResult.error,
814
+ error,
778
815
  };
779
816
  this.emit("summarize", eventProps);
780
817
 
@@ -811,6 +848,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
811
848
  // Ack / nack is the final step, so if it succeeds we're done.
812
849
  const ackNackResult = await summarizeResult.receivedSummaryAckOrNack;
813
850
  status = ackNackResult.success ? "success" : "failure";
851
+ if (!ackNackResult.success) {
852
+ error = ackNackResult.error;
853
+ }
814
854
  const eventProps: ISummarizeEventProps = {
815
855
  result: status,
816
856
  currentAttempt,
@@ -823,6 +863,14 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
823
863
 
824
864
  // If summarization is still unsuccessful, stop the summarizer.
825
865
  if (status === "failure") {
866
+ this.mc.logger.sendErrorEvent(
867
+ {
868
+ eventName: "SummarizeFailed",
869
+ maxAttempts,
870
+ summaryAttempts: currentAttempt,
871
+ },
872
+ error,
873
+ );
826
874
  this.stopSummarizerCallback("failToSummarize");
827
875
  }
828
876
  return results;
@@ -14,10 +14,10 @@ import {
14
14
  wrapErrorAndLog,
15
15
  } from "@fluidframework/telemetry-utils";
16
16
  import { IFluidHandleContext } from "@fluidframework/core-interfaces";
17
- import { ISummaryConfiguration } from "../containerRuntime";
18
- import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator";
19
- import { SummaryCollection } from "./summaryCollection";
20
- import { RunningSummarizer } from "./runningSummarizer";
17
+ import { ISummaryConfiguration } from "../containerRuntime.js";
18
+ import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator.js";
19
+ import { SummaryCollection } from "./summaryCollection.js";
20
+ import { RunningSummarizer } from "./runningSummarizer.js";
21
21
  import {
22
22
  IConnectableRuntime,
23
23
  ISummarizer,
@@ -32,9 +32,9 @@ import {
32
32
  EnqueueSummarizeResult,
33
33
  ISummarizerEvents,
34
34
  ISummarizeEventProps,
35
- } from "./summarizerTypes";
36
- import { SummarizeHeuristicData } from "./summarizerHeuristics";
37
- import { SummarizeResultBuilder } from "./summaryGenerator";
35
+ } from "./summarizerTypes.js";
36
+ import { SummarizeHeuristicData } from "./summarizerHeuristics.js";
37
+ import { SummarizeResultBuilder } from "./summaryGenerator.js";
38
38
 
39
39
  const summarizingError = "summarizingError";
40
40
 
@@ -11,8 +11,8 @@ import {
11
11
  IOrderedClientElection,
12
12
  ISerializedElection,
13
13
  ITrackedClient,
14
- } from "./orderedClientElection";
15
- import { ISummaryCollectionOpEvents } from "./summaryCollection";
14
+ } from "./orderedClientElection.js";
15
+ import { ISummaryCollectionOpEvents } from "./summaryCollection.js";
16
16
 
17
17
  export const summarizerClientType = "summarizer";
18
18
 
@@ -5,14 +5,14 @@
5
5
 
6
6
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
7
  import { Timer } from "@fluidframework/core-utils";
8
- import { ISummaryConfigurationHeuristics } from "../containerRuntime";
8
+ import { ISummaryConfigurationHeuristics } from "../containerRuntime.js";
9
9
  import {
10
10
  ISummarizeHeuristicData,
11
11
  ISummarizeHeuristicRunner,
12
12
  ISummarizeAttempt,
13
13
  ISummaryHeuristicStrategy,
14
- } from "./summarizerTypes";
15
- import { SummarizeReason } from "./summaryGenerator";
14
+ } from "./summarizerTypes.js";
15
+ import { SummarizeReason } from "./summaryGenerator.js";
16
16
 
17
17
  /** Simple implementation of class for tracking summarize heuristic data. */
18
18
  export class SummarizeHeuristicData implements ISummarizeHeuristicData {
@@ -7,6 +7,9 @@ export {
7
7
  IRefreshSummaryResult,
8
8
  ISummarizerNodeRootContract,
9
9
  ValidateSummaryResult,
10
- } from "./summarizerNodeUtils";
11
- export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode";
12
- export { IRootSummarizerNodeWithGC, createRootSummarizerNodeWithGC } from "./summarizerNodeWithGc";
10
+ } from "./summarizerNodeUtils.js";
11
+ export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode.js";
12
+ export {
13
+ IRootSummarizerNodeWithGC,
14
+ createRootSummarizerNodeWithGC,
15
+ } from "./summarizerNodeWithGc.js";