@fluidframework/container-runtime 2.0.0-rc.1.0.6 → 2.0.0-rc.2.0.1

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 (687) 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 +63 -29
  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/{lib/dataStores.d.mts → dist/channelCollection.d.ts} +94 -27
  14. package/dist/channelCollection.d.ts.map +1 -0
  15. package/dist/{dataStores.js → channelCollection.js} +359 -84
  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 +93 -39
  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 +118 -39
  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 +74 -54
  29. package/dist/containerRuntime.d.ts.map +1 -1
  30. package/dist/containerRuntime.js +534 -410
  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 +34 -29
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +157 -133
  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 +5 -4
  48. package/dist/gc/garbageCollection.d.ts.map +1 -1
  49. package/dist/gc/garbageCollection.js +64 -53
  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 +10 -3
  56. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  57. package/dist/gc/gcDefinitions.js.map +1 -1
  58. package/dist/gc/gcHelpers.d.ts +2 -2
  59. package/dist/gc/gcHelpers.d.ts.map +1 -1
  60. package/dist/gc/gcHelpers.js.map +1 -1
  61. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  62. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  63. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  64. package/dist/gc/gcSummaryStateTracker.d.ts +4 -4
  65. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  66. package/dist/gc/gcSummaryStateTracker.js +5 -5
  67. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  68. package/dist/gc/gcTelemetry.d.ts +6 -7
  69. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  70. package/dist/gc/gcTelemetry.js +17 -17
  71. package/dist/gc/gcTelemetry.js.map +1 -1
  72. package/dist/gc/gcUnreferencedStateTracker.d.ts +1 -1
  73. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  74. package/dist/gc/gcUnreferencedStateTracker.js +10 -10
  75. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  76. package/dist/gc/index.d.ts +8 -8
  77. package/dist/gc/index.d.ts.map +1 -1
  78. package/dist/gc/index.js +39 -39
  79. package/dist/gc/index.js.map +1 -1
  80. package/dist/index.d.ts +8 -20
  81. package/dist/index.d.ts.map +1 -1
  82. package/dist/index.js +28 -40
  83. package/dist/index.js.map +1 -1
  84. package/dist/messageTypes.d.ts +4 -4
  85. package/dist/messageTypes.d.ts.map +1 -1
  86. package/dist/messageTypes.js.map +1 -1
  87. package/dist/opLifecycle/batchManager.d.ts +2 -2
  88. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  89. package/dist/opLifecycle/batchManager.js.map +1 -1
  90. package/dist/opLifecycle/definitions.d.ts +2 -2
  91. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  92. package/dist/opLifecycle/definitions.js.map +1 -1
  93. package/dist/opLifecycle/index.d.ts +8 -8
  94. package/dist/opLifecycle/index.d.ts.map +1 -1
  95. package/dist/opLifecycle/index.js +18 -18
  96. package/dist/opLifecycle/index.js.map +1 -1
  97. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  98. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  99. package/dist/opLifecycle/opCompressor.js +4 -4
  100. package/dist/opLifecycle/opCompressor.js.map +1 -1
  101. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  102. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  103. package/dist/opLifecycle/opDecompressor.js +3 -3
  104. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  105. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  106. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  107. package/dist/opLifecycle/opGroupingManager.js +1 -10
  108. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  109. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  110. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  111. package/dist/opLifecycle/opSplitter.js +5 -5
  112. package/dist/opLifecycle/opSplitter.js.map +1 -1
  113. package/dist/opLifecycle/outbox.d.ts +7 -7
  114. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  115. package/dist/opLifecycle/outbox.js +20 -12
  116. package/dist/opLifecycle/outbox.js.map +1 -1
  117. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  118. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  119. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  120. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  121. package/dist/package.json +3 -0
  122. package/dist/packageVersion.d.ts +1 -1
  123. package/dist/packageVersion.js +1 -1
  124. package/dist/packageVersion.js.map +1 -1
  125. package/dist/pendingStateManager.d.ts +2 -1
  126. package/dist/pendingStateManager.d.ts.map +1 -1
  127. package/dist/pendingStateManager.js +18 -10
  128. package/dist/pendingStateManager.js.map +1 -1
  129. package/dist/scheduleManager.d.ts +1 -2
  130. package/dist/scheduleManager.d.ts.map +1 -1
  131. package/dist/scheduleManager.js +5 -5
  132. package/dist/scheduleManager.js.map +1 -1
  133. package/dist/summary/index.d.ts +12 -12
  134. package/dist/summary/index.d.ts.map +1 -1
  135. package/dist/summary/index.js +43 -43
  136. package/dist/summary/index.js.map +1 -1
  137. package/dist/summary/orderedClientElection.js +8 -8
  138. package/dist/summary/orderedClientElection.js.map +1 -1
  139. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  140. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  141. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  142. package/dist/summary/runningSummarizer.d.ts +11 -10
  143. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  144. package/dist/summary/runningSummarizer.js +114 -81
  145. package/dist/summary/runningSummarizer.js.map +1 -1
  146. package/dist/summary/summarizer.d.ts +4 -4
  147. package/dist/summary/summarizer.d.ts.map +1 -1
  148. package/dist/summary/summarizer.js +6 -6
  149. package/dist/summary/summarizer.js.map +1 -1
  150. package/dist/summary/summarizerClientElection.d.ts +2 -2
  151. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  152. package/dist/summary/summarizerClientElection.js.map +1 -1
  153. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  154. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  155. package/dist/summary/summarizerHeuristics.js.map +1 -1
  156. package/dist/summary/summarizerNode/index.d.ts +3 -3
  157. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  158. package/dist/summary/summarizerNode/index.js +4 -4
  159. package/dist/summary/summarizerNode/index.js.map +1 -1
  160. package/dist/summary/summarizerNode/summarizerNode.d.ts +17 -7
  161. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  162. package/dist/summary/summarizerNode/summarizerNode.js +45 -57
  163. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  164. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +10 -19
  165. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  166. package/dist/summary/summarizerNode/summarizerNodeUtils.js +1 -21
  167. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  168. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +5 -6
  169. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  170. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +16 -16
  171. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  172. package/dist/summary/summarizerTypes.d.ts +10 -21
  173. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  174. package/dist/summary/summarizerTypes.js.map +1 -1
  175. package/dist/summary/summaryFormat.d.ts +15 -2
  176. package/dist/summary/summaryFormat.d.ts.map +1 -1
  177. package/dist/summary/summaryFormat.js.map +1 -1
  178. package/dist/summary/summaryGenerator.d.ts +6 -5
  179. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  180. package/dist/summary/summaryGenerator.js +10 -1
  181. package/dist/summary/summaryGenerator.js.map +1 -1
  182. package/dist/summary/summaryManager.d.ts +5 -6
  183. package/dist/summary/summaryManager.d.ts.map +1 -1
  184. package/dist/summary/summaryManager.js +4 -5
  185. package/dist/summary/summaryManager.js.map +1 -1
  186. package/dist/tsdoc-metadata.json +1 -1
  187. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  188. package/lib/batchTracker.d.ts.map +1 -0
  189. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  190. package/lib/batchTracker.js.map +1 -0
  191. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -1
  192. package/lib/blobManager.d.ts.map +1 -0
  193. package/lib/{blobManager.mjs → blobManager.js} +1 -1
  194. package/lib/blobManager.js.map +1 -0
  195. package/{dist/dataStores.d.ts → lib/channelCollection.d.ts} +94 -27
  196. package/lib/channelCollection.d.ts.map +1 -0
  197. package/lib/{dataStores.mjs → channelCollection.js} +345 -73
  198. package/lib/channelCollection.js.map +1 -0
  199. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  200. package/lib/connectionTelemetry.d.ts.map +1 -0
  201. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  202. package/lib/connectionTelemetry.js.map +1 -0
  203. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +93 -39
  204. package/lib/{container-runtime-public.d.mts → container-runtime-beta.d.ts} +27 -9
  205. package/lib/{container-runtime-beta.d.mts → container-runtime-public.d.ts} +27 -9
  206. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +118 -39
  207. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  208. package/lib/containerHandleContext.d.ts.map +1 -0
  209. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  210. package/lib/containerHandleContext.js.map +1 -0
  211. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +79 -55
  212. package/lib/containerRuntime.d.ts.map +1 -0
  213. package/lib/{containerRuntime.mjs → containerRuntime.js} +453 -331
  214. package/lib/containerRuntime.js.map +1 -0
  215. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  216. package/lib/dataStore.d.ts.map +1 -0
  217. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  218. package/lib/dataStore.js.map +1 -0
  219. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +35 -30
  220. package/lib/dataStoreContext.d.ts.map +1 -0
  221. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +146 -122
  222. package/lib/dataStoreContext.js.map +1 -0
  223. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +2 -2
  224. package/lib/dataStoreContexts.d.ts.map +1 -0
  225. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +1 -1
  226. package/lib/dataStoreContexts.js.map +1 -0
  227. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +1 -1
  228. package/lib/dataStoreRegistry.d.ts.map +1 -0
  229. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  230. package/lib/dataStoreRegistry.js.map +1 -0
  231. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  232. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  233. package/lib/deltaManagerSummarizerProxy.js +124 -0
  234. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  235. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  236. package/lib/deltaScheduler.d.ts.map +1 -0
  237. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  238. package/lib/deltaScheduler.js.map +1 -0
  239. package/lib/{error.d.mts → error.d.ts} +1 -1
  240. package/lib/error.d.ts.map +1 -0
  241. package/lib/{error.mjs → error.js} +1 -1
  242. package/lib/error.js.map +1 -0
  243. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +6 -5
  244. package/lib/gc/garbageCollection.d.ts.map +1 -0
  245. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +25 -14
  246. package/lib/gc/garbageCollection.js.map +1 -0
  247. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  248. package/lib/gc/gcConfigs.d.ts.map +1 -0
  249. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +3 -3
  250. package/lib/gc/gcConfigs.js.map +1 -0
  251. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +11 -4
  252. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  253. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +1 -1
  254. package/lib/gc/gcDefinitions.js.map +1 -0
  255. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  256. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  257. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  258. package/lib/gc/gcHelpers.js.map +1 -0
  259. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  260. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  261. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  262. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  263. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  264. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  265. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  266. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  267. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +5 -5
  268. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  269. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +4 -4
  270. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  271. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +7 -8
  272. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  273. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +2 -2
  274. package/lib/gc/gcTelemetry.js.map +1 -0
  275. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +2 -2
  276. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  277. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +2 -2
  278. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  279. package/lib/gc/{index.d.mts → index.d.ts} +9 -9
  280. package/lib/gc/index.d.ts.map +1 -0
  281. package/lib/gc/{index.mjs → index.js} +8 -8
  282. package/lib/gc/index.js.map +1 -0
  283. package/lib/{index.d.mts → index.d.ts} +9 -21
  284. package/lib/index.d.ts.map +1 -0
  285. package/lib/index.js +12 -0
  286. package/lib/index.js.map +1 -0
  287. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +5 -5
  288. package/lib/messageTypes.d.ts.map +1 -0
  289. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  290. package/lib/messageTypes.js.map +1 -0
  291. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  292. package/lib/metadata.d.ts.map +1 -0
  293. package/lib/{metadata.mjs → metadata.js} +1 -1
  294. package/lib/metadata.js.map +1 -0
  295. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  296. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  297. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  298. package/lib/opLifecycle/batchManager.js.map +1 -0
  299. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  300. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  301. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  302. package/lib/opLifecycle/definitions.js.map +1 -0
  303. package/lib/opLifecycle/index.d.ts +13 -0
  304. package/lib/opLifecycle/index.d.ts.map +1 -0
  305. package/lib/opLifecycle/index.js +12 -0
  306. package/lib/opLifecycle/index.js.map +1 -0
  307. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  308. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  309. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  310. package/lib/opLifecycle/opCompressor.js.map +1 -0
  311. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  312. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  313. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  314. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  315. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  316. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  317. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  318. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  319. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  320. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  321. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  322. package/lib/opLifecycle/opSplitter.js.map +1 -0
  323. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  324. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  325. package/lib/opLifecycle/{outbox.mjs → outbox.js} +12 -4
  326. package/lib/opLifecycle/outbox.js.map +1 -0
  327. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  328. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  329. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +2 -2
  330. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  331. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  332. package/lib/opProperties.d.ts.map +1 -0
  333. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  334. package/lib/opProperties.js.map +1 -0
  335. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  336. package/lib/packageVersion.d.ts.map +1 -0
  337. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  338. package/lib/packageVersion.js.map +1 -0
  339. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  340. package/lib/pendingStateManager.d.ts.map +1 -0
  341. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  342. package/lib/pendingStateManager.js.map +1 -0
  343. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  344. package/lib/scheduleManager.d.ts.map +1 -0
  345. package/lib/{scheduleManager.mjs → scheduleManager.js} +3 -3
  346. package/lib/scheduleManager.js.map +1 -0
  347. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  348. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  349. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  350. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  351. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  352. package/lib/summary/index.d.ts.map +1 -0
  353. package/lib/summary/{index.mjs → index.js} +12 -12
  354. package/lib/summary/index.js.map +1 -0
  355. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  356. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  357. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +2 -2
  358. package/lib/summary/orderedClientElection.js.map +1 -0
  359. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  360. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  361. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  362. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  363. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +12 -11
  364. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  365. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +108 -75
  366. package/lib/summary/runningSummarizer.js.map +1 -0
  367. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  368. package/lib/summary/summarizer.d.ts.map +1 -0
  369. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  370. package/lib/summary/summarizer.js.map +1 -0
  371. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  372. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  373. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  374. package/lib/summary/summarizerClientElection.js.map +1 -0
  375. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  376. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  377. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  378. package/lib/summary/summarizerHeuristics.js.map +1 -0
  379. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  380. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  381. package/lib/summary/summarizerNode/index.js +7 -0
  382. package/lib/summary/summarizerNode/index.js.map +1 -0
  383. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +18 -8
  384. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  385. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +41 -53
  386. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  387. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +11 -20
  388. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  389. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -20
  390. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  391. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +6 -7
  392. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  393. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +12 -12
  394. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  395. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +11 -22
  396. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  397. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  398. package/lib/summary/summarizerTypes.js.map +1 -0
  399. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  400. package/lib/summary/summaryCollection.d.ts.map +1 -0
  401. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  402. package/lib/summary/summaryCollection.js.map +1 -0
  403. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  404. package/lib/summary/summaryFormat.d.ts.map +1 -0
  405. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  406. package/lib/summary/summaryFormat.js.map +1 -0
  407. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  408. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  409. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  410. package/lib/summary/summaryGenerator.js.map +1 -0
  411. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  412. package/lib/summary/summaryManager.d.ts.map +1 -0
  413. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  414. package/lib/summary/summaryManager.js.map +1 -0
  415. package/lib/test/batchTracker.spec.js +88 -0
  416. package/lib/test/batchTracker.spec.js.map +1 -0
  417. package/lib/test/blobManager.spec.js +835 -0
  418. package/lib/test/blobManager.spec.js.map +1 -0
  419. package/lib/test/channelCollection.spec.js +141 -0
  420. package/lib/test/channelCollection.spec.js.map +1 -0
  421. package/lib/test/containerRuntime.spec.js +1748 -0
  422. package/lib/test/containerRuntime.spec.js.map +1 -0
  423. package/lib/test/dataStoreContext.spec.js +801 -0
  424. package/lib/test/dataStoreContext.spec.js.map +1 -0
  425. package/lib/test/dataStoreCreation.spec.js +312 -0
  426. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  427. package/lib/test/dataStoreRegistry.spec.js +26 -0
  428. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  429. package/lib/test/fuzz/fuzzUtils.js +66 -0
  430. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  431. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  432. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  433. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  434. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  435. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  436. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  437. package/lib/test/gc/garbageCollection.spec.js +1465 -0
  438. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  439. package/lib/test/gc/gcConfigs.spec.js +690 -0
  440. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  441. package/lib/test/gc/gcHelpers.spec.js +110 -0
  442. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  443. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  444. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  445. package/lib/test/gc/gcStats.spec.js +391 -0
  446. package/lib/test/gc/gcStats.spec.js.map +1 -0
  447. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  448. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  449. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  450. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  451. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  452. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  453. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  454. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  455. package/lib/test/getPendingBlobs.spec.js +193 -0
  456. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  457. package/lib/test/hardwareStats.spec.js +93 -0
  458. package/lib/test/hardwareStats.spec.js.map +1 -0
  459. package/lib/test/index.js +6 -0
  460. package/lib/test/index.js.map +1 -0
  461. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  462. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  463. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  464. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  465. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  466. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  467. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  468. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  469. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  470. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  471. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  472. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  473. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  474. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  475. package/lib/test/pendingStateManager.spec.js +329 -0
  476. package/lib/test/pendingStateManager.spec.js.map +1 -0
  477. package/lib/test/scheduleManager.spec.js +270 -0
  478. package/lib/test/scheduleManager.spec.js.map +1 -0
  479. package/lib/test/summarizerNode.spec.js +326 -0
  480. package/lib/test/summarizerNode.spec.js.map +1 -0
  481. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  482. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  483. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  484. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  485. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  486. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  487. package/lib/test/summary/summarizer.spec.js +29 -0
  488. package/lib/test/summary/summarizer.spec.js.map +1 -0
  489. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  490. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  491. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  492. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  493. package/lib/test/summary/summaryCollection.spec.js +200 -0
  494. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  495. package/lib/test/summary/summaryManager.spec.js +430 -0
  496. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  497. package/lib/test/summary/testQuorumClients.js +34 -0
  498. package/lib/test/summary/testQuorumClients.js.map +1 -0
  499. package/lib/test/throttler.spec.js +175 -0
  500. package/lib/test/throttler.spec.js.map +1 -0
  501. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  502. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  503. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  504. package/lib/throttler.d.ts.map +1 -0
  505. package/lib/{throttler.mjs → throttler.js} +1 -1
  506. package/lib/throttler.js.map +1 -0
  507. package/package.json +99 -88
  508. package/src/batchTracker.ts +1 -1
  509. package/src/blobManager.ts +1 -1
  510. package/src/{dataStores.ts → channelCollection.ts} +467 -88
  511. package/src/connectionTelemetry.ts +42 -3
  512. package/src/containerHandleContext.ts +1 -1
  513. package/src/containerRuntime.ts +649 -462
  514. package/src/dataStore.ts +13 -15
  515. package/src/dataStoreContext.ts +203 -173
  516. package/src/dataStoreContexts.ts +1 -1
  517. package/src/deltaManagerSummarizerProxy.ts +132 -7
  518. package/src/gc/garbageCollection.ts +29 -16
  519. package/src/gc/gcConfigs.ts +3 -3
  520. package/src/gc/gcDefinitions.ts +10 -3
  521. package/src/gc/gcHelpers.ts +2 -2
  522. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  523. package/src/gc/gcSummaryStateTracker.ts +5 -6
  524. package/src/gc/gcTelemetry.ts +6 -6
  525. package/src/gc/gcUnreferencedStateTracker.ts +1 -1
  526. package/src/gc/index.ts +8 -8
  527. package/src/index.ts +16 -27
  528. package/src/messageTypes.ts +4 -4
  529. package/src/opLifecycle/README.md +2 -4
  530. package/src/opLifecycle/batchManager.ts +2 -2
  531. package/src/opLifecycle/definitions.ts +2 -2
  532. package/src/opLifecycle/index.ts +8 -8
  533. package/src/opLifecycle/opCompressor.ts +3 -3
  534. package/src/opLifecycle/opDecompressor.ts +3 -3
  535. package/src/opLifecycle/opGroupingManager.ts +3 -12
  536. package/src/opLifecycle/opSplitter.ts +3 -3
  537. package/src/opLifecycle/outbox.ts +29 -9
  538. package/src/opLifecycle/remoteMessageProcessor.ts +4 -4
  539. package/src/packageVersion.ts +1 -1
  540. package/src/pendingStateManager.ts +19 -13
  541. package/src/scheduleManager.ts +4 -4
  542. package/src/summary/index.ts +13 -12
  543. package/src/summary/orderedClientElection.ts +1 -1
  544. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  545. package/src/summary/runningSummarizer.ts +141 -93
  546. package/src/summary/summarizer.ts +7 -7
  547. package/src/summary/summarizerClientElection.ts +2 -2
  548. package/src/summary/summarizerHeuristics.ts +3 -3
  549. package/src/summary/summarizerNode/index.ts +6 -3
  550. package/src/summary/summarizerNode/summarizerNode.ts +54 -69
  551. package/src/summary/summarizerNode/summarizerNodeUtils.ts +16 -34
  552. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -17
  553. package/src/summary/summarizerTypes.ts +12 -24
  554. package/src/summary/summaryFormat.ts +16 -2
  555. package/src/summary/summaryGenerator.ts +16 -4
  556. package/src/summary/summaryManager.ts +6 -7
  557. package/tsconfig.cjs.json +7 -0
  558. package/tsconfig.json +2 -5
  559. package/dist/dataStores.d.ts.map +0 -1
  560. package/dist/dataStores.js.map +0 -1
  561. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  562. package/dist/deltaManagerProxyBase.js +0 -77
  563. package/dist/deltaManagerProxyBase.js.map +0 -1
  564. package/lib/batchTracker.d.mts.map +0 -1
  565. package/lib/batchTracker.mjs.map +0 -1
  566. package/lib/blobManager.d.mts.map +0 -1
  567. package/lib/blobManager.mjs.map +0 -1
  568. package/lib/connectionTelemetry.d.mts.map +0 -1
  569. package/lib/connectionTelemetry.mjs.map +0 -1
  570. package/lib/containerHandleContext.d.mts.map +0 -1
  571. package/lib/containerHandleContext.mjs.map +0 -1
  572. package/lib/containerRuntime.d.mts.map +0 -1
  573. package/lib/containerRuntime.mjs.map +0 -1
  574. package/lib/dataStore.d.mts.map +0 -1
  575. package/lib/dataStore.mjs.map +0 -1
  576. package/lib/dataStoreContext.d.mts.map +0 -1
  577. package/lib/dataStoreContext.mjs.map +0 -1
  578. package/lib/dataStoreContexts.d.mts.map +0 -1
  579. package/lib/dataStoreContexts.mjs.map +0 -1
  580. package/lib/dataStoreRegistry.d.mts.map +0 -1
  581. package/lib/dataStoreRegistry.mjs.map +0 -1
  582. package/lib/dataStores.d.mts.map +0 -1
  583. package/lib/dataStores.mjs.map +0 -1
  584. package/lib/deltaManagerProxyBase.d.mts +0 -35
  585. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  586. package/lib/deltaManagerProxyBase.mjs +0 -73
  587. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  588. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  589. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  590. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  591. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  592. package/lib/deltaScheduler.d.mts.map +0 -1
  593. package/lib/deltaScheduler.mjs.map +0 -1
  594. package/lib/error.d.mts.map +0 -1
  595. package/lib/error.mjs.map +0 -1
  596. package/lib/gc/garbageCollection.d.mts.map +0 -1
  597. package/lib/gc/garbageCollection.mjs.map +0 -1
  598. package/lib/gc/gcConfigs.d.mts.map +0 -1
  599. package/lib/gc/gcConfigs.mjs.map +0 -1
  600. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  601. package/lib/gc/gcDefinitions.mjs.map +0 -1
  602. package/lib/gc/gcHelpers.mjs.map +0 -1
  603. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  604. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  605. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  606. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  607. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  608. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  609. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  610. package/lib/gc/gcTelemetry.mjs.map +0 -1
  611. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  612. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  613. package/lib/gc/index.d.mts.map +0 -1
  614. package/lib/gc/index.mjs.map +0 -1
  615. package/lib/index.d.mts.map +0 -1
  616. package/lib/index.mjs +0 -24
  617. package/lib/index.mjs.map +0 -1
  618. package/lib/messageTypes.d.mts.map +0 -1
  619. package/lib/messageTypes.mjs.map +0 -1
  620. package/lib/metadata.d.mts.map +0 -1
  621. package/lib/metadata.mjs.map +0 -1
  622. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  623. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  624. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  625. package/lib/opLifecycle/definitions.mjs.map +0 -1
  626. package/lib/opLifecycle/index.d.mts +0 -13
  627. package/lib/opLifecycle/index.d.mts.map +0 -1
  628. package/lib/opLifecycle/index.mjs +0 -12
  629. package/lib/opLifecycle/index.mjs.map +0 -1
  630. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  631. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  632. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  633. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  634. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  635. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  636. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  637. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  638. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  639. package/lib/opLifecycle/outbox.mjs.map +0 -1
  640. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  641. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  642. package/lib/opProperties.d.mts.map +0 -1
  643. package/lib/opProperties.mjs.map +0 -1
  644. package/lib/packageVersion.d.mts.map +0 -1
  645. package/lib/packageVersion.mjs.map +0 -1
  646. package/lib/pendingStateManager.d.mts.map +0 -1
  647. package/lib/pendingStateManager.mjs.map +0 -1
  648. package/lib/scheduleManager.d.mts.map +0 -1
  649. package/lib/scheduleManager.mjs.map +0 -1
  650. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  651. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  652. package/lib/summary/index.d.mts.map +0 -1
  653. package/lib/summary/index.mjs.map +0 -1
  654. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  655. package/lib/summary/orderedClientElection.mjs.map +0 -1
  656. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  657. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  658. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  659. package/lib/summary/runningSummarizer.mjs.map +0 -1
  660. package/lib/summary/summarizer.d.mts.map +0 -1
  661. package/lib/summary/summarizer.mjs.map +0 -1
  662. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  663. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  664. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  665. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  666. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  667. package/lib/summary/summarizerNode/index.mjs +0 -7
  668. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  669. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  670. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  671. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  672. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  673. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  674. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  675. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  676. package/lib/summary/summarizerTypes.mjs.map +0 -1
  677. package/lib/summary/summaryCollection.d.mts.map +0 -1
  678. package/lib/summary/summaryCollection.mjs.map +0 -1
  679. package/lib/summary/summaryFormat.d.mts.map +0 -1
  680. package/lib/summary/summaryFormat.mjs.map +0 -1
  681. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  682. package/lib/summary/summaryGenerator.mjs.map +0 -1
  683. package/lib/summary/summaryManager.d.mts.map +0 -1
  684. package/lib/summary/summaryManager.mjs.map +0 -1
  685. package/lib/throttler.d.mts.map +0 -1
  686. package/lib/throttler.mjs.map +0 -1
  687. package/src/deltaManagerProxyBase.ts +0 -111
@@ -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";
@@ -3,12 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryBaseLogger, ITelemetryErrorEvent } from "@fluidframework/core-interfaces";
6
+ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import {
8
8
  ISummarizerNode,
9
9
  ISummarizerNodeConfig,
10
10
  ISummarizeResult,
11
- ISummaryTreeWithStats,
12
11
  CreateChildSummarizerNodeParam,
13
12
  CreateSummarizerNodeSource,
14
13
  SummarizeInternalFn,
@@ -19,7 +18,6 @@ import {
19
18
  ISequencedDocumentMessage,
20
19
  SummaryType,
21
20
  ISnapshotTree,
22
- SummaryObject,
23
21
  } from "@fluidframework/protocol-definitions";
24
22
  import {
25
23
  ITelemetryLoggerExt,
@@ -28,20 +26,20 @@ import {
28
26
  PerformanceEvent,
29
27
  TelemetryDataTag,
30
28
  tagCodeArtifacts,
29
+ type ITelemetryErrorEventExt,
31
30
  } from "@fluidframework/telemetry-utils";
32
31
  import { assert, unreachableCase } from "@fluidframework/core-utils";
33
- import { convertToSummaryTree, calculateStats, mergeStats } from "@fluidframework/runtime-utils";
32
+ import { mergeStats } from "@fluidframework/runtime-utils";
34
33
  import {
35
34
  EscapedPath,
36
35
  ICreateChildDetails,
37
- IInitialSummary,
38
36
  IRefreshSummaryResult,
37
+ IStartSummaryResult,
39
38
  ISummarizerNodeRootContract,
40
39
  parseSummaryForSubtrees,
41
- parseSummaryTreeForSubtrees,
42
40
  SummaryNode,
43
41
  ValidateSummaryResult,
44
- } from "./summarizerNodeUtils";
42
+ } from "./summarizerNodeUtils.js";
45
43
 
46
44
  export interface IRootSummarizerNode extends ISummarizerNode, ISummarizerNodeRootContract {}
47
45
 
@@ -86,7 +84,6 @@ export class SummarizerNode implements IRootSummarizerNode {
86
84
  private _changeSequenceNumber: number,
87
85
  /** Undefined means created without summary */
88
86
  private _latestSummary?: SummaryNode,
89
- private readonly initialSummary?: IInitialSummary,
90
87
  protected wipSummaryLogger?: ITelemetryBaseLogger,
91
88
  /** A unique id of this node to be logged when sending telemetry. */
92
89
  protected telemetryNodeId?: string,
@@ -101,7 +98,22 @@ export class SummarizerNode implements IRootSummarizerNode {
101
98
  });
102
99
  }
103
100
 
104
- public startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryBaseLogger) {
101
+ /**
102
+ * In order to produce a summary with a summarizer node, the summarizer node system must be notified a summary has
103
+ * started. This is done by calling startSummary. This will track the reference sequence number of the summary and
104
+ * run some validation checks to ensure the summary is correct.
105
+ * @param referenceSequenceNumber - the number of ops processed up to this point
106
+ * @param summaryLogger - the logger to use for the summary
107
+ * @param latestSummaryRefSeqNum - the reference sequence number of the latest summary. Another way to think about
108
+ * it is the reference sequence number of the previous summary.
109
+ * @returns the number of nodes in the tree, the number of nodes that are invalid, and the different types of
110
+ * sequence number mismatches
111
+ */
112
+ public startSummary(
113
+ referenceSequenceNumber: number,
114
+ summaryLogger: ITelemetryBaseLogger,
115
+ latestSummaryRefSeqNum: number,
116
+ ): IStartSummaryResult {
105
117
  assert(
106
118
  this.wipSummaryLogger === undefined,
107
119
  0x19f /* "wipSummaryLogger should not be set yet in startSummary" */,
@@ -111,12 +123,40 @@ export class SummarizerNode implements IRootSummarizerNode {
111
123
  0x1a0 /* "Already tracking a summary" */,
112
124
  );
113
125
 
126
+ let nodes = 1;
127
+ let invalidNodes = 0;
128
+ const sequenceNumberMismatchKeySet = new Set<string>();
129
+ const nodeLatestSummaryRefSeqNum = this._latestSummary?.referenceSequenceNumber;
130
+ if (
131
+ nodeLatestSummaryRefSeqNum !== undefined &&
132
+ latestSummaryRefSeqNum !== nodeLatestSummaryRefSeqNum
133
+ ) {
134
+ invalidNodes++;
135
+ sequenceNumberMismatchKeySet.add(
136
+ `${latestSummaryRefSeqNum}-${nodeLatestSummaryRefSeqNum}`,
137
+ );
138
+ }
139
+
114
140
  this.wipSummaryLogger = summaryLogger;
115
141
 
116
142
  for (const child of this.children.values()) {
117
- child.startSummary(referenceSequenceNumber, this.wipSummaryLogger);
143
+ const childStartSummaryResult = child.startSummary(
144
+ referenceSequenceNumber,
145
+ this.wipSummaryLogger,
146
+ latestSummaryRefSeqNum,
147
+ );
148
+ nodes += childStartSummaryResult.nodes;
149
+ invalidNodes += childStartSummaryResult.invalidNodes;
150
+ for (const invalidSequenceNumber of childStartSummaryResult.mismatchNumbers) {
151
+ sequenceNumberMismatchKeySet.add(invalidSequenceNumber);
152
+ }
118
153
  }
119
154
  this.wipReferenceSequenceNumber = referenceSequenceNumber;
155
+ return {
156
+ nodes,
157
+ invalidNodes,
158
+ mismatchNumbers: sequenceNumberMismatchKeySet,
159
+ };
120
160
  }
121
161
 
122
162
  public async summarize(
@@ -521,7 +561,6 @@ export class SummarizerNode implements IRootSummarizerNode {
521
561
  config,
522
562
  createDetails.changeSequenceNumber,
523
563
  createDetails.latestSummary,
524
- createDetails.initialSummary,
525
564
  this.wipSummaryLogger,
526
565
  createDetails.telemetryNodeId,
527
566
  );
@@ -549,7 +588,6 @@ export class SummarizerNode implements IRootSummarizerNode {
549
588
  id: string,
550
589
  createParam: CreateChildSummarizerNodeParam,
551
590
  ): ICreateChildDetails {
552
- let initialSummary: IInitialSummary | undefined;
553
591
  let latestSummary: SummaryNode | undefined;
554
592
  let changeSequenceNumber: number;
555
593
 
@@ -562,63 +600,12 @@ export class SummarizerNode implements IRootSummarizerNode {
562
600
  ) {
563
601
  // Prioritize latest summary if it was after this node was attached.
564
602
  latestSummary = parentLatestSummary.createForChild(id);
565
- } else {
566
- const summary = convertToSummaryTree(
567
- createParam.snapshot,
568
- ) as ISummaryTreeWithStats;
569
- initialSummary = {
570
- sequenceNumber: createParam.sequenceNumber,
571
- id,
572
- summary,
573
- };
574
603
  }
575
604
  changeSequenceNumber = createParam.sequenceNumber;
576
605
  break;
577
606
  }
578
- case CreateSummarizerNodeSource.FromSummary: {
579
- if (this.initialSummary === undefined) {
580
- assert(
581
- !!parentLatestSummary,
582
- 0x1ac /* "Cannot create child from summary if parent does not have latest summary" */,
583
- );
584
- }
585
- // fallthrough to local
586
- }
607
+ case CreateSummarizerNodeSource.FromSummary:
587
608
  case CreateSummarizerNodeSource.Local: {
588
- const parentInitialSummary = this.initialSummary;
589
- if (parentInitialSummary !== undefined) {
590
- let childSummary: SummaryObject | undefined;
591
- if (parentInitialSummary.summary !== undefined) {
592
- const { childrenTree } = parseSummaryTreeForSubtrees(
593
- parentInitialSummary.summary.summary,
594
- );
595
- assert(
596
- childrenTree.type === SummaryType.Tree,
597
- 0x1d6 /* "Parent summary object is not a tree" */,
598
- );
599
- childSummary = childrenTree.tree[id];
600
- }
601
- if (createParam.type === CreateSummarizerNodeSource.FromSummary) {
602
- // Locally created would not have differential subtree.
603
- assert(!!childSummary, 0x1ad /* "Missing child summary tree" */);
604
- }
605
- let childSummaryWithStats: ISummaryTreeWithStats | undefined;
606
- if (childSummary !== undefined) {
607
- assert(
608
- childSummary.type === SummaryType.Tree,
609
- 0x1ae /* "Child summary object is not a tree" */,
610
- );
611
- childSummaryWithStats = {
612
- summary: childSummary,
613
- stats: calculateStats(childSummary),
614
- };
615
- }
616
- initialSummary = {
617
- sequenceNumber: parentInitialSummary.sequenceNumber,
618
- id,
619
- summary: childSummaryWithStats,
620
- };
621
- }
622
609
  latestSummary = parentLatestSummary?.createForChild(id);
623
610
  changeSequenceNumber = parentLatestSummary?.referenceSequenceNumber ?? -1;
624
611
  break;
@@ -629,13 +616,12 @@ export class SummarizerNode implements IRootSummarizerNode {
629
616
  }
630
617
  }
631
618
 
632
- const childtelemetryNodeId = `${this.telemetryNodeId ?? ""}/${id}`;
619
+ const childTelemetryNodeId = `${this.telemetryNodeId ?? ""}/${id}`;
633
620
 
634
621
  return {
635
- initialSummary,
636
622
  latestSummary,
637
623
  changeSequenceNumber,
638
- telemetryNodeId: childtelemetryNodeId,
624
+ telemetryNodeId: childTelemetryNodeId,
639
625
  };
640
626
  }
641
627
 
@@ -682,7 +668,7 @@ export class SummarizerNode implements IRootSummarizerNode {
682
668
  /**
683
669
  * Creates and throws an error due to unexpected conditions.
684
670
  */
685
- protected throwUnexpectedError(eventProps: ITelemetryErrorEvent): never {
671
+ protected throwUnexpectedError(eventProps: ITelemetryErrorEventExt): never {
686
672
  const error = new LoggingError(eventProps.eventName, {
687
673
  ...eventProps,
688
674
  referenceSequenceNumber: this.wipReferenceSequenceNumber,
@@ -719,7 +705,6 @@ export const createRootSummarizerNode = (
719
705
  referenceSequenceNumber === undefined
720
706
  ? undefined
721
707
  : SummaryNode.createForRoot(referenceSequenceNumber),
722
- undefined /* initialSummary */,
723
708
  undefined /* wipSummaryLogger */,
724
709
  "" /* telemetryNodeId */,
725
710
  );