@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.263932 → 2.0.0-dev-rc.5.0.0.267932

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 (370) hide show
  1. package/api-report/container-runtime.api.md +43 -53
  2. package/dist/batchTracker.js.map +1 -1
  3. package/dist/blobManager.d.ts +4 -4
  4. package/dist/blobManager.d.ts.map +1 -1
  5. package/dist/blobManager.js +1 -1
  6. package/dist/blobManager.js.map +1 -1
  7. package/dist/channelCollection.d.ts +3 -3
  8. package/dist/channelCollection.d.ts.map +1 -1
  9. package/dist/channelCollection.js +3 -3
  10. package/dist/channelCollection.js.map +1 -1
  11. package/dist/connectionTelemetry.d.ts +2 -1
  12. package/dist/connectionTelemetry.d.ts.map +1 -1
  13. package/dist/connectionTelemetry.js +14 -14
  14. package/dist/connectionTelemetry.js.map +1 -1
  15. package/dist/containerHandleContext.d.ts +2 -1
  16. package/dist/containerHandleContext.d.ts.map +1 -1
  17. package/dist/containerHandleContext.js.map +1 -1
  18. package/dist/containerRuntime.d.ts +12 -19
  19. package/dist/containerRuntime.d.ts.map +1 -1
  20. package/dist/containerRuntime.js +74 -120
  21. package/dist/containerRuntime.js.map +1 -1
  22. package/dist/dataStore.d.ts.map +1 -1
  23. package/dist/dataStore.js.map +1 -1
  24. package/dist/dataStoreContext.d.ts +7 -8
  25. package/dist/dataStoreContext.d.ts.map +1 -1
  26. package/dist/dataStoreContext.js +3 -3
  27. package/dist/dataStoreContext.js.map +1 -1
  28. package/dist/dataStoreContexts.js.map +1 -1
  29. package/dist/dataStoreRegistry.js.map +1 -1
  30. package/dist/deltaManagerProxies.d.ts +4 -3
  31. package/dist/deltaManagerProxies.d.ts.map +1 -1
  32. package/dist/deltaManagerProxies.js.map +1 -1
  33. package/dist/deltaScheduler.d.ts +2 -1
  34. package/dist/deltaScheduler.d.ts.map +1 -1
  35. package/dist/deltaScheduler.js.map +1 -1
  36. package/dist/gc/garbageCollection.d.ts +1 -3
  37. package/dist/gc/garbageCollection.d.ts.map +1 -1
  38. package/dist/gc/garbageCollection.js +18 -21
  39. package/dist/gc/garbageCollection.js.map +1 -1
  40. package/dist/gc/gcConfigs.d.ts.map +1 -1
  41. package/dist/gc/gcConfigs.js +11 -30
  42. package/dist/gc/gcConfigs.js.map +1 -1
  43. package/dist/gc/gcDefinitions.d.ts +3 -30
  44. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  45. package/dist/gc/gcDefinitions.js +1 -3
  46. package/dist/gc/gcDefinitions.js.map +1 -1
  47. package/dist/gc/gcHelpers.d.ts +2 -3
  48. package/dist/gc/gcHelpers.d.ts.map +1 -1
  49. package/dist/gc/gcHelpers.js.map +1 -1
  50. package/dist/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  51. package/dist/gc/gcSummaryDefinitions.d.ts +1 -1
  52. package/dist/gc/gcSummaryDefinitions.d.ts.map +1 -1
  53. package/dist/gc/gcSummaryDefinitions.js.map +1 -1
  54. package/dist/gc/gcSummaryStateTracker.d.ts +2 -35
  55. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  56. package/dist/gc/gcSummaryStateTracker.js +9 -62
  57. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  58. package/dist/gc/gcTelemetry.d.ts +1 -1
  59. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  60. package/dist/gc/gcTelemetry.js +2 -2
  61. package/dist/gc/gcTelemetry.js.map +1 -1
  62. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  63. package/dist/gc/index.d.ts +1 -1
  64. package/dist/gc/index.d.ts.map +1 -1
  65. package/dist/gc/index.js +1 -2
  66. package/dist/gc/index.js.map +1 -1
  67. package/dist/index.d.ts +1 -1
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js.map +1 -1
  70. package/dist/legacy.d.ts +1 -1
  71. package/dist/messageTypes.d.ts +1 -1
  72. package/dist/messageTypes.d.ts.map +1 -1
  73. package/dist/messageTypes.js.map +1 -1
  74. package/dist/opLifecycle/batchManager.js.map +1 -1
  75. package/dist/opLifecycle/definitions.d.ts +2 -2
  76. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  77. package/dist/opLifecycle/definitions.js.map +1 -1
  78. package/dist/opLifecycle/opCompressor.d.ts +11 -1
  79. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  80. package/dist/opLifecycle/opCompressor.js +13 -2
  81. package/dist/opLifecycle/opCompressor.js.map +1 -1
  82. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  83. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  84. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  85. package/dist/opLifecycle/opGroupingManager.d.ts +10 -3
  86. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  87. package/dist/opLifecycle/opGroupingManager.js +7 -0
  88. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  89. package/dist/opLifecycle/opSplitter.d.ts +4 -2
  90. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  91. package/dist/opLifecycle/opSplitter.js +12 -7
  92. package/dist/opLifecycle/opSplitter.js.map +1 -1
  93. package/dist/opLifecycle/outbox.d.ts +10 -0
  94. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  95. package/dist/opLifecycle/outbox.js +12 -17
  96. package/dist/opLifecycle/outbox.js.map +1 -1
  97. package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  98. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  99. package/dist/opLifecycle/remoteMessageProcessor.js +2 -2
  100. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  101. package/dist/opProperties.d.ts +1 -1
  102. package/dist/opProperties.d.ts.map +1 -1
  103. package/dist/opProperties.js.map +1 -1
  104. package/dist/packageVersion.d.ts +1 -1
  105. package/dist/packageVersion.js +1 -1
  106. package/dist/packageVersion.js.map +1 -1
  107. package/dist/pendingStateManager.js.map +1 -1
  108. package/dist/scheduleManager.d.ts +2 -1
  109. package/dist/scheduleManager.d.ts.map +1 -1
  110. package/dist/scheduleManager.js.map +1 -1
  111. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  112. package/dist/summary/documentSchema.js +1 -1
  113. package/dist/summary/documentSchema.js.map +1 -1
  114. package/dist/summary/index.d.ts +1 -1
  115. package/dist/summary/index.d.ts.map +1 -1
  116. package/dist/summary/index.js.map +1 -1
  117. package/dist/summary/orderedClientElection.d.ts +4 -2
  118. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  119. package/dist/summary/orderedClientElection.js +35 -13
  120. package/dist/summary/orderedClientElection.js.map +1 -1
  121. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  122. package/dist/summary/runningSummarizer.d.ts +1 -6
  123. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  124. package/dist/summary/runningSummarizer.js +22 -108
  125. package/dist/summary/runningSummarizer.js.map +1 -1
  126. package/dist/summary/summarizer.d.ts +1 -1
  127. package/dist/summary/summarizer.d.ts.map +1 -1
  128. package/dist/summary/summarizer.js +4 -1
  129. package/dist/summary/summarizer.js.map +1 -1
  130. package/dist/summary/summarizerClientElection.d.ts +1 -1
  131. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  132. package/dist/summary/summarizerClientElection.js +2 -2
  133. package/dist/summary/summarizerClientElection.js.map +1 -1
  134. package/dist/summary/summarizerHeuristics.js.map +1 -1
  135. package/dist/summary/summarizerNode/summarizerNode.d.ts +3 -3
  136. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  137. package/dist/summary/summarizerNode/summarizerNode.js +16 -16
  138. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  139. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  140. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  141. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  142. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
  143. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  144. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
  145. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  146. package/dist/summary/summarizerTypes.d.ts +17 -29
  147. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  148. package/dist/summary/summarizerTypes.js.map +1 -1
  149. package/dist/summary/summaryCollection.d.ts +2 -1
  150. package/dist/summary/summaryCollection.d.ts.map +1 -1
  151. package/dist/summary/summaryCollection.js +11 -11
  152. package/dist/summary/summaryCollection.js.map +1 -1
  153. package/dist/summary/summaryFormat.d.ts +3 -3
  154. package/dist/summary/summaryFormat.d.ts.map +1 -1
  155. package/dist/summary/summaryFormat.js +2 -2
  156. package/dist/summary/summaryFormat.js.map +1 -1
  157. package/dist/summary/summaryGenerator.d.ts +7 -8
  158. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  159. package/dist/summary/summaryGenerator.js +26 -22
  160. package/dist/summary/summaryGenerator.js.map +1 -1
  161. package/dist/summary/summaryManager.js.map +1 -1
  162. package/dist/throttler.js.map +1 -1
  163. package/lib/batchTracker.js.map +1 -1
  164. package/lib/blobManager.d.ts +4 -4
  165. package/lib/blobManager.d.ts.map +1 -1
  166. package/lib/blobManager.js +1 -1
  167. package/lib/blobManager.js.map +1 -1
  168. package/lib/channelCollection.d.ts +3 -3
  169. package/lib/channelCollection.d.ts.map +1 -1
  170. package/lib/channelCollection.js +3 -3
  171. package/lib/channelCollection.js.map +1 -1
  172. package/lib/connectionTelemetry.d.ts +2 -1
  173. package/lib/connectionTelemetry.d.ts.map +1 -1
  174. package/lib/connectionTelemetry.js +2 -2
  175. package/lib/connectionTelemetry.js.map +1 -1
  176. package/lib/containerHandleContext.d.ts +2 -1
  177. package/lib/containerHandleContext.d.ts.map +1 -1
  178. package/lib/containerHandleContext.js.map +1 -1
  179. package/lib/containerRuntime.d.ts +12 -19
  180. package/lib/containerRuntime.d.ts.map +1 -1
  181. package/lib/containerRuntime.js +68 -114
  182. package/lib/containerRuntime.js.map +1 -1
  183. package/lib/dataStore.d.ts.map +1 -1
  184. package/lib/dataStore.js.map +1 -1
  185. package/lib/dataStoreContext.d.ts +7 -8
  186. package/lib/dataStoreContext.d.ts.map +1 -1
  187. package/lib/dataStoreContext.js +3 -3
  188. package/lib/dataStoreContext.js.map +1 -1
  189. package/lib/dataStoreContexts.js.map +1 -1
  190. package/lib/dataStoreRegistry.js.map +1 -1
  191. package/lib/deltaManagerProxies.d.ts +4 -3
  192. package/lib/deltaManagerProxies.d.ts.map +1 -1
  193. package/lib/deltaManagerProxies.js.map +1 -1
  194. package/lib/deltaScheduler.d.ts +2 -1
  195. package/lib/deltaScheduler.d.ts.map +1 -1
  196. package/lib/deltaScheduler.js.map +1 -1
  197. package/lib/gc/garbageCollection.d.ts +1 -3
  198. package/lib/gc/garbageCollection.d.ts.map +1 -1
  199. package/lib/gc/garbageCollection.js +18 -21
  200. package/lib/gc/garbageCollection.js.map +1 -1
  201. package/lib/gc/gcConfigs.d.ts.map +1 -1
  202. package/lib/gc/gcConfigs.js +12 -31
  203. package/lib/gc/gcConfigs.js.map +1 -1
  204. package/lib/gc/gcDefinitions.d.ts +3 -30
  205. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  206. package/lib/gc/gcDefinitions.js +0 -2
  207. package/lib/gc/gcDefinitions.js.map +1 -1
  208. package/lib/gc/gcHelpers.d.ts +2 -3
  209. package/lib/gc/gcHelpers.d.ts.map +1 -1
  210. package/lib/gc/gcHelpers.js.map +1 -1
  211. package/lib/gc/gcReferenceGraphAlgorithm.js.map +1 -1
  212. package/lib/gc/gcSummaryDefinitions.d.ts +1 -1
  213. package/lib/gc/gcSummaryDefinitions.d.ts.map +1 -1
  214. package/lib/gc/gcSummaryDefinitions.js.map +1 -1
  215. package/lib/gc/gcSummaryStateTracker.d.ts +2 -35
  216. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  217. package/lib/gc/gcSummaryStateTracker.js +4 -57
  218. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  219. package/lib/gc/gcTelemetry.d.ts +1 -1
  220. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  221. package/lib/gc/gcTelemetry.js +2 -2
  222. package/lib/gc/gcTelemetry.js.map +1 -1
  223. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  224. package/lib/gc/index.d.ts +1 -1
  225. package/lib/gc/index.d.ts.map +1 -1
  226. package/lib/gc/index.js +1 -1
  227. package/lib/gc/index.js.map +1 -1
  228. package/lib/index.d.ts +1 -1
  229. package/lib/index.d.ts.map +1 -1
  230. package/lib/index.js.map +1 -1
  231. package/lib/legacy.d.ts +1 -1
  232. package/lib/messageTypes.d.ts +1 -1
  233. package/lib/messageTypes.d.ts.map +1 -1
  234. package/lib/messageTypes.js.map +1 -1
  235. package/lib/opLifecycle/batchManager.js.map +1 -1
  236. package/lib/opLifecycle/definitions.d.ts +2 -2
  237. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  238. package/lib/opLifecycle/definitions.js.map +1 -1
  239. package/lib/opLifecycle/opCompressor.d.ts +11 -1
  240. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  241. package/lib/opLifecycle/opCompressor.js +13 -2
  242. package/lib/opLifecycle/opCompressor.js.map +1 -1
  243. package/lib/opLifecycle/opDecompressor.d.ts +1 -1
  244. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  245. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  246. package/lib/opLifecycle/opGroupingManager.d.ts +10 -3
  247. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  248. package/lib/opLifecycle/opGroupingManager.js +7 -0
  249. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  250. package/lib/opLifecycle/opSplitter.d.ts +4 -2
  251. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  252. package/lib/opLifecycle/opSplitter.js +12 -7
  253. package/lib/opLifecycle/opSplitter.js.map +1 -1
  254. package/lib/opLifecycle/outbox.d.ts +10 -0
  255. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  256. package/lib/opLifecycle/outbox.js +12 -17
  257. package/lib/opLifecycle/outbox.js.map +1 -1
  258. package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  259. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  260. package/lib/opLifecycle/remoteMessageProcessor.js +1 -1
  261. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  262. package/lib/opProperties.d.ts +1 -1
  263. package/lib/opProperties.d.ts.map +1 -1
  264. package/lib/opProperties.js.map +1 -1
  265. package/lib/packageVersion.d.ts +1 -1
  266. package/lib/packageVersion.js +1 -1
  267. package/lib/packageVersion.js.map +1 -1
  268. package/lib/pendingStateManager.js.map +1 -1
  269. package/lib/scheduleManager.d.ts +2 -1
  270. package/lib/scheduleManager.d.ts.map +1 -1
  271. package/lib/scheduleManager.js.map +1 -1
  272. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  273. package/lib/summary/documentSchema.js +1 -1
  274. package/lib/summary/documentSchema.js.map +1 -1
  275. package/lib/summary/index.d.ts +1 -1
  276. package/lib/summary/index.d.ts.map +1 -1
  277. package/lib/summary/index.js.map +1 -1
  278. package/lib/summary/orderedClientElection.d.ts +4 -2
  279. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  280. package/lib/summary/orderedClientElection.js +35 -13
  281. package/lib/summary/orderedClientElection.js.map +1 -1
  282. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  283. package/lib/summary/runningSummarizer.d.ts +1 -6
  284. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  285. package/lib/summary/runningSummarizer.js +21 -107
  286. package/lib/summary/runningSummarizer.js.map +1 -1
  287. package/lib/summary/summarizer.d.ts +1 -1
  288. package/lib/summary/summarizer.d.ts.map +1 -1
  289. package/lib/summary/summarizer.js +4 -1
  290. package/lib/summary/summarizer.js.map +1 -1
  291. package/lib/summary/summarizerClientElection.d.ts +1 -1
  292. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  293. package/lib/summary/summarizerClientElection.js +1 -1
  294. package/lib/summary/summarizerClientElection.js.map +1 -1
  295. package/lib/summary/summarizerHeuristics.js.map +1 -1
  296. package/lib/summary/summarizerNode/summarizerNode.d.ts +3 -3
  297. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  298. package/lib/summary/summarizerNode/summarizerNode.js +14 -14
  299. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  300. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  301. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  302. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  303. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -3
  304. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  305. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +1 -1
  306. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  307. package/lib/summary/summarizerTypes.d.ts +17 -29
  308. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  309. package/lib/summary/summarizerTypes.js.map +1 -1
  310. package/lib/summary/summaryCollection.d.ts +2 -1
  311. package/lib/summary/summaryCollection.d.ts.map +1 -1
  312. package/lib/summary/summaryCollection.js +3 -3
  313. package/lib/summary/summaryCollection.js.map +1 -1
  314. package/lib/summary/summaryFormat.d.ts +3 -3
  315. package/lib/summary/summaryFormat.d.ts.map +1 -1
  316. package/lib/summary/summaryFormat.js +2 -2
  317. package/lib/summary/summaryFormat.js.map +1 -1
  318. package/lib/summary/summaryGenerator.d.ts +7 -8
  319. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  320. package/lib/summary/summaryGenerator.js +25 -21
  321. package/lib/summary/summaryGenerator.js.map +1 -1
  322. package/lib/summary/summaryManager.js.map +1 -1
  323. package/lib/throttler.js.map +1 -1
  324. package/lib/tsdoc-metadata.json +1 -1
  325. package/package.json +72 -24
  326. package/src/batchTracker.ts +1 -1
  327. package/src/blobManager.ts +7 -7
  328. package/src/channelCollection.ts +8 -9
  329. package/src/connectionTelemetry.ts +14 -6
  330. package/src/containerHandleContext.ts +2 -1
  331. package/src/containerRuntime.ts +88 -141
  332. package/src/dataStore.ts +2 -1
  333. package/src/dataStoreContext.ts +16 -17
  334. package/src/deltaManagerProxies.ts +7 -5
  335. package/src/deltaScheduler.ts +2 -1
  336. package/src/gc/garbageCollection.md +0 -8
  337. package/src/gc/garbageCollection.ts +20 -25
  338. package/src/gc/gcConfigs.ts +8 -34
  339. package/src/gc/gcDefinitions.ts +4 -31
  340. package/src/gc/gcHelpers.ts +2 -2
  341. package/src/gc/gcSummaryDefinitions.ts +1 -1
  342. package/src/gc/gcSummaryStateTracker.ts +7 -73
  343. package/src/gc/gcTelemetry.ts +2 -2
  344. package/src/gc/index.ts +0 -1
  345. package/src/index.ts +1 -1
  346. package/src/messageTypes.ts +1 -1
  347. package/src/opLifecycle/README.md +120 -160
  348. package/src/opLifecycle/definitions.ts +2 -2
  349. package/src/opLifecycle/opCompressor.ts +13 -2
  350. package/src/opLifecycle/opDecompressor.ts +1 -1
  351. package/src/opLifecycle/opGroupingManager.ts +11 -4
  352. package/src/opLifecycle/opSplitter.ts +13 -8
  353. package/src/opLifecycle/outbox.ts +12 -27
  354. package/src/opLifecycle/remoteMessageProcessor.ts +2 -1
  355. package/src/opProperties.ts +2 -4
  356. package/src/packageVersion.ts +1 -1
  357. package/src/pendingStateManager.ts +1 -1
  358. package/src/scheduleManager.ts +2 -1
  359. package/src/summary/index.ts +1 -1
  360. package/src/summary/orderedClientElection.ts +83 -12
  361. package/src/summary/runningSummarizer.ts +31 -115
  362. package/src/summary/summarizer.ts +5 -2
  363. package/src/summary/summarizerClientElection.ts +2 -1
  364. package/src/summary/summarizerNode/summarizerNode.ts +19 -31
  365. package/src/summary/summarizerNode/summarizerNodeUtils.ts +2 -1
  366. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +4 -8
  367. package/src/summary/summarizerTypes.ts +22 -33
  368. package/src/summary/summaryCollection.ts +2 -2
  369. package/src/summary/summaryFormat.ts +9 -7
  370. package/src/summary/summaryGenerator.ts +51 -29
@@ -4,13 +4,15 @@
4
4
  */
5
5
 
6
6
  import { IDeltaManager, ContainerWarning } from "@fluidframework/container-definitions/internal";
7
- import { IEvent, IEventProvider, ITelemetryBaseProperties } from "@fluidframework/core-interfaces";
8
7
  import {
9
- IDocumentMessage,
10
- ISequencedDocumentMessage,
11
- ISummaryTree,
12
- } from "@fluidframework/protocol-definitions";
13
- import { ISummaryStats } from "@fluidframework/runtime-definitions";
8
+ IEvent,
9
+ IEventProvider,
10
+ ITelemetryBaseProperties,
11
+ ITelemetryBaseLogger,
12
+ } from "@fluidframework/core-interfaces";
13
+ import { ISequencedDocumentMessage, ISummaryTree } from "@fluidframework/driver-definitions";
14
+ import { IDocumentMessage } from "@fluidframework/driver-definitions/internal";
15
+ import { ISummaryStats } from "@fluidframework/runtime-definitions/internal";
14
16
  import {
15
17
  ITelemetryLoggerExt,
16
18
  ITelemetryLoggerPropertyBag,
@@ -90,7 +92,7 @@ export interface IConnectableRuntime {
90
92
  * @alpha
91
93
  */
92
94
  export interface ISummarizerRuntime extends IConnectableRuntime {
93
- readonly logger: ITelemetryLoggerExt;
95
+ readonly baseLogger: ITelemetryBaseLogger;
94
96
  /** clientId of parent (non-summarizing) container that owns summarizer container */
95
97
  readonly summarizerClientId: string | undefined;
96
98
  readonly deltaManager: IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
@@ -113,13 +115,6 @@ export interface ISummarizerRuntime extends IConnectableRuntime {
113
115
  export interface ISummarizeOptions {
114
116
  /** True to generate the full tree with no handle reuse optimizations; defaults to false */
115
117
  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
118
  }
124
119
 
125
120
  /**
@@ -183,14 +178,22 @@ export interface IGeneratedSummaryStats extends ISummaryStats {
183
178
  readonly summaryNumber: number;
184
179
  }
185
180
 
181
+ /**
182
+ * Type for summarization failures that are retriable.
183
+ * @alpha
184
+ */
185
+ export interface IRetriableFailureError extends Error {
186
+ readonly retryAfterSeconds?: number;
187
+ }
188
+
186
189
  /**
187
190
  * Base results for all submitSummary attempts.
188
191
  * @alpha
189
192
  */
190
193
  export interface IBaseSummarizeResult {
191
194
  readonly stage: "base";
192
- /** Error object related to failed summarize attempt. */
193
- readonly error: Error | undefined;
195
+ /** Retriable error object related to failed summarize attempt. */
196
+ readonly error: IRetriableFailureError | undefined;
194
197
  /** Reference sequence number as of the generate summary attempt. */
195
198
  readonly referenceSequenceNumber: number;
196
199
  readonly minimumSequenceNumber: number;
@@ -208,8 +211,6 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
208
211
  readonly summaryStats: IGeneratedSummaryStats;
209
212
  /** Time it took to generate the summary tree and stats. */
210
213
  readonly generateDuration: number;
211
- /** True if the full tree regeneration with no handle reuse optimizations was forced. */
212
- readonly forcedFullTree: boolean;
213
214
  }
214
215
 
215
216
  /**
@@ -265,19 +266,11 @@ export type SubmitSummaryResult =
265
266
  */
266
267
  export type SummaryStage = SubmitSummaryResult["stage"] | "unknown";
267
268
 
268
- /**
269
- * Type for summarization failures that are retriable.
270
- * @alpha
271
- */
272
- export interface IRetriableFailureResult {
273
- readonly retryAfterSeconds?: number;
274
- }
275
-
276
269
  /**
277
270
  * The data in summarizer result when submit summary stage fails.
278
271
  * @alpha
279
272
  */
280
- export interface SubmitSummaryFailureData extends IRetriableFailureResult {
273
+ export interface SubmitSummaryFailureData {
281
274
  stage: SummaryStage;
282
275
  }
283
276
 
@@ -300,7 +293,7 @@ export interface IAckSummaryResult {
300
293
  /**
301
294
  * @alpha
302
295
  */
303
- export interface INackSummaryResult extends IRetriableFailureResult {
296
+ export interface INackSummaryResult {
304
297
  readonly summaryNackOp: ISummaryNackMessage;
305
298
  readonly ackNackDuration: number;
306
299
  }
@@ -317,7 +310,7 @@ export type SummarizeResultPart<TSuccess, TFailure = undefined> =
317
310
  success: false;
318
311
  data: TFailure | undefined;
319
312
  message: string;
320
- error: any;
313
+ error: IRetriableFailureError;
321
314
  };
322
315
 
323
316
  /**
@@ -535,10 +528,6 @@ type ISummarizeTelemetryRequiredProperties =
535
528
  type ISummarizeTelemetryOptionalProperties =
536
529
  /** Number of attempts within the last time window, used for calculating the throttle delay. */
537
530
  | "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
531
  /** Summarization may be attempted multiple times. This tells whether this is the final summarization attempt */
543
532
  | "finalAttempt"
544
533
  | keyof ISummarizeOptions;
@@ -7,14 +7,14 @@ import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IDeltaManager } from "@fluidframework/container-definitions/internal";
8
8
  import { IDisposable, IEvent } from "@fluidframework/core-interfaces";
9
9
  import { assert, Deferred } from "@fluidframework/core-utils/internal";
10
+ import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
10
11
  import {
11
12
  IDocumentMessage,
12
- ISequencedDocumentMessage,
13
13
  ISummaryAck,
14
14
  ISummaryContent,
15
15
  ISummaryNack,
16
16
  MessageType,
17
- } from "@fluidframework/protocol-definitions";
17
+ } from "@fluidframework/driver-definitions/internal";
18
18
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils/internal";
19
19
 
20
20
  /**
@@ -4,18 +4,20 @@
4
4
  */
5
5
 
6
6
  import { assert } from "@fluidframework/core-utils/internal";
7
- import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
7
+ import { ISequencedDocumentMessage, SummaryType } from "@fluidframework/driver-definitions";
8
+ import {
9
+ IDocumentStorageService,
10
+ ISnapshotTree,
11
+ } from "@fluidframework/driver-definitions/internal";
8
12
  import {
9
13
  blobHeadersBlobName as blobNameForBlobHeaders,
10
14
  readAndParse,
11
15
  } from "@fluidframework/driver-utils/internal";
12
16
  import {
13
- ISequencedDocumentMessage,
14
- ISnapshotTree,
15
- SummaryType,
16
- } from "@fluidframework/protocol-definitions";
17
- import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
18
- import { channelsTreeName, gcTreeKey } from "@fluidframework/runtime-definitions/internal";
17
+ ISummaryTreeWithStats,
18
+ channelsTreeName,
19
+ gcTreeKey,
20
+ } from "@fluidframework/runtime-definitions/internal";
19
21
 
20
22
  import { IGCMetadata } from "../gc/index.js";
21
23
 
@@ -11,9 +11,8 @@ import {
11
11
  IPromiseTimerResult,
12
12
  Timer,
13
13
  } from "@fluidframework/core-utils/internal";
14
- import { DriverErrorTypes } from "@fluidframework/driver-definitions/internal";
14
+ import { DriverErrorTypes, MessageType } from "@fluidframework/driver-definitions/internal";
15
15
  import { getRetryDelaySecondsFromError } from "@fluidframework/driver-utils/internal";
16
- import { MessageType } from "@fluidframework/protocol-definitions";
17
16
  import {
18
17
  isFluidError,
19
18
  ITelemetryLoggerExt,
@@ -35,6 +34,7 @@ import {
35
34
  SubmitSummaryResult,
36
35
  SummarizeResultPart,
37
36
  SummaryGeneratorTelemetry,
37
+ type IRetriableFailureError,
38
38
  } from "./summarizerTypes.js";
39
39
  import { IClientSummaryWatcher } from "./summaryCollection.js";
40
40
 
@@ -127,8 +127,10 @@ const summarizeErrors = {
127
127
  disconnect: "Summary cancelled due to summarizer or main client disconnect",
128
128
  } as const;
129
129
 
130
+ export type SummarizeErrorCode = keyof typeof summarizeErrors;
131
+
130
132
  // Helper functions to report failures and return.
131
- export const getFailMessage = (errorCode: keyof typeof summarizeErrors) =>
133
+ export const getFailMessage = (errorCode: SummarizeErrorCode) =>
132
134
  `${errorCode}: ${summarizeErrors[errorCode]}`;
133
135
 
134
136
  export class SummarizeResultBuilder {
@@ -150,7 +152,7 @@ export class SummarizeResultBuilder {
150
152
  */
151
153
  public fail(
152
154
  message: string,
153
- error: any,
155
+ error: IRetriableFailureError,
154
156
  submitFailureResult?: SubmitSummaryFailureData,
155
157
  nackSummaryResult?: INackSummaryResult,
156
158
  ) {
@@ -184,8 +186,7 @@ export class SummarizeResultBuilder {
184
186
  /**
185
187
  * Errors type for errors hit during summary that may be retriable.
186
188
  */
187
- export class RetriableSummaryError extends LoggingError {
188
- public readonly canRetry = this.retryAfterSeconds !== undefined;
189
+ export class RetriableSummaryError extends LoggingError implements IRetriableFailureError {
189
190
  constructor(
190
191
  message: string,
191
192
  public readonly retryAfterSeconds?: number,
@@ -221,9 +222,8 @@ export class SummaryGenerator {
221
222
  /**
222
223
  * Generates summary and listens for broadcast and ack/nack.
223
224
  * Returns true for ack, false for nack, and undefined for failure or timeout.
224
- * @param reason - reason for summarizing
225
- * @param options - refreshLatestAck to fetch summary ack info from server,
226
- * fullTree to generate tree without any summary handles even if unchanged
225
+ * @param summaryOptions - options controlling how the summary is generated or submitted.
226
+ * @param resultsBuilder - optional, result builder to use to build pass or fail result.
227
227
  */
228
228
  public summarize(
229
229
  summaryOptions: ISubmitSummaryOptions,
@@ -273,8 +273,8 @@ export class SummaryGenerator {
273
273
  * be provided. For op broadcast failures, only errors / properties should be provided.
274
274
  */
275
275
  const fail = (
276
- errorCode: keyof typeof summarizeErrors,
277
- error?: Error,
276
+ errorCode: SummarizeErrorCode,
277
+ error: IRetriableFailureError,
278
278
  properties?: SummaryGeneratorTelemetry,
279
279
  submitFailureResult?: SubmitSummaryFailureData,
280
280
  nackSummaryResult?: INackSummaryResult,
@@ -294,11 +294,9 @@ export class SummaryGenerator {
294
294
  ...properties,
295
295
  reason,
296
296
  category,
297
- retryAfterSeconds:
298
- submitFailureResult?.retryAfterSeconds ??
299
- nackSummaryResult?.retryAfterSeconds,
297
+ retryAfterSeconds: error.retryAfterSeconds,
300
298
  },
301
- error ?? reason,
299
+ error,
302
300
  ); // disconnect & summaryAckTimeout do not have proper error.
303
301
 
304
302
  resultsBuilder.fail(reason, error, submitFailureResult, nackSummaryResult);
@@ -330,9 +328,11 @@ export class SummaryGenerator {
330
328
  );
331
329
 
332
330
  if (summaryData.stage !== "submit") {
333
- return fail("submitSummaryFailure", summaryData.error, summarizeTelemetryProps, {
331
+ const errorCode: SummarizeErrorCode = "submitSummaryFailure";
332
+ const retriableError =
333
+ summaryData.error ?? new RetriableSummaryError(getFailMessage(errorCode));
334
+ return fail(errorCode, retriableError, summarizeTelemetryProps, {
334
335
  stage: summaryData.stage,
335
- retryAfterSeconds: getRetryDelaySecondsFromError(summaryData.error),
336
336
  });
337
337
  }
338
338
 
@@ -346,7 +346,7 @@ export class SummaryGenerator {
346
346
  * state change of multiple data stores. So, the total number of data stores that are summarized should not
347
347
  * exceed the number of ops since last summary + number of data store whose reference state changed.
348
348
  */
349
- if (!submitSummaryOptions.fullTree && !summaryData.forcedFullTree) {
349
+ if (!submitSummaryOptions.fullTree) {
350
350
  const { summarizedDataStoreCount, gcStateUpdatedDataStoreCount = 0 } =
351
351
  summaryData.summaryStats;
352
352
  if (
@@ -368,11 +368,14 @@ export class SummaryGenerator {
368
368
  } catch (error) {
369
369
  return fail(
370
370
  "submitSummaryFailure",
371
- wrapError(error, (message) => new LoggingError(message)),
371
+ wrapError(
372
+ error,
373
+ (message) =>
374
+ new RetriableSummaryError(message, getRetryDelaySecondsFromError(error)),
375
+ ),
372
376
  undefined /* properties */,
373
377
  {
374
378
  stage: "unknown",
375
- retryAfterSeconds: getRetryDelaySecondsFromError(error),
376
379
  },
377
380
  );
378
381
  } finally {
@@ -393,10 +396,17 @@ export class SummaryGenerator {
393
396
  cancellationToken,
394
397
  );
395
398
  if (waitBroadcastResult.result === "cancelled") {
396
- return fail("disconnect");
399
+ const errorCode: SummarizeErrorCode = "disconnect";
400
+ return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
397
401
  }
398
402
  if (waitBroadcastResult.result !== "done") {
399
- return fail("summaryOpWaitTimeout");
403
+ // The summary op may not have been received within the timeout due to a transient error. So,
404
+ // fail with a retriable error to re-attempt the summary if possible.
405
+ const errorCode: SummarizeErrorCode = "summaryOpWaitTimeout";
406
+ return fail(
407
+ errorCode,
408
+ new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
409
+ );
400
410
  }
401
411
  const summarizeOp = waitBroadcastResult.value;
402
412
 
@@ -422,10 +432,17 @@ export class SummaryGenerator {
422
432
  cancellationToken,
423
433
  );
424
434
  if (waitAckNackResult.result === "cancelled") {
425
- return fail("disconnect");
435
+ const errorCode: SummarizeErrorCode = "disconnect";
436
+ return fail(errorCode, new RetriableSummaryError(getFailMessage(errorCode)));
426
437
  }
427
438
  if (waitAckNackResult.result !== "done") {
428
- return fail("summaryAckWaitTimeout");
439
+ const errorCode: SummarizeErrorCode = "summaryAckWaitTimeout";
440
+ // The summary ack may not have been received within the timeout due to a transient error. So,
441
+ // fail with a retriable error to re-attempt the summary if possible.
442
+ return fail(
443
+ errorCode,
444
+ new RetriableSummaryError(getFailMessage(errorCode), 0 /* retryAfterSeconds */),
445
+ );
429
446
  }
430
447
  const ackNackOp = waitAckNackResult.value;
431
448
  this.pendingAckTimer.clear();
@@ -469,11 +486,16 @@ export class SummaryGenerator {
469
486
  const errorMessage = summaryNack?.message;
470
487
  const retryAfterSeconds = summaryNack?.retryAfter;
471
488
 
489
+ const errorCode: SummarizeErrorCode = "summaryNack";
490
+
472
491
  // pre-0.58 error message prefix: summaryNack
473
- const error = new LoggingError(`Received summaryNack`, {
492
+ const error = new RetriableSummaryError(
493
+ getFailMessage(errorCode),
474
494
  retryAfterSeconds,
475
- errorMessage,
476
- });
495
+ {
496
+ errorMessage,
497
+ },
498
+ );
477
499
 
478
500
  assert(
479
501
  getRetryDelaySecondsFromError(error) === retryAfterSeconds,
@@ -481,11 +503,11 @@ export class SummaryGenerator {
481
503
  );
482
504
  // This will only set resultsBuilder.receivedSummaryAckOrNack, as other promises are already set.
483
505
  return fail(
484
- "summaryNack",
506
+ errorCode,
485
507
  error,
486
508
  { ...summarizeTelemetryProps, nackRetryAfter: retryAfterSeconds },
487
509
  undefined /* submitFailureResult */,
488
- { summaryNackOp: ackNackOp, ackNackDuration, retryAfterSeconds },
510
+ { summaryNackOp: ackNackOp, ackNackDuration },
489
511
  );
490
512
  }
491
513
  } finally {