@fluidframework/container-runtime 2.0.0-dev-rc.1.0.0.232845 → 2.0.0-dev-rc.2.0.0.246488

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 (700) hide show
  1. package/.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 +426 -33
  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.d.ts +0 -5
  13. package/dist/blobManager.d.ts.map +1 -1
  14. package/dist/blobManager.js +0 -12
  15. package/dist/blobManager.js.map +1 -1
  16. package/dist/channelCollection.d.ts +226 -0
  17. package/dist/channelCollection.d.ts.map +1 -0
  18. package/dist/{dataStores.js → channelCollection.js} +455 -150
  19. package/dist/channelCollection.js.map +1 -0
  20. package/dist/connectionTelemetry.d.ts +11 -1
  21. package/dist/connectionTelemetry.d.ts.map +1 -1
  22. package/dist/connectionTelemetry.js +42 -4
  23. package/dist/connectionTelemetry.js.map +1 -1
  24. package/dist/container-runtime-alpha.d.ts +128 -48
  25. package/dist/container-runtime-beta.d.ts +67 -9
  26. package/dist/container-runtime-public.d.ts +67 -9
  27. package/dist/container-runtime-untrimmed.d.ts +692 -49
  28. package/dist/containerHandleContext.d.ts +1 -1
  29. package/dist/containerHandleContext.d.ts.map +1 -1
  30. package/dist/containerHandleContext.js.map +1 -1
  31. package/dist/containerRuntime.d.ts +81 -64
  32. package/dist/containerRuntime.d.ts.map +1 -1
  33. package/dist/containerRuntime.js +522 -379
  34. package/dist/containerRuntime.js.map +1 -1
  35. package/dist/dataStore.d.ts +2 -3
  36. package/dist/dataStore.d.ts.map +1 -1
  37. package/dist/dataStore.js +12 -11
  38. package/dist/dataStore.js.map +1 -1
  39. package/dist/dataStoreContext.d.ts +118 -41
  40. package/dist/dataStoreContext.d.ts.map +1 -1
  41. package/dist/dataStoreContext.js +248 -159
  42. package/dist/dataStoreContext.js.map +1 -1
  43. package/dist/dataStoreContexts.d.ts +2 -1
  44. package/dist/dataStoreContexts.d.ts.map +1 -1
  45. package/dist/dataStoreContexts.js +1 -0
  46. package/dist/dataStoreContexts.js.map +1 -1
  47. package/dist/dataStoreRegistry.d.ts +4 -0
  48. package/dist/dataStoreRegistry.d.ts.map +1 -1
  49. package/dist/dataStoreRegistry.js +2 -2
  50. package/dist/dataStoreRegistry.js.map +1 -1
  51. package/dist/deltaManagerSummarizerProxy.d.ts +29 -4
  52. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  53. package/dist/deltaManagerSummarizerProxy.js +91 -5
  54. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  55. package/dist/gc/garbageCollection.d.ts +12 -6
  56. package/dist/gc/garbageCollection.d.ts.map +1 -1
  57. package/dist/gc/garbageCollection.js +116 -78
  58. package/dist/gc/garbageCollection.js.map +1 -1
  59. package/dist/gc/gcConfigs.d.ts +2 -2
  60. package/dist/gc/gcConfigs.d.ts.map +1 -1
  61. package/dist/gc/gcConfigs.js +30 -23
  62. package/dist/gc/gcConfigs.js.map +1 -1
  63. package/dist/gc/gcDefinitions.d.ts +22 -13
  64. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  65. package/dist/gc/gcDefinitions.js +7 -4
  66. package/dist/gc/gcDefinitions.js.map +1 -1
  67. package/dist/gc/gcHelpers.d.ts +2 -2
  68. package/dist/gc/gcHelpers.d.ts.map +1 -1
  69. package/dist/gc/gcHelpers.js.map +1 -1
  70. package/dist/gc/gcReferenceGraphAlgorithm.d.ts +1 -1
  71. package/dist/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -1
  72. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  73. package/dist/gc/gcSummaryStateTracker.d.ts +12 -5
  74. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  75. package/dist/gc/gcSummaryStateTracker.js +18 -6
  76. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  77. package/dist/gc/gcTelemetry.d.ts +6 -7
  78. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  79. package/dist/gc/gcTelemetry.js +20 -18
  80. package/dist/gc/gcTelemetry.js.map +1 -1
  81. package/dist/gc/gcUnreferencedStateTracker.d.ts +1 -1
  82. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  83. package/dist/gc/gcUnreferencedStateTracker.js +10 -10
  84. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  85. package/dist/gc/index.d.ts +8 -8
  86. package/dist/gc/index.d.ts.map +1 -1
  87. package/dist/gc/index.js +40 -39
  88. package/dist/gc/index.js.map +1 -1
  89. package/dist/index.d.ts +11 -21
  90. package/dist/index.d.ts.map +1 -1
  91. package/dist/index.js +36 -42
  92. package/dist/index.js.map +1 -1
  93. package/dist/messageTypes.d.ts +3 -3
  94. package/dist/messageTypes.d.ts.map +1 -1
  95. package/dist/messageTypes.js.map +1 -1
  96. package/dist/opLifecycle/batchManager.d.ts +2 -2
  97. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  98. package/dist/opLifecycle/batchManager.js.map +1 -1
  99. package/dist/opLifecycle/definitions.d.ts +2 -2
  100. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  101. package/dist/opLifecycle/definitions.js.map +1 -1
  102. package/dist/opLifecycle/index.d.ts +8 -8
  103. package/dist/opLifecycle/index.d.ts.map +1 -1
  104. package/dist/opLifecycle/index.js +18 -18
  105. package/dist/opLifecycle/index.js.map +1 -1
  106. package/dist/opLifecycle/opCompressor.d.ts +1 -1
  107. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  108. package/dist/opLifecycle/opCompressor.js +4 -4
  109. package/dist/opLifecycle/opCompressor.js.map +1 -1
  110. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  111. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  112. package/dist/opLifecycle/opDecompressor.js +3 -3
  113. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  114. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  115. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  116. package/dist/opLifecycle/opGroupingManager.js +1 -10
  117. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  118. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  119. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  120. package/dist/opLifecycle/opSplitter.js +5 -5
  121. package/dist/opLifecycle/opSplitter.js.map +1 -1
  122. package/dist/opLifecycle/outbox.d.ts +7 -7
  123. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  124. package/dist/opLifecycle/outbox.js +32 -18
  125. package/dist/opLifecycle/outbox.js.map +1 -1
  126. package/dist/opLifecycle/remoteMessageProcessor.d.ts +4 -4
  127. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  128. package/dist/opLifecycle/remoteMessageProcessor.js +7 -4
  129. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  130. package/dist/package.json +3 -0
  131. package/dist/packageVersion.d.ts +1 -1
  132. package/dist/packageVersion.js +1 -1
  133. package/dist/packageVersion.js.map +1 -1
  134. package/dist/pendingStateManager.d.ts +2 -1
  135. package/dist/pendingStateManager.d.ts.map +1 -1
  136. package/dist/pendingStateManager.js +18 -10
  137. package/dist/pendingStateManager.js.map +1 -1
  138. package/dist/scheduleManager.d.ts +1 -2
  139. package/dist/scheduleManager.d.ts.map +1 -1
  140. package/dist/scheduleManager.js +9 -5
  141. package/dist/scheduleManager.js.map +1 -1
  142. package/dist/summary/index.d.ts +12 -12
  143. package/dist/summary/index.d.ts.map +1 -1
  144. package/dist/summary/index.js +43 -43
  145. package/dist/summary/index.js.map +1 -1
  146. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  147. package/dist/summary/orderedClientElection.js +12 -8
  148. package/dist/summary/orderedClientElection.js.map +1 -1
  149. package/dist/summary/runWhileConnectedCoordinator.d.ts +1 -1
  150. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  151. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  152. package/dist/summary/runningSummarizer.d.ts +5 -4
  153. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  154. package/dist/summary/runningSummarizer.js +47 -32
  155. package/dist/summary/runningSummarizer.js.map +1 -1
  156. package/dist/summary/summarizer.d.ts +4 -4
  157. package/dist/summary/summarizer.d.ts.map +1 -1
  158. package/dist/summary/summarizer.js +6 -6
  159. package/dist/summary/summarizer.js.map +1 -1
  160. package/dist/summary/summarizerClientElection.d.ts +2 -2
  161. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  162. package/dist/summary/summarizerClientElection.js.map +1 -1
  163. package/dist/summary/summarizerHeuristics.d.ts +3 -3
  164. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  165. package/dist/summary/summarizerHeuristics.js.map +1 -1
  166. package/dist/summary/summarizerNode/index.d.ts +3 -3
  167. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  168. package/dist/summary/summarizerNode/index.js +4 -4
  169. package/dist/summary/summarizerNode/index.js.map +1 -1
  170. package/dist/summary/summarizerNode/summarizerNode.d.ts +16 -5
  171. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  172. package/dist/summary/summarizerNode/summarizerNode.js +40 -10
  173. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  174. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +9 -1
  175. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  176. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  177. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +3 -4
  178. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  179. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +12 -12
  180. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  181. package/dist/summary/summarizerTypes.d.ts +9 -20
  182. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  183. package/dist/summary/summarizerTypes.js.map +1 -1
  184. package/dist/summary/summaryFormat.d.ts +15 -2
  185. package/dist/summary/summaryFormat.d.ts.map +1 -1
  186. package/dist/summary/summaryFormat.js.map +1 -1
  187. package/dist/summary/summaryGenerator.d.ts +6 -5
  188. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  189. package/dist/summary/summaryGenerator.js +10 -1
  190. package/dist/summary/summaryGenerator.js.map +1 -1
  191. package/dist/summary/summaryManager.d.ts +5 -6
  192. package/dist/summary/summaryManager.d.ts.map +1 -1
  193. package/dist/summary/summaryManager.js +4 -5
  194. package/dist/summary/summaryManager.js.map +1 -1
  195. package/dist/tsdoc-metadata.json +1 -1
  196. package/lib/{batchTracker.d.mts → batchTracker.d.ts} +2 -3
  197. package/lib/batchTracker.d.ts.map +1 -0
  198. package/lib/{batchTracker.mjs → batchTracker.js} +1 -1
  199. package/lib/batchTracker.js.map +1 -0
  200. package/lib/{blobManager.d.mts → blobManager.d.ts} +1 -6
  201. package/lib/blobManager.d.ts.map +1 -0
  202. package/lib/{blobManager.mjs → blobManager.js} +1 -13
  203. package/lib/blobManager.js.map +1 -0
  204. package/lib/channelCollection.d.ts +226 -0
  205. package/lib/channelCollection.d.ts.map +1 -0
  206. package/lib/{dataStores.mjs → channelCollection.js} +442 -140
  207. package/lib/channelCollection.js.map +1 -0
  208. package/lib/{connectionTelemetry.d.mts → connectionTelemetry.d.ts} +12 -2
  209. package/lib/connectionTelemetry.d.ts.map +1 -0
  210. package/lib/{connectionTelemetry.mjs → connectionTelemetry.js} +43 -5
  211. package/lib/connectionTelemetry.js.map +1 -0
  212. package/lib/{container-runtime-alpha.d.mts → container-runtime-alpha.d.ts} +128 -48
  213. package/lib/{container-runtime-beta.d.mts → container-runtime-beta.d.ts} +67 -9
  214. package/lib/{container-runtime-public.d.mts → container-runtime-public.d.ts} +67 -9
  215. package/lib/{container-runtime-untrimmed.d.mts → container-runtime-untrimmed.d.ts} +692 -49
  216. package/lib/{containerHandleContext.d.mts → containerHandleContext.d.ts} +2 -2
  217. package/lib/containerHandleContext.d.ts.map +1 -0
  218. package/lib/{containerHandleContext.mjs → containerHandleContext.js} +1 -1
  219. package/lib/containerHandleContext.js.map +1 -0
  220. package/lib/{containerRuntime.d.mts → containerRuntime.d.ts} +86 -65
  221. package/lib/containerRuntime.d.ts.map +1 -0
  222. package/lib/{containerRuntime.mjs → containerRuntime.js} +444 -303
  223. package/lib/containerRuntime.js.map +1 -0
  224. package/lib/{dataStore.d.mts → dataStore.d.ts} +3 -4
  225. package/lib/dataStore.d.ts.map +1 -0
  226. package/lib/{dataStore.mjs → dataStore.js} +13 -12
  227. package/lib/dataStore.js.map +1 -0
  228. package/lib/{dataStoreContext.d.mts → dataStoreContext.d.ts} +119 -42
  229. package/lib/dataStoreContext.d.ts.map +1 -0
  230. package/lib/{dataStoreContext.mjs → dataStoreContext.js} +240 -151
  231. package/lib/dataStoreContext.js.map +1 -0
  232. package/lib/{dataStoreContexts.d.mts → dataStoreContexts.d.ts} +3 -2
  233. package/lib/dataStoreContexts.d.ts.map +1 -0
  234. package/lib/{dataStoreContexts.mjs → dataStoreContexts.js} +2 -1
  235. package/lib/dataStoreContexts.js.map +1 -0
  236. package/lib/{dataStoreRegistry.d.mts → dataStoreRegistry.d.ts} +5 -1
  237. package/lib/dataStoreRegistry.d.ts.map +1 -0
  238. package/lib/{dataStoreRegistry.mjs → dataStoreRegistry.js} +5 -1
  239. package/lib/dataStoreRegistry.js.map +1 -0
  240. package/{dist/deltaManagerProxyBase.d.ts → lib/deltaManagerSummarizerProxy.d.ts} +16 -7
  241. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -0
  242. package/lib/deltaManagerSummarizerProxy.js +124 -0
  243. package/lib/deltaManagerSummarizerProxy.js.map +1 -0
  244. package/lib/{deltaScheduler.d.mts → deltaScheduler.d.ts} +1 -1
  245. package/lib/deltaScheduler.d.ts.map +1 -0
  246. package/lib/{deltaScheduler.mjs → deltaScheduler.js} +1 -1
  247. package/lib/deltaScheduler.js.map +1 -0
  248. package/lib/{error.d.mts → error.d.ts} +1 -1
  249. package/lib/error.d.ts.map +1 -0
  250. package/lib/{error.mjs → error.js} +1 -1
  251. package/lib/error.js.map +1 -0
  252. package/lib/gc/{garbageCollection.d.mts → garbageCollection.d.ts} +13 -7
  253. package/lib/gc/garbageCollection.d.ts.map +1 -0
  254. package/lib/gc/{garbageCollection.mjs → garbageCollection.js} +79 -41
  255. package/lib/gc/garbageCollection.js.map +1 -0
  256. package/lib/gc/{gcConfigs.d.mts → gcConfigs.d.ts} +3 -3
  257. package/lib/gc/gcConfigs.d.ts.map +1 -0
  258. package/lib/gc/{gcConfigs.mjs → gcConfigs.js} +14 -7
  259. package/lib/gc/gcConfigs.js.map +1 -0
  260. package/lib/gc/{gcDefinitions.d.mts → gcDefinitions.d.ts} +23 -14
  261. package/lib/gc/gcDefinitions.d.ts.map +1 -0
  262. package/lib/gc/{gcDefinitions.mjs → gcDefinitions.js} +7 -4
  263. package/lib/gc/gcDefinitions.js.map +1 -0
  264. package/lib/gc/{gcHelpers.d.mts → gcHelpers.d.ts} +3 -3
  265. package/lib/gc/{gcHelpers.d.mts.map → gcHelpers.d.ts.map} +1 -1
  266. package/lib/gc/{gcHelpers.mjs → gcHelpers.js} +1 -1
  267. package/lib/gc/gcHelpers.js.map +1 -0
  268. package/lib/gc/{gcReferenceGraphAlgorithm.d.mts → gcReferenceGraphAlgorithm.d.ts} +2 -2
  269. package/lib/gc/gcReferenceGraphAlgorithm.d.ts.map +1 -0
  270. package/lib/gc/{gcReferenceGraphAlgorithm.mjs → gcReferenceGraphAlgorithm.js} +1 -1
  271. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -0
  272. package/lib/gc/{gcSummaryDefinitions.d.mts → gcSummaryDefinitions.d.ts} +1 -1
  273. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -0
  274. package/lib/gc/{gcSummaryDefinitions.mjs → gcSummaryDefinitions.js} +1 -1
  275. package/lib/gc/gcSummaryDefinitions.js.map +1 -0
  276. package/lib/gc/{gcSummaryStateTracker.d.mts → gcSummaryStateTracker.d.ts} +13 -6
  277. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -0
  278. package/lib/gc/{gcSummaryStateTracker.mjs → gcSummaryStateTracker.js} +17 -5
  279. package/lib/gc/gcSummaryStateTracker.js.map +1 -0
  280. package/lib/gc/{gcTelemetry.d.mts → gcTelemetry.d.ts} +7 -8
  281. package/lib/gc/gcTelemetry.d.ts.map +1 -0
  282. package/lib/gc/{gcTelemetry.mjs → gcTelemetry.js} +5 -3
  283. package/lib/gc/gcTelemetry.js.map +1 -0
  284. package/lib/gc/{gcUnreferencedStateTracker.d.mts → gcUnreferencedStateTracker.d.ts} +2 -2
  285. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -0
  286. package/lib/gc/{gcUnreferencedStateTracker.mjs → gcUnreferencedStateTracker.js} +2 -2
  287. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -0
  288. package/lib/gc/index.d.ts +13 -0
  289. package/lib/gc/index.d.ts.map +1 -0
  290. package/lib/gc/{index.mjs → index.js} +8 -8
  291. package/lib/gc/index.js.map +1 -0
  292. package/lib/{index.d.mts → index.d.ts} +12 -22
  293. package/lib/index.d.ts.map +1 -0
  294. package/lib/index.js +15 -0
  295. package/lib/index.js.map +1 -0
  296. package/lib/{messageTypes.d.mts → messageTypes.d.ts} +4 -4
  297. package/lib/messageTypes.d.ts.map +1 -0
  298. package/lib/{messageTypes.mjs → messageTypes.js} +1 -1
  299. package/lib/messageTypes.js.map +1 -0
  300. package/lib/{metadata.d.mts → metadata.d.ts} +1 -1
  301. package/lib/metadata.d.ts.map +1 -0
  302. package/lib/{metadata.mjs → metadata.js} +1 -1
  303. package/lib/metadata.js.map +1 -0
  304. package/lib/opLifecycle/{batchManager.d.mts → batchManager.d.ts} +3 -3
  305. package/lib/opLifecycle/batchManager.d.ts.map +1 -0
  306. package/lib/opLifecycle/{batchManager.mjs → batchManager.js} +1 -1
  307. package/lib/opLifecycle/batchManager.js.map +1 -0
  308. package/lib/opLifecycle/{definitions.d.mts → definitions.d.ts} +3 -3
  309. package/lib/opLifecycle/definitions.d.ts.map +1 -0
  310. package/lib/opLifecycle/{definitions.mjs → definitions.js} +1 -1
  311. package/lib/opLifecycle/definitions.js.map +1 -0
  312. package/lib/opLifecycle/index.d.ts +13 -0
  313. package/lib/opLifecycle/index.d.ts.map +1 -0
  314. package/lib/opLifecycle/index.js +12 -0
  315. package/lib/opLifecycle/index.js.map +1 -0
  316. package/lib/opLifecycle/{opCompressor.d.mts → opCompressor.d.ts} +2 -2
  317. package/lib/opLifecycle/opCompressor.d.ts.map +1 -0
  318. package/lib/opLifecycle/{opCompressor.mjs → opCompressor.js} +3 -3
  319. package/lib/opLifecycle/opCompressor.js.map +1 -0
  320. package/lib/opLifecycle/{opDecompressor.d.mts → opDecompressor.d.ts} +2 -2
  321. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -0
  322. package/lib/opLifecycle/{opDecompressor.mjs → opDecompressor.js} +2 -2
  323. package/lib/opLifecycle/opDecompressor.js.map +1 -0
  324. package/lib/opLifecycle/{opGroupingManager.d.mts → opGroupingManager.d.ts} +2 -2
  325. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -0
  326. package/lib/opLifecycle/{opGroupingManager.mjs → opGroupingManager.js} +2 -11
  327. package/lib/opLifecycle/opGroupingManager.js.map +1 -0
  328. package/lib/opLifecycle/{opSplitter.d.mts → opSplitter.d.ts} +2 -2
  329. package/lib/opLifecycle/opSplitter.d.ts.map +1 -0
  330. package/lib/opLifecycle/{opSplitter.mjs → opSplitter.js} +3 -3
  331. package/lib/opLifecycle/opSplitter.js.map +1 -0
  332. package/lib/opLifecycle/{outbox.d.mts → outbox.d.ts} +8 -8
  333. package/lib/opLifecycle/outbox.d.ts.map +1 -0
  334. package/lib/opLifecycle/{outbox.mjs → outbox.js} +24 -10
  335. package/lib/opLifecycle/outbox.js.map +1 -0
  336. package/lib/opLifecycle/{remoteMessageProcessor.d.mts → remoteMessageProcessor.d.ts} +5 -5
  337. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -0
  338. package/lib/opLifecycle/{remoteMessageProcessor.mjs → remoteMessageProcessor.js} +7 -4
  339. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -0
  340. package/lib/{opProperties.d.mts → opProperties.d.ts} +1 -1
  341. package/lib/opProperties.d.ts.map +1 -0
  342. package/lib/{opProperties.mjs → opProperties.js} +1 -1
  343. package/lib/opProperties.js.map +1 -0
  344. package/lib/{packageVersion.d.mts → packageVersion.d.ts} +2 -2
  345. package/lib/packageVersion.d.ts.map +1 -0
  346. package/lib/{packageVersion.mjs → packageVersion.js} +2 -2
  347. package/lib/packageVersion.js.map +1 -0
  348. package/lib/{pendingStateManager.d.mts → pendingStateManager.d.ts} +3 -2
  349. package/lib/pendingStateManager.d.ts.map +1 -0
  350. package/lib/{pendingStateManager.mjs → pendingStateManager.js} +18 -10
  351. package/lib/pendingStateManager.js.map +1 -0
  352. package/lib/{scheduleManager.d.mts → scheduleManager.d.ts} +6 -3
  353. package/lib/scheduleManager.d.ts.map +1 -0
  354. package/lib/{scheduleManager.mjs → scheduleManager.js} +7 -3
  355. package/lib/scheduleManager.js.map +1 -0
  356. package/lib/{storageServiceWithAttachBlobs.d.mts → storageServiceWithAttachBlobs.d.ts} +1 -1
  357. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -0
  358. package/lib/{storageServiceWithAttachBlobs.mjs → storageServiceWithAttachBlobs.js} +1 -1
  359. package/lib/storageServiceWithAttachBlobs.js.map +1 -0
  360. package/lib/summary/{index.d.mts → index.d.ts} +13 -13
  361. package/lib/summary/index.d.ts.map +1 -0
  362. package/lib/summary/{index.mjs → index.js} +12 -12
  363. package/lib/summary/index.js.map +1 -0
  364. package/lib/summary/{orderedClientElection.d.mts → orderedClientElection.d.ts} +5 -1
  365. package/lib/summary/orderedClientElection.d.ts.map +1 -0
  366. package/lib/summary/{orderedClientElection.mjs → orderedClientElection.js} +6 -2
  367. package/lib/summary/orderedClientElection.js.map +1 -0
  368. package/lib/summary/{runWhileConnectedCoordinator.d.mts → runWhileConnectedCoordinator.d.ts} +2 -2
  369. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -0
  370. package/lib/summary/{runWhileConnectedCoordinator.mjs → runWhileConnectedCoordinator.js} +1 -1
  371. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -0
  372. package/lib/summary/{runningSummarizer.d.mts → runningSummarizer.d.ts} +6 -5
  373. package/lib/summary/runningSummarizer.d.ts.map +1 -0
  374. package/lib/summary/{runningSummarizer.mjs → runningSummarizer.js} +41 -26
  375. package/lib/summary/runningSummarizer.js.map +1 -0
  376. package/lib/summary/{summarizer.d.mts → summarizer.d.ts} +5 -5
  377. package/lib/summary/summarizer.d.ts.map +1 -0
  378. package/lib/summary/{summarizer.mjs → summarizer.js} +4 -4
  379. package/lib/summary/summarizer.js.map +1 -0
  380. package/lib/summary/{summarizerClientElection.d.mts → summarizerClientElection.d.ts} +3 -3
  381. package/lib/summary/summarizerClientElection.d.ts.map +1 -0
  382. package/lib/summary/{summarizerClientElection.mjs → summarizerClientElection.js} +1 -1
  383. package/lib/summary/summarizerClientElection.js.map +1 -0
  384. package/lib/summary/{summarizerHeuristics.d.mts → summarizerHeuristics.d.ts} +4 -4
  385. package/lib/summary/summarizerHeuristics.d.ts.map +1 -0
  386. package/lib/summary/{summarizerHeuristics.mjs → summarizerHeuristics.js} +1 -1
  387. package/lib/summary/summarizerHeuristics.js.map +1 -0
  388. package/lib/summary/summarizerNode/{index.d.mts → index.d.ts} +4 -4
  389. package/lib/summary/summarizerNode/index.d.ts.map +1 -0
  390. package/lib/summary/summarizerNode/index.js +7 -0
  391. package/lib/summary/summarizerNode/index.js.map +1 -0
  392. package/lib/summary/summarizerNode/{summarizerNode.d.mts → summarizerNode.d.ts} +17 -6
  393. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -0
  394. package/lib/summary/summarizerNode/{summarizerNode.mjs → summarizerNode.js} +34 -4
  395. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -0
  396. package/lib/summary/summarizerNode/{summarizerNodeUtils.d.mts → summarizerNodeUtils.d.ts} +10 -2
  397. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -0
  398. package/lib/summary/summarizerNode/{summarizerNodeUtils.mjs → summarizerNodeUtils.js} +1 -1
  399. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -0
  400. package/lib/summary/summarizerNode/{summarizerNodeWithGc.d.mts → summarizerNodeWithGc.d.ts} +4 -5
  401. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -0
  402. package/lib/summary/summarizerNode/{summarizerNodeWithGc.mjs → summarizerNodeWithGc.js} +7 -7
  403. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -0
  404. package/lib/summary/{summarizerTypes.d.mts → summarizerTypes.d.ts} +10 -21
  405. package/lib/summary/summarizerTypes.d.ts.map +1 -0
  406. package/lib/summary/{summarizerTypes.mjs → summarizerTypes.js} +1 -1
  407. package/lib/summary/summarizerTypes.js.map +1 -0
  408. package/lib/summary/{summaryCollection.d.mts → summaryCollection.d.ts} +1 -1
  409. package/lib/summary/summaryCollection.d.ts.map +1 -0
  410. package/lib/summary/{summaryCollection.mjs → summaryCollection.js} +1 -1
  411. package/lib/summary/summaryCollection.js.map +1 -0
  412. package/lib/summary/{summaryFormat.d.mts → summaryFormat.d.ts} +16 -3
  413. package/lib/summary/summaryFormat.d.ts.map +1 -0
  414. package/lib/summary/{summaryFormat.mjs → summaryFormat.js} +1 -1
  415. package/lib/summary/summaryFormat.js.map +1 -0
  416. package/lib/summary/{summaryGenerator.d.mts → summaryGenerator.d.ts} +7 -6
  417. package/lib/summary/summaryGenerator.d.ts.map +1 -0
  418. package/lib/summary/{summaryGenerator.mjs → summaryGenerator.js} +11 -2
  419. package/lib/summary/summaryGenerator.js.map +1 -0
  420. package/lib/summary/{summaryManager.d.mts → summaryManager.d.ts} +6 -7
  421. package/lib/summary/summaryManager.d.ts.map +1 -0
  422. package/lib/summary/{summaryManager.mjs → summaryManager.js} +4 -5
  423. package/lib/summary/summaryManager.js.map +1 -0
  424. package/lib/test/batchTracker.spec.js +88 -0
  425. package/lib/test/batchTracker.spec.js.map +1 -0
  426. package/lib/test/blobManager.spec.js +835 -0
  427. package/lib/test/blobManager.spec.js.map +1 -0
  428. package/lib/test/channelCollection.spec.js +138 -0
  429. package/lib/test/channelCollection.spec.js.map +1 -0
  430. package/lib/test/containerRuntime.spec.js +1748 -0
  431. package/lib/test/containerRuntime.spec.js.map +1 -0
  432. package/lib/test/dataStoreContext.spec.js +771 -0
  433. package/lib/test/dataStoreContext.spec.js.map +1 -0
  434. package/lib/test/dataStoreCreation.spec.js +303 -0
  435. package/lib/test/dataStoreCreation.spec.js.map +1 -0
  436. package/lib/test/dataStoreRegistry.spec.js +26 -0
  437. package/lib/test/dataStoreRegistry.spec.js.map +1 -0
  438. package/lib/test/fuzz/fuzzUtils.js +66 -0
  439. package/lib/test/fuzz/fuzzUtils.js.map +1 -0
  440. package/lib/test/fuzz/summarizer.fuzz.spec.js +31 -0
  441. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +1 -0
  442. package/lib/test/fuzz/summarizerFuzzMocks.js +162 -0
  443. package/lib/test/fuzz/summarizerFuzzMocks.js.map +1 -0
  444. package/lib/test/fuzz/summarizerFuzzSuite.js +106 -0
  445. package/lib/test/fuzz/summarizerFuzzSuite.js.map +1 -0
  446. package/lib/test/gc/garbageCollection.spec.js +1464 -0
  447. package/lib/test/gc/garbageCollection.spec.js.map +1 -0
  448. package/lib/test/gc/gcConfigs.spec.js +689 -0
  449. package/lib/test/gc/gcConfigs.spec.js.map +1 -0
  450. package/lib/test/gc/gcHelpers.spec.js +110 -0
  451. package/lib/test/gc/gcHelpers.spec.js.map +1 -0
  452. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +68 -0
  453. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +1 -0
  454. package/lib/test/gc/gcStats.spec.js +390 -0
  455. package/lib/test/gc/gcStats.spec.js.map +1 -0
  456. package/lib/test/gc/gcSummaryStateTracker.spec.js +228 -0
  457. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +1 -0
  458. package/lib/test/gc/gcTelemetry.spec.js +530 -0
  459. package/lib/test/gc/gcTelemetry.spec.js.map +1 -0
  460. package/lib/test/gc/gcUnitTestHelpers.js +29 -0
  461. package/lib/test/gc/gcUnitTestHelpers.js.map +1 -0
  462. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +192 -0
  463. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +1 -0
  464. package/lib/test/getPendingBlobs.spec.js +193 -0
  465. package/lib/test/getPendingBlobs.spec.js.map +1 -0
  466. package/lib/test/hardwareStats.spec.js +93 -0
  467. package/lib/test/hardwareStats.spec.js.map +1 -0
  468. package/lib/test/index.js +6 -0
  469. package/lib/test/index.js.map +1 -0
  470. package/lib/test/opLifecycle/OpGroupingManager.spec.js +225 -0
  471. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +1 -0
  472. package/lib/test/opLifecycle/batchManager.spec.js +189 -0
  473. package/lib/test/opLifecycle/batchManager.spec.js.map +1 -0
  474. package/lib/test/opLifecycle/opCompressor.spec.js +74 -0
  475. package/lib/test/opLifecycle/opCompressor.spec.js.map +1 -0
  476. package/lib/test/opLifecycle/opDecompressor.spec.js +218 -0
  477. package/lib/test/opLifecycle/opDecompressor.spec.js.map +1 -0
  478. package/lib/test/opLifecycle/opSplitter.spec.js +272 -0
  479. package/lib/test/opLifecycle/opSplitter.spec.js.map +1 -0
  480. package/lib/test/opLifecycle/outbox.spec.js +675 -0
  481. package/lib/test/opLifecycle/outbox.spec.js.map +1 -0
  482. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +196 -0
  483. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +1 -0
  484. package/lib/test/pendingStateManager.spec.js +329 -0
  485. package/lib/test/pendingStateManager.spec.js.map +1 -0
  486. package/lib/test/scheduleManager.spec.js +270 -0
  487. package/lib/test/scheduleManager.spec.js.map +1 -0
  488. package/lib/test/summarizerNode.spec.js +326 -0
  489. package/lib/test/summarizerNode.spec.js.map +1 -0
  490. package/lib/test/summarizerNodeWithGc.spec.js +318 -0
  491. package/lib/test/summarizerNodeWithGc.spec.js.map +1 -0
  492. package/lib/test/summary/orderedClientElection.spec.js +535 -0
  493. package/lib/test/summary/orderedClientElection.spec.js.map +1 -0
  494. package/lib/test/summary/runningSummarizer.spec.js +1349 -0
  495. package/lib/test/summary/runningSummarizer.spec.js.map +1 -0
  496. package/lib/test/summary/summarizer.spec.js +29 -0
  497. package/lib/test/summary/summarizer.spec.js.map +1 -0
  498. package/lib/test/summary/summarizerClientElection.spec.js +436 -0
  499. package/lib/test/summary/summarizerClientElection.spec.js.map +1 -0
  500. package/lib/test/summary/summarizerHeuristics.spec.js +289 -0
  501. package/lib/test/summary/summarizerHeuristics.spec.js.map +1 -0
  502. package/lib/test/summary/summaryCollection.spec.js +200 -0
  503. package/lib/test/summary/summaryCollection.spec.js.map +1 -0
  504. package/lib/test/summary/summaryManager.spec.js +430 -0
  505. package/lib/test/summary/summaryManager.spec.js.map +1 -0
  506. package/lib/test/summary/testQuorumClients.js +34 -0
  507. package/lib/test/summary/testQuorumClients.js.map +1 -0
  508. package/lib/test/throttler.spec.js +175 -0
  509. package/lib/test/throttler.spec.js.map +1 -0
  510. package/lib/test/types/validateContainerRuntimePrevious.generated.js +180 -0
  511. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +1 -0
  512. package/lib/{throttler.d.mts → throttler.d.ts} +1 -1
  513. package/lib/throttler.d.ts.map +1 -0
  514. package/lib/{throttler.mjs → throttler.js} +1 -1
  515. package/lib/throttler.js.map +1 -0
  516. package/package.json +101 -88
  517. package/src/batchTracker.ts +1 -1
  518. package/src/blobManager.ts +1 -15
  519. package/src/{dataStores.ts → channelCollection.ts} +629 -178
  520. package/src/connectionTelemetry.ts +42 -3
  521. package/src/containerHandleContext.ts +1 -1
  522. package/src/containerRuntime.ts +626 -430
  523. package/src/dataStore.ts +16 -15
  524. package/src/dataStoreContext.ts +376 -216
  525. package/src/dataStoreContexts.ts +2 -1
  526. package/src/dataStoreRegistry.ts +1 -0
  527. package/src/deltaManagerSummarizerProxy.ts +132 -7
  528. package/src/gc/garbageCollection.ts +84 -44
  529. package/src/gc/gcConfigs.ts +17 -7
  530. package/src/gc/gcDefinitions.ts +23 -13
  531. package/src/gc/gcHelpers.ts +2 -2
  532. package/src/gc/gcReferenceGraphAlgorithm.ts +1 -1
  533. package/src/gc/gcSummaryStateTracker.ts +19 -7
  534. package/src/gc/gcTelemetry.ts +9 -7
  535. package/src/gc/gcUnreferencedStateTracker.ts +1 -1
  536. package/src/gc/index.ts +10 -9
  537. package/src/index.ts +28 -27
  538. package/src/messageTypes.ts +3 -3
  539. package/src/opLifecycle/README.md +2 -4
  540. package/src/opLifecycle/batchManager.ts +2 -2
  541. package/src/opLifecycle/definitions.ts +2 -2
  542. package/src/opLifecycle/index.ts +8 -8
  543. package/src/opLifecycle/opCompressor.ts +3 -3
  544. package/src/opLifecycle/opDecompressor.ts +3 -3
  545. package/src/opLifecycle/opGroupingManager.ts +3 -12
  546. package/src/opLifecycle/opSplitter.ts +3 -3
  547. package/src/opLifecycle/outbox.ts +43 -16
  548. package/src/opLifecycle/remoteMessageProcessor.ts +10 -6
  549. package/src/packageVersion.ts +1 -1
  550. package/src/pendingStateManager.ts +19 -13
  551. package/src/scheduleManager.ts +5 -4
  552. package/src/summary/index.ts +13 -12
  553. package/src/summary/orderedClientElection.ts +2 -1
  554. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  555. package/src/summary/runningSummarizer.ts +52 -32
  556. package/src/summary/summarizer.ts +7 -7
  557. package/src/summary/summarizerClientElection.ts +2 -2
  558. package/src/summary/summarizerHeuristics.ts +3 -3
  559. package/src/summary/summarizerNode/index.ts +6 -3
  560. package/src/summary/summarizerNode/summarizerNode.ts +50 -5
  561. package/src/summary/summarizerNode/summarizerNodeUtils.ts +14 -1
  562. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -11
  563. package/src/summary/summarizerTypes.ts +11 -23
  564. package/src/summary/summaryFormat.ts +16 -2
  565. package/src/summary/summaryGenerator.ts +16 -4
  566. package/src/summary/summaryManager.ts +6 -7
  567. package/tsconfig.cjs.json +7 -0
  568. package/tsconfig.json +2 -5
  569. package/dist/dataStores.d.ts +0 -151
  570. package/dist/dataStores.d.ts.map +0 -1
  571. package/dist/dataStores.js.map +0 -1
  572. package/dist/deltaManagerProxyBase.d.ts.map +0 -1
  573. package/dist/deltaManagerProxyBase.js +0 -77
  574. package/dist/deltaManagerProxyBase.js.map +0 -1
  575. package/lib/batchTracker.d.mts.map +0 -1
  576. package/lib/batchTracker.mjs.map +0 -1
  577. package/lib/blobManager.d.mts.map +0 -1
  578. package/lib/blobManager.mjs.map +0 -1
  579. package/lib/connectionTelemetry.d.mts.map +0 -1
  580. package/lib/connectionTelemetry.mjs.map +0 -1
  581. package/lib/containerHandleContext.d.mts.map +0 -1
  582. package/lib/containerHandleContext.mjs.map +0 -1
  583. package/lib/containerRuntime.d.mts.map +0 -1
  584. package/lib/containerRuntime.mjs.map +0 -1
  585. package/lib/dataStore.d.mts.map +0 -1
  586. package/lib/dataStore.mjs.map +0 -1
  587. package/lib/dataStoreContext.d.mts.map +0 -1
  588. package/lib/dataStoreContext.mjs.map +0 -1
  589. package/lib/dataStoreContexts.d.mts.map +0 -1
  590. package/lib/dataStoreContexts.mjs.map +0 -1
  591. package/lib/dataStoreRegistry.d.mts.map +0 -1
  592. package/lib/dataStoreRegistry.mjs.map +0 -1
  593. package/lib/dataStores.d.mts +0 -151
  594. package/lib/dataStores.d.mts.map +0 -1
  595. package/lib/dataStores.mjs.map +0 -1
  596. package/lib/deltaManagerProxyBase.d.mts +0 -35
  597. package/lib/deltaManagerProxyBase.d.mts.map +0 -1
  598. package/lib/deltaManagerProxyBase.mjs +0 -73
  599. package/lib/deltaManagerProxyBase.mjs.map +0 -1
  600. package/lib/deltaManagerSummarizerProxy.d.mts +0 -19
  601. package/lib/deltaManagerSummarizerProxy.d.mts.map +0 -1
  602. package/lib/deltaManagerSummarizerProxy.mjs +0 -38
  603. package/lib/deltaManagerSummarizerProxy.mjs.map +0 -1
  604. package/lib/deltaScheduler.d.mts.map +0 -1
  605. package/lib/deltaScheduler.mjs.map +0 -1
  606. package/lib/error.d.mts.map +0 -1
  607. package/lib/error.mjs.map +0 -1
  608. package/lib/gc/garbageCollection.d.mts.map +0 -1
  609. package/lib/gc/garbageCollection.mjs.map +0 -1
  610. package/lib/gc/gcConfigs.d.mts.map +0 -1
  611. package/lib/gc/gcConfigs.mjs.map +0 -1
  612. package/lib/gc/gcDefinitions.d.mts.map +0 -1
  613. package/lib/gc/gcDefinitions.mjs.map +0 -1
  614. package/lib/gc/gcHelpers.mjs.map +0 -1
  615. package/lib/gc/gcReferenceGraphAlgorithm.d.mts.map +0 -1
  616. package/lib/gc/gcReferenceGraphAlgorithm.mjs.map +0 -1
  617. package/lib/gc/gcSummaryDefinitions.d.mts.map +0 -1
  618. package/lib/gc/gcSummaryDefinitions.mjs.map +0 -1
  619. package/lib/gc/gcSummaryStateTracker.d.mts.map +0 -1
  620. package/lib/gc/gcSummaryStateTracker.mjs.map +0 -1
  621. package/lib/gc/gcTelemetry.d.mts.map +0 -1
  622. package/lib/gc/gcTelemetry.mjs.map +0 -1
  623. package/lib/gc/gcUnreferencedStateTracker.d.mts.map +0 -1
  624. package/lib/gc/gcUnreferencedStateTracker.mjs.map +0 -1
  625. package/lib/gc/index.d.mts +0 -13
  626. package/lib/gc/index.d.mts.map +0 -1
  627. package/lib/gc/index.mjs.map +0 -1
  628. package/lib/index.d.mts.map +0 -1
  629. package/lib/index.mjs +0 -25
  630. package/lib/index.mjs.map +0 -1
  631. package/lib/messageTypes.d.mts.map +0 -1
  632. package/lib/messageTypes.mjs.map +0 -1
  633. package/lib/metadata.d.mts.map +0 -1
  634. package/lib/metadata.mjs.map +0 -1
  635. package/lib/opLifecycle/batchManager.d.mts.map +0 -1
  636. package/lib/opLifecycle/batchManager.mjs.map +0 -1
  637. package/lib/opLifecycle/definitions.d.mts.map +0 -1
  638. package/lib/opLifecycle/definitions.mjs.map +0 -1
  639. package/lib/opLifecycle/index.d.mts +0 -13
  640. package/lib/opLifecycle/index.d.mts.map +0 -1
  641. package/lib/opLifecycle/index.mjs +0 -12
  642. package/lib/opLifecycle/index.mjs.map +0 -1
  643. package/lib/opLifecycle/opCompressor.d.mts.map +0 -1
  644. package/lib/opLifecycle/opCompressor.mjs.map +0 -1
  645. package/lib/opLifecycle/opDecompressor.d.mts.map +0 -1
  646. package/lib/opLifecycle/opDecompressor.mjs.map +0 -1
  647. package/lib/opLifecycle/opGroupingManager.d.mts.map +0 -1
  648. package/lib/opLifecycle/opGroupingManager.mjs.map +0 -1
  649. package/lib/opLifecycle/opSplitter.d.mts.map +0 -1
  650. package/lib/opLifecycle/opSplitter.mjs.map +0 -1
  651. package/lib/opLifecycle/outbox.d.mts.map +0 -1
  652. package/lib/opLifecycle/outbox.mjs.map +0 -1
  653. package/lib/opLifecycle/remoteMessageProcessor.d.mts.map +0 -1
  654. package/lib/opLifecycle/remoteMessageProcessor.mjs.map +0 -1
  655. package/lib/opProperties.d.mts.map +0 -1
  656. package/lib/opProperties.mjs.map +0 -1
  657. package/lib/packageVersion.d.mts.map +0 -1
  658. package/lib/packageVersion.mjs.map +0 -1
  659. package/lib/pendingStateManager.d.mts.map +0 -1
  660. package/lib/pendingStateManager.mjs.map +0 -1
  661. package/lib/scheduleManager.d.mts.map +0 -1
  662. package/lib/scheduleManager.mjs.map +0 -1
  663. package/lib/storageServiceWithAttachBlobs.d.mts.map +0 -1
  664. package/lib/storageServiceWithAttachBlobs.mjs.map +0 -1
  665. package/lib/summary/index.d.mts.map +0 -1
  666. package/lib/summary/index.mjs.map +0 -1
  667. package/lib/summary/orderedClientElection.d.mts.map +0 -1
  668. package/lib/summary/orderedClientElection.mjs.map +0 -1
  669. package/lib/summary/runWhileConnectedCoordinator.d.mts.map +0 -1
  670. package/lib/summary/runWhileConnectedCoordinator.mjs.map +0 -1
  671. package/lib/summary/runningSummarizer.d.mts.map +0 -1
  672. package/lib/summary/runningSummarizer.mjs.map +0 -1
  673. package/lib/summary/summarizer.d.mts.map +0 -1
  674. package/lib/summary/summarizer.mjs.map +0 -1
  675. package/lib/summary/summarizerClientElection.d.mts.map +0 -1
  676. package/lib/summary/summarizerClientElection.mjs.map +0 -1
  677. package/lib/summary/summarizerHeuristics.d.mts.map +0 -1
  678. package/lib/summary/summarizerHeuristics.mjs.map +0 -1
  679. package/lib/summary/summarizerNode/index.d.mts.map +0 -1
  680. package/lib/summary/summarizerNode/index.mjs +0 -7
  681. package/lib/summary/summarizerNode/index.mjs.map +0 -1
  682. package/lib/summary/summarizerNode/summarizerNode.d.mts.map +0 -1
  683. package/lib/summary/summarizerNode/summarizerNode.mjs.map +0 -1
  684. package/lib/summary/summarizerNode/summarizerNodeUtils.d.mts.map +0 -1
  685. package/lib/summary/summarizerNode/summarizerNodeUtils.mjs.map +0 -1
  686. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.mts.map +0 -1
  687. package/lib/summary/summarizerNode/summarizerNodeWithGc.mjs.map +0 -1
  688. package/lib/summary/summarizerTypes.d.mts.map +0 -1
  689. package/lib/summary/summarizerTypes.mjs.map +0 -1
  690. package/lib/summary/summaryCollection.d.mts.map +0 -1
  691. package/lib/summary/summaryCollection.mjs.map +0 -1
  692. package/lib/summary/summaryFormat.d.mts.map +0 -1
  693. package/lib/summary/summaryFormat.mjs.map +0 -1
  694. package/lib/summary/summaryGenerator.d.mts.map +0 -1
  695. package/lib/summary/summaryGenerator.mjs.map +0 -1
  696. package/lib/summary/summaryManager.d.mts.map +0 -1
  697. package/lib/summary/summaryManager.mjs.map +0 -1
  698. package/lib/throttler.d.mts.map +0 -1
  699. package/lib/throttler.mjs.map +0 -1
  700. package/src/deltaManagerProxyBase.ts +0 -111
@@ -11,9 +11,9 @@ import { ICriticalContainerError } from "@fluidframework/container-definitions";
11
11
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
12
12
  import { DataProcessingError, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
13
13
 
14
- import { InboundSequencedContainerRuntimeMessage } from "./messageTypes";
15
- import { pkgVersion } from "./packageVersion";
16
- import { IBatchMetadata } from "./metadata";
14
+ import { InboundSequencedContainerRuntimeMessage } from "./messageTypes.js";
15
+ import { pkgVersion } from "./packageVersion.js";
16
+ import { IBatchMetadata } from "./metadata.js";
17
17
 
18
18
  /**
19
19
  * This represents a message that has been submitted and is added to the pending queue when `submit` is called on the
@@ -48,6 +48,7 @@ export interface IRuntimeStateHandler {
48
48
  reSubmit(message: IPendingBatchMessage): void;
49
49
  reSubmitBatch(batch: IPendingBatchMessage[]): void;
50
50
  isActiveConnection: () => boolean;
51
+ isAttached: () => boolean;
51
52
  }
52
53
 
53
54
  /** Union of keys of T */
@@ -182,28 +183,33 @@ export class PendingStateManager implements IDisposable {
182
183
  public async applyStashedOpsAt(seqNum?: number) {
183
184
  // apply stashed ops at sequence number
184
185
  while (!this.initialMessages.isEmpty()) {
185
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
186
- const nextMessage = this.initialMessages.peekFront()!;
187
186
  if (seqNum !== undefined) {
188
- if (nextMessage.referenceSequenceNumber > seqNum) {
187
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
188
+ const peekMessage = this.initialMessages.peekFront()!;
189
+ if (peekMessage.referenceSequenceNumber > seqNum) {
189
190
  break; // nothing left to do at this sequence number
190
191
  }
191
- if (nextMessage.referenceSequenceNumber < seqNum) {
192
+ if (peekMessage.referenceSequenceNumber < seqNum) {
192
193
  throw new Error("loaded from snapshot too recent to apply stashed ops");
193
194
  }
194
195
  }
195
-
196
+ // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
197
+ const nextMessage = this.initialMessages.shift()!;
196
198
  try {
197
199
  // applyStashedOp will cause the DDS to behave as if it has sent the op but not actually send it
198
200
  const localOpMetadata = await this.stateHandler.applyStashedOp(nextMessage.content);
199
- nextMessage.localOpMetadata = localOpMetadata;
201
+ if (!this.stateHandler.isAttached()) {
202
+ if (localOpMetadata !== undefined) {
203
+ throw new Error("Local Op Metadata must be undefined when not attached");
204
+ }
205
+ } else {
206
+ nextMessage.localOpMetadata = localOpMetadata;
207
+ // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
208
+ this.pendingMessages.push(nextMessage);
209
+ }
200
210
  } catch (error) {
201
211
  throw DataProcessingError.wrapIfUnrecognized(error, "applyStashedOp", nextMessage);
202
212
  }
203
-
204
- // then we push onto pendingMessages which will cause PendingStateManager to resubmit when we connect
205
- // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
206
- this.pendingMessages.push(this.initialMessages.shift()!);
207
213
  }
208
214
  }
209
215
 
@@ -2,7 +2,7 @@
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";
5
+
6
6
  import { IDeltaManager } from "@fluidframework/container-definitions";
7
7
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
8
  import {
@@ -13,11 +13,12 @@ import {
13
13
  ITelemetryLoggerExt,
14
14
  } from "@fluidframework/telemetry-utils";
15
15
  import { assert } from "@fluidframework/core-utils";
16
+ import type { EventEmitter } from "@fluid-internal/client-utils";
16
17
  import { performance } from "@fluid-internal/client-utils";
17
18
  import { isRuntimeMessage } from "@fluidframework/driver-utils";
18
- import { DeltaScheduler } from "./deltaScheduler";
19
- import { pkgVersion } from "./packageVersion";
20
- import { IBatchMetadata } from "./metadata";
19
+ import { DeltaScheduler } from "./deltaScheduler.js";
20
+ import { pkgVersion } from "./packageVersion.js";
21
+ import { IBatchMetadata } from "./metadata.js";
21
22
 
22
23
  type IRuntimeMessageMetadata =
23
24
  | 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";
@@ -2,6 +2,7 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
+
5
6
  /* eslint-disable @rushstack/no-new-null */
6
7
  import { IEvent, IEventProvider, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
8
  import {
@@ -13,7 +14,7 @@ import { assert } from "@fluidframework/core-utils";
13
14
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
14
15
  import { IDeltaManager } from "@fluidframework/container-definitions";
15
16
  import { IClient, IQuorumClients, ISequencedClient } from "@fluidframework/protocol-definitions";
16
- import { summarizerClientType } from "./summarizerClientElection";
17
+ import { summarizerClientType } from "./summarizerClientElection.js";
17
18
 
18
19
  // helper types for recursive readonly.
19
20
  // 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
 
@@ -254,6 +254,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
254
254
  }
255
255
  });
256
256
 
257
+ const immediatelyRefreshLatestSummaryAck =
258
+ this.mc.config.getBoolean("Fluid.Summarizer.immediatelyRefreshLatestSummaryAck") ??
259
+ true;
257
260
  this.generator = new SummaryGenerator(
258
261
  this.pendingAckTimer,
259
262
  this.heuristicData,
@@ -261,6 +264,11 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
261
264
  () => {
262
265
  this.totalSuccessfulAttempts++;
263
266
  },
267
+ async (options: IRefreshSummaryAckOptions) => {
268
+ if (immediatelyRefreshLatestSummaryAck) {
269
+ await this.refreshLatestSummaryAckAndHandleError(options);
270
+ }
271
+ },
264
272
  this.summaryWatcher,
265
273
  this.mc.logger,
266
274
  );
@@ -303,40 +311,48 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
303
311
  // https://dev.azure.com/fluidframework/internal/_workitems/edit/779
304
312
  await this.lockedSummaryAction(
305
313
  () => {},
306
- async () =>
307
- this.refreshLatestSummaryAckCallback({
314
+ async () => {
315
+ const options: IRefreshSummaryAckOptions = {
308
316
  proposalHandle: summaryOpHandle,
309
317
  ackHandle: summaryAckHandle,
310
318
  summaryRefSeq: refSequenceNumber,
311
319
  summaryLogger,
312
- }).catch(async (error) => {
313
- // If the error is 404, so maybe the fetched version no longer exists on server. We just
314
- // ignore this error in that case, as that means we will have another summaryAck for the
315
- // latest version with which we will refresh the state. However in case of single commit
316
- // summary, we might me missing a summary ack, so in that case we are still fine as the
317
- // code in `submitSummary` function in container runtime, will refresh the latest state
318
- // by calling `prefetchLatestSummaryThenClose`. We will load the next summarizer from the
319
- // updated state and be fine.
320
- const isIgnoredError =
321
- isFluidError(error) &&
322
- error.errorType === DriverErrorTypes.fileNotFoundOrAccessDeniedError;
323
-
324
- summaryLogger.sendTelemetryEvent(
325
- {
326
- eventName: isIgnoredError
327
- ? "HandleSummaryAckErrorIgnored"
328
- : "HandleLastSummaryAckError",
329
- referenceSequenceNumber: refSequenceNumber,
330
- proposalHandle: summaryOpHandle,
331
- ackHandle: summaryAckHandle,
332
- },
333
- error,
334
- );
335
- }),
320
+ };
321
+ await this.refreshLatestSummaryAckAndHandleError(options);
322
+ },
336
323
  () => {},
337
324
  );
338
325
  }
339
326
 
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,
352
+ );
353
+ });
354
+ };
355
+
340
356
  /**
341
357
  * Responsible for receiving and processing all the summary acks.
342
358
  * It starts processing ACKs after the one for the summary this client loaded from (initialSequenceNumber). Any
@@ -565,6 +581,8 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
565
581
  ...options,
566
582
  summaryLogger,
567
583
  cancellationToken: this.cancellationToken,
584
+ latestSummaryRefSeqNum:
585
+ this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
568
586
  };
569
587
  const summarizeResult = this.generator.summarize(summaryOptions, resultsBuilder);
570
588
  // ensure we wait till the end of the process
@@ -660,6 +678,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
660
678
  ...summarizeOptions,
661
679
  summaryLogger,
662
680
  cancellationToken: this.cancellationToken,
681
+ latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
663
682
  };
664
683
 
665
684
  // Note: no need to account for cancellationToken.waitCancelled here, as
@@ -731,6 +750,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
731
750
  summaryLogger,
732
751
  cancellationToken: this.cancellationToken,
733
752
  finalAttempt,
753
+ latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
734
754
  };
735
755
  const summarizeResult = this.generator.summarize(summaryOptions);
736
756
  return { summarizeProps, summarizeResult };
@@ -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,7 +3,7 @@
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,
@@ -26,6 +26,7 @@ import {
26
26
  PerformanceEvent,
27
27
  TelemetryDataTag,
28
28
  tagCodeArtifacts,
29
+ type ITelemetryErrorEventExt,
29
30
  } from "@fluidframework/telemetry-utils";
30
31
  import { assert, unreachableCase } from "@fluidframework/core-utils";
31
32
  import { mergeStats } from "@fluidframework/runtime-utils";
@@ -33,11 +34,12 @@ import {
33
34
  EscapedPath,
34
35
  ICreateChildDetails,
35
36
  IRefreshSummaryResult,
37
+ IStartSummaryResult,
36
38
  ISummarizerNodeRootContract,
37
39
  parseSummaryForSubtrees,
38
40
  SummaryNode,
39
41
  ValidateSummaryResult,
40
- } from "./summarizerNodeUtils";
42
+ } from "./summarizerNodeUtils.js";
41
43
 
42
44
  export interface IRootSummarizerNode extends ISummarizerNode, ISummarizerNodeRootContract {}
43
45
 
@@ -96,7 +98,22 @@ export class SummarizerNode implements IRootSummarizerNode {
96
98
  });
97
99
  }
98
100
 
99
- 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 {
100
117
  assert(
101
118
  this.wipSummaryLogger === undefined,
102
119
  0x19f /* "wipSummaryLogger should not be set yet in startSummary" */,
@@ -106,12 +123,40 @@ export class SummarizerNode implements IRootSummarizerNode {
106
123
  0x1a0 /* "Already tracking a summary" */,
107
124
  );
108
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
+
109
140
  this.wipSummaryLogger = summaryLogger;
110
141
 
111
142
  for (const child of this.children.values()) {
112
- 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
+ }
113
153
  }
114
154
  this.wipReferenceSequenceNumber = referenceSequenceNumber;
155
+ return {
156
+ nodes,
157
+ invalidNodes,
158
+ mismatchNumbers: sequenceNumberMismatchKeySet,
159
+ };
115
160
  }
116
161
 
117
162
  public async summarize(
@@ -623,7 +668,7 @@ export class SummarizerNode implements IRootSummarizerNode {
623
668
  /**
624
669
  * Creates and throws an error due to unexpected conditions.
625
670
  */
626
- protected throwUnexpectedError(eventProps: ITelemetryErrorEvent): never {
671
+ protected throwUnexpectedError(eventProps: ITelemetryErrorEventExt): never {
627
672
  const error = new LoggingError(eventProps.eventName, {
628
673
  ...eventProps,
629
674
  referenceSequenceNumber: this.wipReferenceSequenceNumber,
@@ -14,6 +14,15 @@ export interface IRefreshSummaryResult {
14
14
  isSummaryNewer: boolean;
15
15
  }
16
16
 
17
+ export interface IStartSummaryResult {
18
+ /** The number of summarizerNodes at the start of the summary. */
19
+ nodes: number;
20
+ /** The number of summarizerNodes in the wrong state. */
21
+ invalidNodes: number;
22
+ /** The invalid sequence numbers and their values. It should be in the format of validateSequenceNumber-nodeSequenceNumber */
23
+ mismatchNumbers: Set<string>;
24
+ }
25
+
17
26
  /**
18
27
  * Return type of validateSummary function. In case of success, the object returned should have success: true.
19
28
  * In case of failure, the object returned should have success: false and additional properties to indicate what
@@ -37,7 +46,11 @@ export type ValidateSummaryResult =
37
46
  };
38
47
 
39
48
  export interface ISummarizerNodeRootContract {
40
- startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryLoggerExt): void;
49
+ startSummary(
50
+ referenceSequenceNumber: number,
51
+ summaryLogger: ITelemetryLoggerExt,
52
+ latestSummaryRefSeqNum: number,
53
+ ): IStartSummaryResult;
41
54
  validateSummary(): ValidateSummaryResult;
42
55
  completeSummary(proposalHandle: string, validate: boolean): void;
43
56
  clearSummary(): void;
@@ -3,12 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import {
7
- ITelemetryLoggerExt,
8
- LoggingError,
9
- TelemetryDataTag,
10
- tagCodeArtifacts,
11
- } from "@fluidframework/telemetry-utils";
6
+ import { LoggingError, TelemetryDataTag, tagCodeArtifacts } from "@fluidframework/telemetry-utils";
12
7
  import { assert, LazyPromise } from "@fluidframework/core-utils";
13
8
  import {
14
9
  CreateChildSummarizerNodeParam,
@@ -24,15 +19,16 @@ import {
24
19
  } from "@fluidframework/runtime-definitions";
25
20
  import { unpackChildNodesUsedRoutes } from "@fluidframework/runtime-utils";
26
21
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
27
- import { cloneGCData, unpackChildNodesGCDetails } from "../../gc";
28
- import { SummarizerNode } from "./summarizerNode";
22
+ import { cloneGCData, unpackChildNodesGCDetails } from "../../gc/index.js";
23
+ import { SummarizerNode } from "./summarizerNode.js";
29
24
  import {
30
25
  EscapedPath,
31
26
  ICreateChildDetails,
27
+ IStartSummaryResult,
32
28
  ISummarizerNodeRootContract,
33
29
  SummaryNode,
34
30
  ValidateSummaryResult,
35
- } from "./summarizerNodeUtils";
31
+ } from "./summarizerNodeUtils.js";
36
32
 
37
33
  export interface IRootSummarizerNodeWithGC
38
34
  extends ISummarizerNodeWithGC,
@@ -236,7 +232,11 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
236
232
  /**
237
233
  * Called during the start of a summary. Updates the work-in-progress used routes.
238
234
  */
239
- public startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryLoggerExt) {
235
+ public startSummary(
236
+ referenceSequenceNumber: number,
237
+ summaryLogger: ITelemetryBaseLogger,
238
+ latestSummaryRefSeqNum: number,
239
+ ): IStartSummaryResult {
240
240
  // If GC is disabled, skip setting wip used routes since we should not track GC state.
241
241
  if (!this.gcDisabled) {
242
242
  assert(
@@ -244,7 +244,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
244
244
  0x1b4 /* "We should not already be tracking used routes when to track a new summary" */,
245
245
  );
246
246
  }
247
- super.startSummary(referenceSequenceNumber, summaryLogger);
247
+ return super.startSummary(referenceSequenceNumber, summaryLogger, latestSummaryRefSeqNum);
248
248
  }
249
249
 
250
250
  /**