@fluidframework/container-runtime 2.0.0-rc.4.0.6 → 2.0.0-rc.5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (424) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/api-extractor/api-extractor-lint-bundle.json +5 -0
  3. package/api-extractor/api-extractor-lint-legacy.cjs.json +5 -0
  4. package/api-extractor/api-extractor-lint-legacy.esm.json +5 -0
  5. package/api-extractor/api-extractor-lint-public.cjs.json +5 -0
  6. package/api-extractor/api-extractor-lint-public.esm.json +5 -0
  7. package/api-extractor.json +1 -1
  8. package/api-report/{container-runtime.api.md → container-runtime.alpha.api.md} +33 -516
  9. package/api-report/container-runtime.beta.api.md +73 -0
  10. package/api-report/container-runtime.public.api.md +73 -0
  11. package/biome.jsonc +4 -0
  12. package/container-runtime.test-files.tar +0 -0
  13. package/dist/batchTracker.d.ts.map +1 -1
  14. package/dist/batchTracker.js.map +1 -1
  15. package/dist/blobManager.d.ts +3 -20
  16. package/dist/blobManager.d.ts.map +1 -1
  17. package/dist/blobManager.js +1 -35
  18. package/dist/blobManager.js.map +1 -1
  19. package/dist/channelCollection.d.ts +21 -12
  20. package/dist/channelCollection.d.ts.map +1 -1
  21. package/dist/channelCollection.js +113 -110
  22. package/dist/channelCollection.js.map +1 -1
  23. package/dist/connectionTelemetry.d.ts +1 -1
  24. package/dist/connectionTelemetry.d.ts.map +1 -1
  25. package/dist/connectionTelemetry.js +14 -14
  26. package/dist/connectionTelemetry.js.map +1 -1
  27. package/dist/containerHandleContext.d.ts +2 -1
  28. package/dist/containerHandleContext.d.ts.map +1 -1
  29. package/dist/containerHandleContext.js.map +1 -1
  30. package/dist/containerRuntime.d.ts +17 -34
  31. package/dist/containerRuntime.d.ts.map +1 -1
  32. package/dist/containerRuntime.js +109 -145
  33. package/dist/containerRuntime.js.map +1 -1
  34. package/dist/dataStore.d.ts.map +1 -1
  35. package/dist/dataStore.js.map +1 -1
  36. package/dist/dataStoreContext.d.ts +30 -44
  37. package/dist/dataStoreContext.d.ts.map +1 -1
  38. package/dist/dataStoreContext.js +26 -40
  39. package/dist/dataStoreContext.js.map +1 -1
  40. package/dist/dataStoreContexts.d.ts.map +1 -1
  41. package/dist/dataStoreContexts.js.map +1 -1
  42. package/dist/dataStoreRegistry.js.map +1 -1
  43. package/dist/deltaManagerProxies.d.ts +4 -3
  44. package/dist/deltaManagerProxies.d.ts.map +1 -1
  45. package/dist/deltaManagerProxies.js.map +1 -1
  46. package/dist/deltaScheduler.d.ts +1 -1
  47. package/dist/deltaScheduler.d.ts.map +1 -1
  48. package/dist/deltaScheduler.js +1 -3
  49. package/dist/deltaScheduler.js.map +1 -1
  50. package/dist/gc/garbageCollection.d.ts +5 -5
  51. package/dist/gc/garbageCollection.d.ts.map +1 -1
  52. package/dist/gc/garbageCollection.js +29 -30
  53. package/dist/gc/garbageCollection.js.map +1 -1
  54. package/dist/gc/gcConfigs.d.ts.map +1 -1
  55. package/dist/gc/gcConfigs.js +12 -31
  56. package/dist/gc/gcConfigs.js.map +1 -1
  57. package/dist/gc/gcDefinitions.d.ts +10 -38
  58. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  59. package/dist/gc/gcDefinitions.js +1 -5
  60. package/dist/gc/gcDefinitions.js.map +1 -1
  61. package/dist/gc/gcHelpers.d.ts +2 -3
  62. package/dist/gc/gcHelpers.d.ts.map +1 -1
  63. package/dist/gc/gcHelpers.js.map +1 -1
  64. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  65. package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
  66. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  68. package/dist/gc/gcSummaryStateTracker.d.ts +2 -35
  69. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  70. package/dist/gc/gcSummaryStateTracker.js +9 -62
  71. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  72. package/dist/gc/gcTelemetry.d.ts +2 -2
  73. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  74. package/dist/gc/gcTelemetry.js +3 -9
  75. package/dist/gc/gcTelemetry.js.map +1 -1
  76. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  77. package/dist/gc/index.d.ts +1 -1
  78. package/dist/gc/index.d.ts.map +1 -1
  79. package/dist/gc/index.js +1 -3
  80. package/dist/gc/index.js.map +1 -1
  81. package/dist/index.d.ts +2 -2
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js.map +1 -1
  84. package/dist/legacy.d.ts +1 -1
  85. package/dist/messageTypes.d.ts +6 -22
  86. package/dist/messageTypes.d.ts.map +1 -1
  87. package/dist/messageTypes.js.map +1 -1
  88. package/dist/opLifecycle/batchManager.js.map +1 -1
  89. package/dist/opLifecycle/definitions.d.ts +2 -2
  90. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  91. package/dist/opLifecycle/definitions.js.map +1 -1
  92. package/dist/opLifecycle/index.d.ts +1 -1
  93. package/dist/opLifecycle/index.d.ts.map +1 -1
  94. package/dist/opLifecycle/index.js.map +1 -1
  95. package/dist/opLifecycle/opCompressor.d.ts +11 -1
  96. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  97. package/dist/opLifecycle/opCompressor.js +13 -2
  98. package/dist/opLifecycle/opCompressor.js.map +1 -1
  99. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  100. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  101. package/dist/opLifecycle/opDecompressor.js +1 -2
  102. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  103. package/dist/opLifecycle/opGroupingManager.d.ts +10 -3
  104. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  105. package/dist/opLifecycle/opGroupingManager.js +7 -0
  106. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  107. package/dist/opLifecycle/opSplitter.d.ts +4 -2
  108. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  109. package/dist/opLifecycle/opSplitter.js +13 -8
  110. package/dist/opLifecycle/opSplitter.js.map +1 -1
  111. package/dist/opLifecycle/outbox.d.ts +10 -0
  112. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  113. package/dist/opLifecycle/outbox.js +13 -18
  114. package/dist/opLifecycle/outbox.js.map +1 -1
  115. package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  116. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  117. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  118. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  119. package/dist/opProperties.d.ts +1 -1
  120. package/dist/opProperties.d.ts.map +1 -1
  121. package/dist/opProperties.js.map +1 -1
  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.map +1 -1
  126. package/dist/pendingStateManager.js +15 -5
  127. package/dist/pendingStateManager.js.map +1 -1
  128. package/dist/scheduleManager.d.ts +1 -1
  129. package/dist/scheduleManager.d.ts.map +1 -1
  130. package/dist/scheduleManager.js.map +1 -1
  131. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  132. package/dist/summary/documentSchema.d.ts.map +1 -1
  133. package/dist/summary/documentSchema.js +2 -3
  134. package/dist/summary/documentSchema.js.map +1 -1
  135. package/dist/summary/index.d.ts +2 -2
  136. package/dist/summary/index.d.ts.map +1 -1
  137. package/dist/summary/index.js.map +1 -1
  138. package/dist/summary/orderedClientElection.d.ts +4 -2
  139. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  140. package/dist/summary/orderedClientElection.js +35 -13
  141. package/dist/summary/orderedClientElection.js.map +1 -1
  142. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  143. package/dist/summary/runningSummarizer.d.ts +1 -6
  144. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  145. package/dist/summary/runningSummarizer.js +23 -110
  146. package/dist/summary/runningSummarizer.js.map +1 -1
  147. package/dist/summary/summarizer.d.ts +1 -1
  148. package/dist/summary/summarizer.d.ts.map +1 -1
  149. package/dist/summary/summarizer.js +4 -1
  150. package/dist/summary/summarizer.js.map +1 -1
  151. package/dist/summary/summarizerClientElection.d.ts +1 -1
  152. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  153. package/dist/summary/summarizerClientElection.js +2 -2
  154. package/dist/summary/summarizerClientElection.js.map +1 -1
  155. package/dist/summary/summarizerHeuristics.js.map +1 -1
  156. package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -3
  157. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  158. package/dist/summary/summarizerNode/summarizerNode.js +16 -16
  159. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  160. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  161. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  162. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  163. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
  164. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  165. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
  166. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  167. package/dist/summary/summarizerTypes.d.ts +17 -29
  168. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  169. package/dist/summary/summarizerTypes.js.map +1 -1
  170. package/dist/summary/summaryCollection.d.ts +1 -1
  171. package/dist/summary/summaryCollection.d.ts.map +1 -1
  172. package/dist/summary/summaryCollection.js +11 -11
  173. package/dist/summary/summaryCollection.js.map +1 -1
  174. package/dist/summary/summaryFormat.d.ts +2 -3
  175. package/dist/summary/summaryFormat.d.ts.map +1 -1
  176. package/dist/summary/summaryFormat.js +2 -2
  177. package/dist/summary/summaryFormat.js.map +1 -1
  178. package/dist/summary/summaryGenerator.d.ts +7 -8
  179. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  180. package/dist/summary/summaryGenerator.js +27 -24
  181. package/dist/summary/summaryGenerator.js.map +1 -1
  182. package/dist/summary/summaryManager.d.ts.map +1 -1
  183. package/dist/summary/summaryManager.js +1 -2
  184. package/dist/summary/summaryManager.js.map +1 -1
  185. package/dist/throttler.d.ts.map +1 -1
  186. package/dist/throttler.js +3 -1
  187. package/dist/throttler.js.map +1 -1
  188. package/lib/batchTracker.d.ts.map +1 -1
  189. package/lib/batchTracker.js +1 -1
  190. package/lib/batchTracker.js.map +1 -1
  191. package/lib/blobManager.d.ts +3 -20
  192. package/lib/blobManager.d.ts.map +1 -1
  193. package/lib/blobManager.js +2 -36
  194. package/lib/blobManager.js.map +1 -1
  195. package/lib/channelCollection.d.ts +21 -12
  196. package/lib/channelCollection.d.ts.map +1 -1
  197. package/lib/channelCollection.js +114 -112
  198. package/lib/channelCollection.js.map +1 -1
  199. package/lib/connectionTelemetry.d.ts +1 -1
  200. package/lib/connectionTelemetry.d.ts.map +1 -1
  201. package/lib/connectionTelemetry.js +2 -2
  202. package/lib/connectionTelemetry.js.map +1 -1
  203. package/lib/containerHandleContext.d.ts +2 -1
  204. package/lib/containerHandleContext.d.ts.map +1 -1
  205. package/lib/containerHandleContext.js.map +1 -1
  206. package/lib/containerRuntime.d.ts +17 -34
  207. package/lib/containerRuntime.d.ts.map +1 -1
  208. package/lib/containerRuntime.js +106 -142
  209. package/lib/containerRuntime.js.map +1 -1
  210. package/lib/dataStore.d.ts.map +1 -1
  211. package/lib/dataStore.js.map +1 -1
  212. package/lib/dataStoreContext.d.ts +30 -44
  213. package/lib/dataStoreContext.d.ts.map +1 -1
  214. package/lib/dataStoreContext.js +29 -43
  215. package/lib/dataStoreContext.js.map +1 -1
  216. package/lib/dataStoreContexts.d.ts.map +1 -1
  217. package/lib/dataStoreContexts.js +1 -1
  218. package/lib/dataStoreContexts.js.map +1 -1
  219. package/lib/dataStoreRegistry.js.map +1 -1
  220. package/lib/deltaManagerProxies.d.ts +4 -3
  221. package/lib/deltaManagerProxies.d.ts.map +1 -1
  222. package/lib/deltaManagerProxies.js.map +1 -1
  223. package/lib/deltaScheduler.d.ts +1 -1
  224. package/lib/deltaScheduler.d.ts.map +1 -1
  225. package/lib/deltaScheduler.js +1 -3
  226. package/lib/deltaScheduler.js.map +1 -1
  227. package/lib/gc/garbageCollection.d.ts +5 -5
  228. package/lib/gc/garbageCollection.d.ts.map +1 -1
  229. package/lib/gc/garbageCollection.js +30 -31
  230. package/lib/gc/garbageCollection.js.map +1 -1
  231. package/lib/gc/gcConfigs.d.ts.map +1 -1
  232. package/lib/gc/gcConfigs.js +13 -32
  233. package/lib/gc/gcConfigs.js.map +1 -1
  234. package/lib/gc/gcDefinitions.d.ts +10 -38
  235. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  236. package/lib/gc/gcDefinitions.js +0 -4
  237. package/lib/gc/gcDefinitions.js.map +1 -1
  238. package/lib/gc/gcHelpers.d.ts +2 -3
  239. package/lib/gc/gcHelpers.d.ts.map +1 -1
  240. package/lib/gc/gcHelpers.js.map +1 -1
  241. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  242. package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
  243. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  244. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  245. package/lib/gc/gcSummaryStateTracker.d.ts +2 -35
  246. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  247. package/lib/gc/gcSummaryStateTracker.js +4 -57
  248. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  249. package/lib/gc/gcTelemetry.d.ts +2 -2
  250. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  251. package/lib/gc/gcTelemetry.js +3 -9
  252. package/lib/gc/gcTelemetry.js.map +1 -1
  253. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  254. package/lib/gc/index.d.ts +1 -1
  255. package/lib/gc/index.d.ts.map +1 -1
  256. package/lib/gc/index.js +1 -1
  257. package/lib/gc/index.js.map +1 -1
  258. package/lib/index.d.ts +2 -2
  259. package/lib/index.d.ts.map +1 -1
  260. package/lib/index.js.map +1 -1
  261. package/lib/legacy.d.ts +1 -1
  262. package/lib/messageTypes.d.ts +6 -22
  263. package/lib/messageTypes.d.ts.map +1 -1
  264. package/lib/messageTypes.js.map +1 -1
  265. package/lib/opLifecycle/batchManager.js.map +1 -1
  266. package/lib/opLifecycle/definitions.d.ts +2 -2
  267. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  268. package/lib/opLifecycle/definitions.js.map +1 -1
  269. package/lib/opLifecycle/index.d.ts +1 -1
  270. package/lib/opLifecycle/index.d.ts.map +1 -1
  271. package/lib/opLifecycle/index.js +1 -1
  272. package/lib/opLifecycle/index.js.map +1 -1
  273. package/lib/opLifecycle/opCompressor.d.ts +11 -1
  274. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  275. package/lib/opLifecycle/opCompressor.js +13 -2
  276. package/lib/opLifecycle/opCompressor.js.map +1 -1
  277. package/lib/opLifecycle/opDecompressor.d.ts +1 -1
  278. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  279. package/lib/opLifecycle/opDecompressor.js +1 -2
  280. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  281. package/lib/opLifecycle/opGroupingManager.d.ts +10 -3
  282. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  283. package/lib/opLifecycle/opGroupingManager.js +7 -0
  284. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  285. package/lib/opLifecycle/opSplitter.d.ts +4 -2
  286. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  287. package/lib/opLifecycle/opSplitter.js +13 -8
  288. package/lib/opLifecycle/opSplitter.js.map +1 -1
  289. package/lib/opLifecycle/outbox.d.ts +10 -0
  290. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  291. package/lib/opLifecycle/outbox.js +13 -18
  292. package/lib/opLifecycle/outbox.js.map +1 -1
  293. package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  294. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  295. package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
  296. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  297. package/lib/opProperties.d.ts +1 -1
  298. package/lib/opProperties.d.ts.map +1 -1
  299. package/lib/opProperties.js.map +1 -1
  300. package/lib/packageVersion.d.ts +1 -1
  301. package/lib/packageVersion.js +1 -1
  302. package/lib/packageVersion.js.map +1 -1
  303. package/lib/pendingStateManager.d.ts.map +1 -1
  304. package/lib/pendingStateManager.js +15 -5
  305. package/lib/pendingStateManager.js.map +1 -1
  306. package/lib/scheduleManager.d.ts +1 -1
  307. package/lib/scheduleManager.d.ts.map +1 -1
  308. package/lib/scheduleManager.js.map +1 -1
  309. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  310. package/lib/summary/documentSchema.d.ts.map +1 -1
  311. package/lib/summary/documentSchema.js +2 -3
  312. package/lib/summary/documentSchema.js.map +1 -1
  313. package/lib/summary/index.d.ts +2 -2
  314. package/lib/summary/index.d.ts.map +1 -1
  315. package/lib/summary/index.js +1 -1
  316. package/lib/summary/index.js.map +1 -1
  317. package/lib/summary/orderedClientElection.d.ts +4 -2
  318. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  319. package/lib/summary/orderedClientElection.js +35 -13
  320. package/lib/summary/orderedClientElection.js.map +1 -1
  321. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  322. package/lib/summary/runningSummarizer.d.ts +1 -6
  323. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  324. package/lib/summary/runningSummarizer.js +22 -109
  325. package/lib/summary/runningSummarizer.js.map +1 -1
  326. package/lib/summary/summarizer.d.ts +1 -1
  327. package/lib/summary/summarizer.d.ts.map +1 -1
  328. package/lib/summary/summarizer.js +4 -1
  329. package/lib/summary/summarizer.js.map +1 -1
  330. package/lib/summary/summarizerClientElection.d.ts +1 -1
  331. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  332. package/lib/summary/summarizerClientElection.js +1 -1
  333. package/lib/summary/summarizerClientElection.js.map +1 -1
  334. package/lib/summary/summarizerHeuristics.js.map +1 -1
  335. package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -3
  336. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  337. package/lib/summary/summarizerNode/summarizerNode.js +14 -14
  338. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  339. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  340. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  341. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  342. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
  343. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  344. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +5 -2
  345. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  346. package/lib/summary/summarizerTypes.d.ts +17 -29
  347. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  348. package/lib/summary/summarizerTypes.js.map +1 -1
  349. package/lib/summary/summaryCollection.d.ts +1 -1
  350. package/lib/summary/summaryCollection.d.ts.map +1 -1
  351. package/lib/summary/summaryCollection.js +3 -3
  352. package/lib/summary/summaryCollection.js.map +1 -1
  353. package/lib/summary/summaryFormat.d.ts +2 -3
  354. package/lib/summary/summaryFormat.d.ts.map +1 -1
  355. package/lib/summary/summaryFormat.js +2 -2
  356. package/lib/summary/summaryFormat.js.map +1 -1
  357. package/lib/summary/summaryGenerator.d.ts +7 -8
  358. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  359. package/lib/summary/summaryGenerator.js +26 -23
  360. package/lib/summary/summaryGenerator.js.map +1 -1
  361. package/lib/summary/summaryManager.d.ts.map +1 -1
  362. package/lib/summary/summaryManager.js +1 -2
  363. package/lib/summary/summaryManager.js.map +1 -1
  364. package/lib/throttler.d.ts.map +1 -1
  365. package/lib/throttler.js +3 -1
  366. package/lib/throttler.js.map +1 -1
  367. package/lib/tsdoc-metadata.json +1 -1
  368. package/package.json +92 -28
  369. package/src/batchTracker.ts +5 -2
  370. package/src/blobManager.ts +21 -61
  371. package/src/channelCollection.ts +179 -186
  372. package/src/connectionTelemetry.ts +18 -12
  373. package/src/containerHandleContext.ts +2 -1
  374. package/src/containerRuntime.ts +166 -214
  375. package/src/dataStore.ts +2 -1
  376. package/src/dataStoreContext.ts +79 -98
  377. package/src/dataStoreContexts.ts +7 -2
  378. package/src/deltaManagerProxies.ts +15 -6
  379. package/src/deltaScheduler.ts +5 -4
  380. package/src/gc/garbageCollection.md +0 -8
  381. package/src/gc/garbageCollection.ts +66 -57
  382. package/src/gc/gcConfigs.ts +15 -37
  383. package/src/gc/gcDefinitions.ts +20 -39
  384. package/src/gc/gcHelpers.ts +8 -4
  385. package/src/gc/gcSummaryDefinitions.ts +1 -1
  386. package/src/gc/gcSummaryStateTracker.ts +11 -74
  387. package/src/gc/gcTelemetry.ts +4 -11
  388. package/src/gc/index.ts +0 -2
  389. package/src/index.ts +1 -2
  390. package/src/messageTypes.ts +8 -24
  391. package/src/opLifecycle/README.md +120 -160
  392. package/src/opLifecycle/definitions.ts +2 -2
  393. package/src/opLifecycle/index.ts +5 -1
  394. package/src/opLifecycle/opCompressor.ts +13 -2
  395. package/src/opLifecycle/opDecompressor.ts +3 -7
  396. package/src/opLifecycle/opGroupingManager.ts +12 -8
  397. package/src/opLifecycle/opSplitter.ts +22 -11
  398. package/src/opLifecycle/outbox.ts +14 -32
  399. package/src/opLifecycle/remoteMessageProcessor.ts +4 -1
  400. package/src/opProperties.ts +2 -2
  401. package/src/packageVersion.ts +1 -1
  402. package/src/pendingStateManager.ts +20 -7
  403. package/src/scheduleManager.ts +4 -1
  404. package/src/summary/documentSchema.ts +4 -7
  405. package/src/summary/images/appTree.png +0 -0
  406. package/src/summary/images/protocolAndAppTree.png +0 -0
  407. package/src/summary/images/summaryTree.png +0 -0
  408. package/src/summary/index.ts +5 -2
  409. package/src/summary/orderedClientElection.ts +100 -22
  410. package/src/summary/runningSummarizer.ts +54 -124
  411. package/src/summary/summarizer.ts +5 -2
  412. package/src/summary/summarizerClientElection.ts +4 -2
  413. package/src/summary/summarizerNode/summarizerNode.ts +23 -30
  414. package/src/summary/summarizerNode/summarizerNodeUtils.ts +9 -3
  415. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -11
  416. package/src/summary/summarizerTypes.ts +32 -33
  417. package/src/summary/summaryCollection.ts +6 -3
  418. package/src/summary/summaryFormat.ts +18 -10
  419. package/src/summary/summaryFormats.md +160 -0
  420. package/src/summary/summaryGenerator.ts +47 -30
  421. package/src/summary/summaryManager.ts +6 -9
  422. package/src/throttler.ts +3 -1
  423. package/tsconfig.json +2 -0
  424. package/tsdoc.json +4 -0
@@ -6,8 +6,11 @@
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
8
  import { assert, Deferred, PromiseTimer, delay } from "@fluidframework/core-utils/internal";
9
- import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
10
- import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
9
+ import {
10
+ DriverErrorTypes,
11
+ MessageType,
12
+ ISequencedDocumentMessage,
13
+ } from "@fluidframework/driver-definitions/internal";
11
14
  import {
12
15
  MonitoringContext,
13
16
  UsageError,
@@ -38,9 +41,15 @@ import {
38
41
  ISummaryCancellationToken,
39
42
  SubmitSummaryResult,
40
43
  SummarizerStopReason,
44
+ type IRetriableFailureError,
41
45
  } from "./summarizerTypes.js";
42
- import { IAckedSummary, IClientSummaryWatcher, SummaryCollection } from "./summaryCollection.js";
43
46
  import {
47
+ IAckedSummary,
48
+ IClientSummaryWatcher,
49
+ SummaryCollection,
50
+ } from "./summaryCollection.js";
51
+ import {
52
+ RetriableSummaryError,
44
53
  SummarizeReason,
45
54
  SummarizeResultBuilder,
46
55
  SummaryGenerator,
@@ -67,7 +76,10 @@ export const defaultMaxAttemptsForSubmitFailures = 5;
67
76
  * track of summaries that it is generating as they are broadcast and acked/nacked.
68
77
  * This object is created and controlled by Summarizer object.
69
78
  */
70
- export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> implements IDisposable {
79
+ export class RunningSummarizer
80
+ extends TypedEventEmitter<ISummarizerEvents>
81
+ implements IDisposable
82
+ {
71
83
  public static async start(
72
84
  logger: ITelemetryBaseLogger,
73
85
  summaryWatcher: IClientSummaryWatcher,
@@ -229,7 +241,10 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
229
241
  // Cap the maximum amount of time client will wait for a summarize op ack to maxSummarizeAckWaitTime
230
242
  // configuration.maxAckWaitTime is composed from defaults, server values, and runtime overrides
231
243
 
232
- const maxAckWaitTime = Math.min(this.configuration.maxAckWaitTime, maxSummarizeAckWaitTime);
244
+ const maxAckWaitTime = Math.min(
245
+ this.configuration.maxAckWaitTime,
246
+ maxSummarizeAckWaitTime,
247
+ );
233
248
 
234
249
  this.pendingAckTimer = new PromiseTimer(maxAckWaitTime, () => {
235
250
  // Note: summarizeCount (from ChildLogger definition) may be 0,
@@ -257,8 +272,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
257
272
  });
258
273
 
259
274
  const immediatelyRefreshLatestSummaryAck =
260
- this.mc.config.getBoolean("Fluid.Summarizer.immediatelyRefreshLatestSummaryAck") ??
261
- true;
275
+ this.mc.config.getBoolean("Fluid.Summarizer.immediatelyRefreshLatestSummaryAck") ?? true;
262
276
  this.generator = new SummaryGenerator(
263
277
  this.pendingAckTimer,
264
278
  this.heuristicData,
@@ -437,7 +451,10 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
437
451
  * @param op - op to check
438
452
  * @returns true if this op can trigger a summary
439
453
  */
440
- private opCanTriggerSummary(op: ISequencedDocumentMessage, runtimeMessage: boolean): boolean {
454
+ private opCanTriggerSummary(
455
+ op: ISequencedDocumentMessage,
456
+ runtimeMessage: boolean,
457
+ ): boolean {
441
458
  switch (op.type) {
442
459
  case MessageType.Summarize:
443
460
  case MessageType.SummaryAck:
@@ -474,7 +491,6 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
474
491
  this.trySummarizeOnce(
475
492
  // summarizeProps
476
493
  { summarizeReason: "lastSummary" },
477
- // ISummarizeOptions, using defaults: { refreshLatestAck: false, fullTree: false }
478
494
  {},
479
495
  );
480
496
  }
@@ -583,8 +599,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
583
599
  ...options,
584
600
  summaryLogger,
585
601
  cancellationToken: this.cancellationToken,
586
- latestSummaryRefSeqNum:
587
- this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
602
+ latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
588
603
  };
589
604
  const summarizeResult = this.generator.summarize(summaryOptions, resultsBuilder);
590
605
  // ensure we wait till the end of the process
@@ -627,9 +642,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
627
642
  this.beforeSummaryAction();
628
643
  },
629
644
  async () => {
630
- return this.mc.config.getBoolean("Fluid.Summarizer.UseDynamicRetries")
631
- ? this.trySummarizeWithRetries(reason)
632
- : this.trySummarizeWithStaticAttempts(reason);
645
+ return this.trySummarizeWithRetries(reason);
633
646
  },
634
647
  () => {
635
648
  this.afterSummaryAction();
@@ -639,92 +652,6 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
639
652
  });
640
653
  }
641
654
 
642
- /**
643
- * Tries to summarize 2 times with pre-defined summary options. If an attempt fails with "retryAfterSeconds"
644
- * param, that attempt is tried once more.
645
- */
646
- private async trySummarizeWithStaticAttempts(reason: SummarizeReason) {
647
- const attemptOptions: ISummarizeOptions[] = [
648
- { refreshLatestAck: false, fullTree: false },
649
- { refreshLatestAck: true, fullTree: false },
650
- ];
651
- let summaryAttempts = 0;
652
- let summaryAttemptsPerPhase = 0;
653
- let summaryAttemptPhase = 0;
654
- let error: any;
655
- while (summaryAttemptPhase < attemptOptions.length) {
656
- if (this.cancellationToken.cancelled) {
657
- return;
658
- }
659
-
660
- // We only want to attempt 1 summary when reason is "lastSummary"
661
- if (++summaryAttempts > 1 && reason === "lastSummary") {
662
- return;
663
- }
664
-
665
- summaryAttemptsPerPhase++;
666
-
667
- const summarizeOptions = attemptOptions[summaryAttemptPhase];
668
- const summarizeProps: ISummarizeTelemetryProperties = {
669
- summarizeReason: reason,
670
- summaryAttempts,
671
- summaryAttemptsPerPhase,
672
- summaryAttemptPhase: summaryAttemptPhase + 1, // make everything 1-based
673
- ...summarizeOptions,
674
- };
675
- const summaryLogger = createChildLogger({
676
- logger: this.mc.logger,
677
- properties: { all: summarizeProps },
678
- });
679
- const summaryOptions: ISubmitSummaryOptions = {
680
- ...summarizeOptions,
681
- summaryLogger,
682
- cancellationToken: this.cancellationToken,
683
- latestSummaryRefSeqNum: this.heuristicData.lastSuccessfulSummary.refSequenceNumber,
684
- };
685
-
686
- // Note: no need to account for cancellationToken.waitCancelled here, as
687
- // this is accounted SummaryGenerator.summarizeCore that controls receivedSummaryAckOrNack.
688
- const resultSummarize = this.generator.summarize(summaryOptions);
689
- const ackNackResult = await resultSummarize.receivedSummaryAckOrNack;
690
- if (ackNackResult.success) {
691
- return;
692
- }
693
-
694
- error = ackNackResult.error;
695
-
696
- // Check for retryDelay that can come from summaryNack, upload summary or submit summary flows.
697
- // Retry the same step only once per retryAfter response.
698
- const submitResult = await resultSummarize.summarySubmitted;
699
- const delaySeconds = !submitResult.success
700
- ? submitResult.data?.retryAfterSeconds
701
- : ackNackResult.data?.retryAfterSeconds;
702
- if (delaySeconds === undefined || summaryAttemptsPerPhase > 1) {
703
- summaryAttemptPhase++;
704
- summaryAttemptsPerPhase = 0;
705
- }
706
-
707
- if (delaySeconds !== undefined) {
708
- this.mc.logger.sendPerformanceEvent({
709
- eventName: "SummarizeAttemptDelay",
710
- duration: delaySeconds,
711
- summaryNackDelay: ackNackResult.data?.retryAfterSeconds !== undefined,
712
- ...summarizeProps,
713
- });
714
- await delay(delaySeconds * 1000);
715
- }
716
- }
717
- this.mc.logger.sendErrorEvent(
718
- {
719
- eventName: "SummarizeFailed",
720
- maxAttempts: attemptOptions.length,
721
- summaryAttempts: summaryAttemptPhase,
722
- },
723
- error,
724
- );
725
- this.stopSummarizerCallback("failToSummarize");
726
- }
727
-
728
655
  /**
729
656
  * Tries to summarize with retries where retry is based on the failure params.
730
657
  * For example, summarization may be retried for failures with "retryAfterSeconds" param.
@@ -773,7 +700,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
773
700
  let done = false;
774
701
  let status: "success" | "failure" | "canceled" = "success";
775
702
  let results: ISummarizeResults | undefined;
776
- let error: any;
703
+ let error: IRetriableFailureError | undefined;
777
704
  do {
778
705
  currentAttempt++;
779
706
  if (this.cancellationToken.cancelled) {
@@ -793,22 +720,18 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
793
720
  break;
794
721
  }
795
722
 
796
- // Update max attempts and retry params from the failure result.
797
- // If submit summary failed, use the params from "summarySubmitted" result. Else, use the params
798
- // from "receivedSummaryAckOrNack" result.
723
+ // Update max attempts from the failure result.
724
+ // If submit summary failed, use maxAttemptsForSubmitFailures. Else use the defaultMaxAttempts.
799
725
  // Note: Check "summarySubmitted" result first because if it fails, ack nack would fail as well.
800
726
  const submitSummaryResult = await results.summarySubmitted;
801
- if (!submitSummaryResult.success) {
802
- maxAttempts = this.maxAttemptsForSubmitFailures;
803
- retryAfterSeconds = submitSummaryResult.data?.retryAfterSeconds;
804
- } else {
805
- maxAttempts = defaultMaxAttempts;
806
- retryAfterSeconds = ackNackResult.data?.retryAfterSeconds;
807
- }
727
+ maxAttempts = !submitSummaryResult.success
728
+ ? this.maxAttemptsForSubmitFailures
729
+ : defaultMaxAttempts;
808
730
 
809
731
  // Emit "summarize" event for this failed attempt.
810
732
  status = "failure";
811
733
  error = ackNackResult.error;
734
+ retryAfterSeconds = error.retryAfterSeconds;
812
735
  const eventProps: ISummarizeEventProps = {
813
736
  result: status,
814
737
  currentAttempt,
@@ -817,27 +740,26 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
817
740
  };
818
741
  this.emit("summarize", eventProps);
819
742
 
820
- // If the failure doesn't have "retryAfterSeconds" or the max number of attempts have been done, we're done.
743
+ // Break if the failure doesn't have "retryAfterSeconds" or we are one less from max number of attempts.
744
+ // Note that the final attempt if "retryAfterSeconds" does exist happens outside of the do..while loop.
821
745
  if (retryAfterSeconds === undefined || currentAttempt >= maxAttempts - 1) {
822
746
  done = true;
823
747
  }
824
748
 
825
- // If the failure has "retryAfterSeconds", add a delay of that time. In this case, a final attempt will
826
- // take place and we need to wait for "retryAfterSeconds" before that.
827
- if (retryAfterSeconds !== undefined) {
749
+ // If the failure has "retryAfterSeconds", add a delay of that time before starting the next attempt.
750
+ if (retryAfterSeconds !== undefined && retryAfterSeconds > 0) {
828
751
  this.mc.logger.sendPerformanceEvent({
829
752
  eventName: "SummarizeAttemptDelay",
830
- duration: retryAfterSeconds,
831
- summaryNackDelay: ackNackResult.data?.retryAfterSeconds !== undefined,
753
+ duration: retryAfterSeconds * 1000,
754
+ summaryNackDelay: ackNackResult.data !== undefined, // This will only be defined only for nack failures.
832
755
  stage: submitSummaryResult.data?.stage,
833
- dynamicRetries: true, // To differentiate this telemetry from regular retry logic
834
756
  ...attemptResult.summarizeProps,
835
757
  });
836
758
  await delay(retryAfterSeconds * 1000);
837
759
  }
838
760
  } while (!done);
839
761
 
840
- // If summarize attempt did not fail, emit "summarize" event and return. A failed attempt may be retried below.
762
+ // If the attempt was successful, emit "summarize" event and return. A failed attempt may be retried below.
841
763
  if (status !== "failure") {
842
764
  this.emit("summarize", { result: status, currentAttempt, maxAttempts });
843
765
  return results;
@@ -888,7 +810,10 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
888
810
  ) {
889
811
  const results = await this.trySummarizeWithRetries(reason);
890
812
  if (results === undefined) {
891
- resultsBuilder.fail("Summarization was canceled", undefined);
813
+ resultsBuilder.fail(
814
+ "Summarization was canceled",
815
+ new RetriableSummaryError("Summarization was canceled"),
816
+ );
892
817
  return resultsBuilder.build();
893
818
  }
894
819
  const submitResult = await results.summarySubmitted;
@@ -906,7 +831,10 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
906
831
  resultsBuilder: SummarizeResultBuilder = new SummarizeResultBuilder(),
907
832
  ): ISummarizeResults {
908
833
  if (this.stopping) {
909
- resultsBuilder.fail("RunningSummarizer stopped or disposed", undefined);
834
+ resultsBuilder.fail(
835
+ "RunningSummarizer stopped or disposed",
836
+ new RetriableSummaryError("RunningSummarizer stopped or disposed"),
837
+ );
910
838
  return resultsBuilder.build();
911
839
  }
912
840
  // Check for concurrent summary attempts. If one is found,
@@ -944,7 +872,9 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
944
872
  // Override existing enqueued summarize attempt.
945
873
  this.enqueuedSummary.resultsBuilder.fail(
946
874
  "Aborted; overridden by another enqueue summarize attempt",
947
- undefined,
875
+ new RetriableSummaryError(
876
+ "Summary was overridden by another enqueue summarize attempt",
877
+ ),
948
878
  );
949
879
  this.enqueuedSummary = undefined;
950
880
  overridden = true;
@@ -963,7 +893,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
963
893
  ...results,
964
894
  alreadyEnqueued: true,
965
895
  overridden: true,
966
- }
896
+ }
967
897
  : results;
968
898
  }
969
899
 
@@ -995,7 +925,7 @@ export class RunningSummarizer extends TypedEventEmitter<ISummarizerEvents> impl
995
925
  if (this.enqueuedSummary !== undefined) {
996
926
  this.enqueuedSummary.resultsBuilder.fail(
997
927
  "RunningSummarizer stopped or disposed",
998
- undefined,
928
+ new RetriableSummaryError("RunningSummarizer stopped or disposed"),
999
929
  );
1000
930
  this.enqueuedSummary = undefined;
1001
931
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
- import { IFluidHandleContext } from "@fluidframework/core-interfaces";
7
+ import { IFluidHandleContext } from "@fluidframework/core-interfaces/internal";
8
8
  import { Deferred } from "@fluidframework/core-utils/internal";
9
9
  import {
10
10
  IFluidErrorBase,
@@ -98,7 +98,10 @@ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements
98
98
  ) => Promise<ICancellableSummarizerController>,
99
99
  ) {
100
100
  super();
101
- this.logger = createChildLogger({ logger: this.runtime.logger, namespace: "Summarizer" });
101
+ this.logger = createChildLogger({
102
+ logger: this.runtime.baseLogger,
103
+ namespace: "Summarizer",
104
+ });
102
105
  }
103
106
 
104
107
  public async run(onBehalfOf: string): Promise<SummarizerStopReason> {
@@ -5,7 +5,8 @@
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
8
- import { IClientDetails, MessageType } from "@fluidframework/protocol-definitions";
8
+ import { IClientDetails } from "@fluidframework/driver-definitions";
9
+ import { MessageType } from "@fluidframework/driver-definitions/internal";
9
10
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
10
11
 
11
12
  import {
@@ -21,7 +22,8 @@ export interface ISummarizerClientElectionEvents extends IEvent {
21
22
  (event: "electedSummarizerChanged", handler: () => void): void;
22
23
  }
23
24
 
24
- export interface ISummarizerClientElection extends IEventProvider<ISummarizerClientElectionEvents> {
25
+ export interface ISummarizerClientElection
26
+ extends IEventProvider<ISummarizerClientElectionEvents> {
25
27
  readonly electedClientId: string | undefined;
26
28
  readonly electedParentId: string | undefined;
27
29
  }
@@ -5,16 +5,14 @@
5
5
 
6
6
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
8
+ import { SummaryType } from "@fluidframework/driver-definitions";
8
9
  import {
9
- ISequencedDocumentMessage,
10
10
  ISnapshotTree,
11
- SummaryType,
12
- } from "@fluidframework/protocol-definitions";
11
+ ISequencedDocumentMessage,
12
+ } from "@fluidframework/driver-definitions/internal";
13
13
  import {
14
14
  IExperimentalIncrementalSummaryContext,
15
15
  ITelemetryContext,
16
- } from "@fluidframework/runtime-definitions";
17
- import {
18
16
  CreateChildSummarizerNodeParam,
19
17
  CreateSummarizerNodeSource,
20
18
  ISummarizeResult,
@@ -167,15 +165,6 @@ export class SummarizerNode implements IRootSummarizerNode {
167
165
  trackState: boolean = true,
168
166
  telemetryContext?: ITelemetryContext,
169
167
  ): Promise<ISummarizeResult> {
170
- assert(
171
- this.isSummaryInProgress(),
172
- 0x1a1 /* "summarize should not be called when not tracking the summary" */,
173
- );
174
- assert(
175
- this.wipSummaryLogger !== undefined,
176
- 0x1a2 /* "wipSummaryLogger should have been set in startSummary or ctor" */,
177
- );
178
-
179
168
  // Try to reuse the tree if unchanged
180
169
  if (this.canReuseHandle && !fullTree && !this.hasChanged()) {
181
170
  const latestSummary = this._latestSummary;
@@ -198,21 +187,22 @@ export class SummarizerNode implements IRootSummarizerNode {
198
187
  }
199
188
  }
200
189
 
201
- // This assert is the same the other 0a1x1 assert `isSummaryInProgress`, the only difference is that typescript
202
- // complains if this assert isn't done this way
203
- assert(
204
- this.wipReferenceSequenceNumber !== undefined,
205
- 0x5df /* Summarize should not be called when not tracking the summary */,
206
- );
207
- const incrementalSummaryContext: IExperimentalIncrementalSummaryContext | undefined =
208
- this._latestSummary !== undefined
209
- ? {
210
- summarySequenceNumber: this.wipReferenceSequenceNumber,
211
- latestSummarySequenceNumber: this._latestSummary.referenceSequenceNumber,
212
- // TODO: remove summaryPath
213
- summaryPath: this._latestSummary.fullPath.path,
214
- }
215
- : undefined;
190
+ let incrementalSummaryContext: IExperimentalIncrementalSummaryContext | undefined;
191
+ if (!fullTree) {
192
+ assert(
193
+ this.wipReferenceSequenceNumber !== undefined,
194
+ 0x5df /* Summarize should not be called when not tracking the summary */,
195
+ );
196
+ incrementalSummaryContext =
197
+ this._latestSummary !== undefined
198
+ ? {
199
+ summarySequenceNumber: this.wipReferenceSequenceNumber,
200
+ latestSummarySequenceNumber: this._latestSummary.referenceSequenceNumber,
201
+ // TODO: remove summaryPath
202
+ summaryPath: this._latestSummary.fullPath.path,
203
+ }
204
+ : undefined;
205
+ }
216
206
 
217
207
  const result = await this.summarizeInternalFn(
218
208
  fullTree,
@@ -332,7 +322,10 @@ export class SummarizerNode implements IRootSummarizerNode {
332
322
  parentPath: EscapedPath | undefined,
333
323
  parentSkipRecursion: boolean,
334
324
  ) {
335
- assert(this.wipReferenceSequenceNumber !== undefined, 0x1a4 /* "Not tracking a summary" */);
325
+ assert(
326
+ this.wipReferenceSequenceNumber !== undefined,
327
+ 0x1a4 /* "Not tracking a summary" */,
328
+ );
336
329
  let localPathsToUse = this.wipLocalPaths;
337
330
 
338
331
  if (parentSkipRecursion) {
@@ -3,9 +3,13 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ISnapshotTree, SummaryObject } from "@fluidframework/protocol-definitions";
6
+ import { SummaryObject } from "@fluidframework/driver-definitions";
7
+ import { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
7
8
  import { channelsTreeName } from "@fluidframework/runtime-definitions/internal";
8
- import { ITelemetryLoggerExt, TelemetryDataTag } from "@fluidframework/telemetry-utils/internal";
9
+ import {
10
+ ITelemetryLoggerExt,
11
+ TelemetryDataTag,
12
+ } from "@fluidframework/telemetry-utils/internal";
9
13
 
10
14
  export interface IRefreshSummaryResult {
11
15
  /** Tells whether this summary is tracked by this client. */
@@ -172,7 +176,9 @@ export interface ISubtreeInfo<T extends ISnapshotTree | SummaryObject> {
172
176
  * would be located if exists.
173
177
  * @param baseSummary - summary to check
174
178
  */
175
- export function parseSummaryForSubtrees(baseSummary: ISnapshotTree): ISubtreeInfo<ISnapshotTree> {
179
+ export function parseSummaryForSubtrees(
180
+ baseSummary: ISnapshotTree,
181
+ ): ISubtreeInfo<ISnapshotTree> {
176
182
  // New versions of snapshots have child nodes isolated in .channels subtree
177
183
  const channelsSubtree = baseSummary.trees[channelsTreeName];
178
184
  if (channelsSubtree !== undefined) {
@@ -7,10 +7,8 @@ import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import { assert, LazyPromise } from "@fluidframework/core-utils/internal";
8
8
  import {
9
9
  IExperimentalIncrementalSummaryContext,
10
- IGarbageCollectionData,
11
10
  ITelemetryContext,
12
- } from "@fluidframework/runtime-definitions";
13
- import {
11
+ IGarbageCollectionData,
14
12
  CreateChildSummarizerNodeParam,
15
13
  IGarbageCollectionDetailsBase,
16
14
  ISummarizeInternalResult,
@@ -78,13 +76,13 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
78
76
  private referenceUsedRoutes: string[] | undefined;
79
77
 
80
78
  // The base GC details of this node used to initialize the GC state.
81
- private readonly baseGCDetailsP: LazyPromise<IGarbageCollectionDetailsBase>;
79
+ private readonly baseGCDetailsP: Promise<IGarbageCollectionDetailsBase>;
82
80
 
83
81
  // Keeps track of whether we have loaded the base details to ensure that we only do it once.
84
82
  private baseGCDetailsLoaded: boolean = false;
85
83
 
86
84
  // The base GC details for the child nodes. This is passed to child nodes when creating them.
87
- private readonly childNodesBaseGCDetailsP: LazyPromise<
85
+ private readonly childNodesBaseGCDetailsP: Promise<
88
86
  Map<string, IGarbageCollectionDetailsBase>
89
87
  >;
90
88
 
@@ -228,7 +226,12 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
228
226
  // GC data may not be available if loaded from a snapshot with either GC disabled or before GC was added.
229
227
  // Note - canReuseHandle is checked to be consistent with summarize - generate GC data for nodes for which
230
228
  // summary must be generated.
231
- if (this.canReuseHandle && !fullGC && !this.hasDataChanged() && this.gcData !== undefined) {
229
+ if (
230
+ this.canReuseHandle &&
231
+ !fullGC &&
232
+ !this.hasDataChanged() &&
233
+ this.gcData !== undefined
234
+ ) {
232
235
  return cloneGCData(this.gcData);
233
236
  }
234
237
 
@@ -324,10 +327,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
324
327
  if (!this.gcDisabled) {
325
328
  const summaryNode = this.pendingSummaries.get(proposalHandle);
326
329
  if (summaryNode !== undefined) {
327
- const summaryNodeWithGC = new SummaryNodeWithGC(
328
- wipSerializedUsedRoutes,
329
- summaryNode,
330
- );
330
+ const summaryNodeWithGC = new SummaryNodeWithGC(wipSerializedUsedRoutes, summaryNode);
331
331
  this.pendingSummaries.set(proposalHandle, summaryNodeWithGC);
332
332
  }
333
333
  }
@@ -517,7 +517,7 @@ export class SummarizerNodeWithGC extends SummarizerNode implements IRootSummari
517
517
  * was previously used and became unused (or vice versa), its used state has changed.
518
518
  */
519
519
  private hasUsedStateChanged(): boolean {
520
- // If GC is disabled, we are not tracking used state, return false.
520
+ // If GC is disabled, it should not affect summary state, return false.
521
521
  if (this.gcDisabled) {
522
522
  return false;
523
523
  }
@@ -3,14 +3,22 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IDeltaManager, ContainerWarning } from "@fluidframework/container-definitions/internal";
7
- import { IEvent, IEventProvider, ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
6
+ import {
7
+ IDeltaManager,
8
+ ContainerWarning,
9
+ } from "@fluidframework/container-definitions/internal";
10
+ import {
11
+ IEvent,
12
+ IEventProvider,
13
+ ITelemetryBaseProperties,
14
+ ITelemetryBaseLogger,
15
+ } from "@fluidframework/core-interfaces";
16
+ import { ISummaryTree } from "@fluidframework/driver-definitions";
8
17
  import {
9
18
  IDocumentMessage,
10
19
  ISequencedDocumentMessage,
11
- ISummaryTree,
12
- } from "@fluidframework/protocol-definitions";
13
- import { ISummaryStats } from "@fluidframework/runtime-definitions";
20
+ } from "@fluidframework/driver-definitions/internal";
21
+ import { ISummaryStats } from "@fluidframework/runtime-definitions/internal";
14
22
  import {
15
23
  ITelemetryLoggerExt,
16
24
  ITelemetryLoggerPropertyBag,
@@ -18,7 +26,11 @@ import {
18
26
 
19
27
  import { ISummaryConfigurationHeuristics } from "../containerRuntime.js";
20
28
 
21
- import { ISummaryAckMessage, ISummaryNackMessage, ISummaryOpMessage } from "./summaryCollection.js";
29
+ import {
30
+ ISummaryAckMessage,
31
+ ISummaryNackMessage,
32
+ ISummaryOpMessage,
33
+ } from "./summaryCollection.js";
22
34
  import { SummarizeReason } from "./summaryGenerator.js";
23
35
 
24
36
  /**
@@ -90,7 +102,7 @@ export interface IConnectableRuntime {
90
102
  * @alpha
91
103
  */
92
104
  export interface ISummarizerRuntime extends IConnectableRuntime {
93
- readonly logger: ITelemetryLoggerExt;
105
+ readonly baseLogger: ITelemetryBaseLogger;
94
106
  /** clientId of parent (non-summarizing) container that owns summarizer container */
95
107
  readonly summarizerClientId: string | undefined;
96
108
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
@@ -113,13 +125,6 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
113
125
  export interface ISummarizeOptions {
114
126
  /** True to generate the full tree with no handle reuse optimizations; defaults to false */
115
127
  readonly fullTree?: boolean;
116
- /**
117
- * True to ask the server what the latest summary is first; defaults to false
118
- *
119
- * @deprecated Summarize will not refresh latest snapshot state anymore. Instead it updates the cache and closes.
120
- * It's expected a new summarizer client will be created, likely by the same parent.
121
- */
122
- readonly refreshLatestAck?: boolean;
123
128
  }
124
129
 
125
130
  /**
@@ -183,14 +188,22 @@ export interface IGeneratedSummaryStats extends ISummaryStats {
183
188
  readonly summaryNumber: number;
184
189
  }
185
190
 
191
+ /**
192
+ * Type for summarization failures that are retriable.
193
+ * @alpha
194
+ */
195
+ export interface IRetriableFailureError extends Error {
196
+ readonly retryAfterSeconds?: number;
197
+ }
198
+
186
199
  /**
187
200
  * Base results for all submitSummary attempts.
188
201
  * @alpha
189
202
  */
190
203
  export interface IBaseSummarizeResult {
191
204
  readonly stage: "base";
192
- /** Error object related to failed summarize attempt. */
193
- readonly error: Error | undefined;
205
+ /** Retriable error object related to failed summarize attempt. */
206
+ readonly error: IRetriableFailureError | undefined;
194
207
  /** Reference sequence number as of the generate summary attempt. */
195
208
  readonly referenceSequenceNumber: number;
196
209
  readonly minimumSequenceNumber: number;
@@ -208,8 +221,6 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
208
221
  readonly summaryStats: IGeneratedSummaryStats;
209
222
  /** Time it took to generate the summary tree and stats. */
210
223
  readonly generateDuration: number;
211
- /** True if the full tree regeneration with no handle reuse optimizations was forced. */
212
- readonly forcedFullTree: boolean;
213
224
  }
214
225
 
215
226
  /**
@@ -265,19 +276,11 @@ export type SubmitSummaryResult =
265
276
  */
266
277
  export type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
267
278
 
268
- /**
269
- * Type for summarization failures that are retriable.
270
- * @alpha
271
- */
272
- export interface IRetriableFailureResult {
273
- readonly retryAfterSeconds?: number;
274
- }
275
-
276
279
  /**
277
280
  * The data in summarizer result when submit summary stage fails.
278
281
  * @alpha
279
282
  */
280
- export interface SubmitSummaryFailureData extends IRetriableFailureResult {
283
+ export interface SubmitSummaryFailureData {
281
284
  stage: SummaryStage;
282
285
  }
283
286
 
@@ -300,7 +303,7 @@ export interface IAckSummaryResult {
300
303
  /**
301
304
  * @alpha
302
305
  */
303
- export interface INackSummaryResult extends IRetriableFailureResult {
306
+ export interface INackSummaryResult {
304
307
  readonly summaryNackOp: ISummaryNackMessage;
305
308
  readonly ackNackDuration: number;
306
309
  }
@@ -317,7 +320,7 @@ export type SummarizeResultPart<TSuccess, TFailure = undefined> =
317
320
  success: false;
318
321
  data: TFailure | undefined;
319
322
  message: string;
320
- error: any;
323
+ error: IRetriableFailureError;
321
324
  };
322
325
 
323
326
  /**
@@ -535,10 +538,6 @@ type ISummarizeTelemetryRequiredProperties =
535
538
  type ISummarizeTelemetryOptionalProperties =
536
539
  /** Number of attempts within the last time window, used for calculating the throttle delay. */
537
540
  | "summaryAttempts"
538
- /** Number of attempts within the current phase (currently capped at 2 ) */
539
- | "summaryAttemptsPerPhase"
540
- /** One-based count of phases we've attempted (used to index into an array of ISummarizeOptions */
541
- | "summaryAttemptPhase"
542
541
  /** Summarization may be attempted multiple times. This tells whether this is the final summarization attempt */
543
542
  | "finalAttempt"
544
543
  | keyof ISummarizeOptions;