@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
@@ -9,9 +9,9 @@ const client_utils_1 = require("@fluid-internal/client-utils");
9
9
  const container_definitions_1 = require("@fluidframework/container-definitions");
10
10
  const internal_1 = require("@fluidframework/container-definitions/internal");
11
11
  const internal_2 = require("@fluidframework/core-utils/internal");
12
+ const driver_definitions_1 = require("@fluidframework/driver-definitions");
12
13
  const internal_3 = require("@fluidframework/driver-definitions/internal");
13
14
  const internal_4 = require("@fluidframework/driver-utils/internal");
14
- const protocol_definitions_1 = require("@fluidframework/protocol-definitions");
15
15
  const internal_5 = require("@fluidframework/runtime-definitions/internal");
16
16
  const internal_6 = require("@fluidframework/runtime-utils/internal");
17
17
  const internal_7 = require("@fluidframework/telemetry-utils/internal");
@@ -50,13 +50,13 @@ function compatBehaviorAllowsMessageType(_unknownContainerRuntimeMessageType, co
50
50
  exports.DefaultSummaryConfiguration = {
51
51
  state: "enabled",
52
52
  minIdleTime: 0,
53
- maxIdleTime: 30 * 1000,
54
- maxTime: 60 * 1000,
55
- maxOps: 100,
53
+ maxIdleTime: 30 * 1000, // 30 secs.
54
+ maxTime: 60 * 1000, // 1 min.
55
+ maxOps: 100, // Summarize if 100 weighted ops received since last snapshot.
56
56
  minOpsForLastSummaryAttempt: 10,
57
- maxAckWaitTime: 3 * 60 * 1000,
57
+ maxAckWaitTime: 3 * 60 * 1000, // 3 mins.
58
58
  maxOpsSinceLastSummary: 7000,
59
- initialSummarizerDelayMs: 5 * 1000,
59
+ initialSummarizerDelayMs: 5 * 1000, // 5 secs.
60
60
  nonRuntimeOpWeight: 0.1,
61
61
  runtimeOpWeight: 1.0,
62
62
  nonRuntimeHeuristicThreshold: 20,
@@ -155,7 +155,7 @@ exports.getDeviceSpec = getDeviceSpec;
155
155
  */
156
156
  const makeLegacySendBatchFn = (submitFn, deltaManager) => (batch) => {
157
157
  for (const message of batch.content) {
158
- submitFn(protocol_definitions_1.MessageType.Operation,
158
+ submitFn(internal_3.MessageType.Operation,
159
159
  // For back-compat (submitFn only works on deserialized content)
160
160
  message.contents === undefined ? undefined : JSON.parse(message.contents), true, // batch
161
161
  message.metadata);
@@ -532,7 +532,9 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
532
532
  return this.garbageCollector.throwOnTombstoneUsage;
533
533
  }
534
534
  /***/
535
- constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope, logger, existing, blobManagerSnapshot, _storage, createIdCompressor, documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, summaryConfiguration = {
535
+ constructor(context, registry, metadata, electedSummarizerData, chunks, dataStoreAliasMap, runtimeOptions, containerScope,
536
+ // Create a custom ITelemetryBaseLogger to output telemetry events.
537
+ baseLogger, existing, blobManagerSnapshot, _storage, createIdCompressor, documentsSchemaController, featureGatesForTelemetry, provideEntryPoint, requestHandler, summaryConfiguration = {
536
538
  // the defaults
537
539
  ...exports.DefaultSummaryConfiguration,
538
540
  // the runtime configuration overrides
@@ -543,7 +545,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
543
545
  this.metadata = metadata;
544
546
  this.runtimeOptions = runtimeOptions;
545
547
  this.containerScope = containerScope;
546
- this.logger = logger;
548
+ this.baseLogger = baseLogger;
547
549
  this._storage = _storage;
548
550
  this.createIdCompressor = createIdCompressor;
549
551
  this.documentsSchemaController = documentsSchemaController;
@@ -575,6 +577,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
575
577
  expiry: { policy: "absolute", durationMs: 60000 },
576
578
  });
577
579
  const { options, clientDetails, connected, baseSnapshot, submitFn, submitBatchFn, submitSummaryFn, submitSignalFn, disposeFn, closeFn, deltaManager, quorum, audience, loader, pendingLocalState, supportedFeatures, snapshotWithContents, } = context;
580
+ this.logger = (0, internal_7.createChildLogger)({ logger: this.baseLogger });
578
581
  this.mc = (0, internal_7.createChildMonitoringContext)({
579
582
  logger: this.logger,
580
583
  namespace: "ContainerRuntime",
@@ -857,7 +860,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
857
860
  namespace: "OrderedClientElection",
858
861
  });
859
862
  const orderedClientCollection = new index_js_3.OrderedClientCollection(orderedClientLogger, this.innerDeltaManager, this._quorum);
860
- const orderedClientElectionForSummarizer = new index_js_3.OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, index_js_3.SummarizerClientElection.isClientEligible);
863
+ const orderedClientElectionForSummarizer = new index_js_3.OrderedClientElection(orderedClientLogger, orderedClientCollection, electedSummarizerData ?? this.innerDeltaManager.lastSequenceNumber, index_js_3.SummarizerClientElection.isClientEligible, this.mc.config.getBoolean("Fluid.ContainerRuntime.OrderedClientElection.EnablePerformanceEvents"));
861
864
  this.summarizerClientElection = new index_js_3.SummarizerClientElection(orderedClientLogger, this.summaryCollection, orderedClientElectionForSummarizer, this.maxOpsSinceLastSummary);
862
865
  if (this.isSummarizerClient) {
863
866
  this._summarizer = new index_js_3.Summarizer(this /* ISummarizerRuntime */, () => this.summaryConfiguration, this /* ISummarizerInternalsProvider */, this.handleContext, this.summaryCollection, async (runtime) => index_js_3.RunWhileConnectedCoordinator.create(runtime,
@@ -874,7 +877,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
874
877
  // unregister default to no log on every op after falling behind
875
878
  // and register summary ack handler to re-register this handler
876
879
  // after successful summary
877
- this.summaryCollection.once(protocol_definitions_1.MessageType.SummaryAck, () => {
880
+ this.summaryCollection.once(internal_3.MessageType.SummaryAck, () => {
878
881
  this.mc.logger.sendTelemetryEvent({
879
882
  eventName: "SummaryStatus:CaughtUp",
880
883
  });
@@ -901,7 +904,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
901
904
  }
902
905
  }
903
906
  // logging hardware telemetry
904
- logger.sendTelemetryEvent({
907
+ this.logger.sendTelemetryEvent({
905
908
  eventName: "DeviceSpec",
906
909
  ...getDeviceSpec(),
907
910
  });
@@ -1064,7 +1067,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1064
1067
  const props = {
1065
1068
  eventName: "GroupIdSnapshotCatchup",
1066
1069
  loadingGroupIds: sortedLoadingGroupIds.join(","),
1067
- targetSequenceNumber: snapshotSeqNumber,
1070
+ targetSequenceNumber: snapshotSeqNumber, // This is so we reuse some columns in telemetry
1068
1071
  sequenceNumber: this.deltaManager.lastSequenceNumber, // This is so we reuse some columns in telemetry
1069
1072
  };
1070
1073
  const event = internal_7.PerformanceEvent.start(this.mc.logger, {
@@ -1182,7 +1185,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1182
1185
  this.messageAtLastSummary;
1183
1186
  const documentSchema = this.documentsSchemaController.summarizeDocumentSchema(this.deltaManager.lastSequenceNumber);
1184
1187
  // Is document schema explicit control on?
1185
- const explitiSchemaControl = documentSchema?.runtime.explicitSchemaControl;
1188
+ const explicitSchemaControl = documentSchema?.runtime.explicitSchemaControl;
1186
1189
  const metadata = {
1187
1190
  ...this.createContainerMetadata,
1188
1191
  // Increment the summary number for the next summary that will be generated.
@@ -1195,10 +1198,10 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1195
1198
  // runtimes (that preceed document schema control capabilities) to close container on load due to mismatch in
1196
1199
  // last message's sequence number.
1197
1200
  // See also lastMessageFromMetadata()
1198
- message: explitiSchemaControl
1201
+ message: explicitSchemaControl
1199
1202
  ? { sequenceNumber: -1 }
1200
1203
  : message,
1201
- lastMessage: explitiSchemaControl ? message : undefined,
1204
+ lastMessage: explicitSchemaControl ? message : undefined,
1202
1205
  documentSchema,
1203
1206
  };
1204
1207
  (0, internal_6.addBlobToSummary)(summaryTree, index_js_3.metadataBlobName, JSON.stringify(metadata));
@@ -1453,7 +1456,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1453
1456
  // Whether or not the message appears to be a runtime message from an up-to-date client.
1454
1457
  // It may be a legacy runtime message (ie already unpacked and ContainerMessageType)
1455
1458
  // or something different, like a system message.
1456
- const modernRuntimeMessage = messageArg.type === protocol_definitions_1.MessageType.Operation;
1459
+ const modernRuntimeMessage = messageArg.type === internal_3.MessageType.Operation;
1457
1460
  // Do shallow copy of message, as the processing flow will modify it.
1458
1461
  // There might be multiple container instances receiving the same message.
1459
1462
  // We do not need to make a deep copy. Each layer will just replace message.contents itself,
@@ -1917,7 +1920,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
1917
1920
  await this.collectGarbage({ logger: summaryLogger, runSweep, fullGC }, telemetryContext);
1918
1921
  }
1919
1922
  const { stats, summary } = await this.summarizerNode.summarize(fullTree, trackState, telemetryContext);
1920
- (0, internal_2.assert)(summary.type === protocol_definitions_1.SummaryType.Tree, 0x12f /* "Container Runtime's summarize should always return a tree" */);
1923
+ (0, internal_2.assert)(summary.type === driver_definitions_1.SummaryType.Tree, 0x12f /* "Container Runtime's summarize should always return a tree" */);
1921
1924
  return { stats, summary };
1922
1925
  }
1923
1926
  finally {
@@ -2080,7 +2083,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2080
2083
  * @param options - options controlling how the summary is generated or submitted
2081
2084
  */
2082
2085
  async submitSummary(options) {
2083
- const { fullTree = false, finalAttempt = false, refreshLatestAck, summaryLogger, latestSummaryRefSeqNum, } = options;
2086
+ const { fullTree = false, finalAttempt = false, summaryLogger, latestSummaryRefSeqNum, } = options;
2084
2087
  // The summary number for this summary. This will be updated during the summary process, so get it now and
2085
2088
  // use it for all events logged during this summary.
2086
2089
  const summaryNumber = this.nextSummaryNumber;
@@ -2095,13 +2098,6 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2095
2098
  },
2096
2099
  });
2097
2100
  (0, internal_2.assert)(this.outbox.isEmpty, 0x3d1 /* Can't trigger summary in the middle of a batch */);
2098
- // We close the summarizer and download a new snapshot and reload the container
2099
- if (refreshLatestAck === true) {
2100
- return this.prefetchLatestSummaryThenClose((0, internal_7.createChildLogger)({
2101
- logger: summaryNumberLogger,
2102
- properties: { all: { safeSummary: true } },
2103
- }));
2104
- }
2105
2101
  // If the container is dirty, i.e., there are pending unacked ops, the summary will not be eventual consistent
2106
2102
  // and it may even be incorrect. So, wait for the container to be saved with a timeout. If the container is not
2107
2103
  // saved within the timeout, check if it should be failed or can continue.
@@ -2170,7 +2166,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2170
2166
  stage: "base",
2171
2167
  referenceSequenceNumber: summaryRefSeqNum,
2172
2168
  minimumSequenceNumber,
2173
- error: new internal_7.LoggingError(`Summarizer node state inconsistent with summarizer state.`),
2169
+ error: new index_js_3.RetriableSummaryError(`Summarizer node state inconsistent with summarizer state.`),
2174
2170
  };
2175
2171
  }
2176
2172
  }
@@ -2213,17 +2209,14 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2213
2209
  stage: "base",
2214
2210
  referenceSequenceNumber: summaryRefSeqNum,
2215
2211
  minimumSequenceNumber,
2216
- error: new internal_7.LoggingError(continueResult.error),
2212
+ error: new index_js_3.RetriableSummaryError(continueResult.error),
2217
2213
  };
2218
2214
  }
2219
2215
  const trace = client_utils_1.Trace.start();
2220
2216
  let summarizeResult;
2221
- // If the GC state needs to be reset, we need to force a full tree summary and update the unreferenced
2222
- // state of all the nodes.
2223
- const forcedFullTree = this.garbageCollector.summaryStateNeedsReset;
2224
2217
  try {
2225
2218
  summarizeResult = await this.summarize({
2226
- fullTree: fullTree || forcedFullTree,
2219
+ fullTree,
2227
2220
  trackState: true,
2228
2221
  summaryLogger: summaryNumberLogger,
2229
2222
  runGC: this.garbageCollector.shouldRunGC,
@@ -2234,7 +2227,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2234
2227
  stage: "base",
2235
2228
  referenceSequenceNumber: summaryRefSeqNum,
2236
2229
  minimumSequenceNumber,
2237
- error: (0, internal_7.wrapError)(error, (msg) => new internal_7.LoggingError(msg)),
2230
+ error: (0, internal_7.wrapError)(error, (msg) => new index_js_3.RetriableSummaryError(msg)),
2238
2231
  };
2239
2232
  }
2240
2233
  // Validate that the summary generated by summarizer nodes is correct before uploading.
@@ -2262,8 +2255,8 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2262
2255
  // Because handles are unchanged dataStores in the current logic,
2263
2256
  // summarized dataStore count is total dataStore count minus handle count
2264
2257
  const dataStoreTree = summaryTree.tree[internal_5.channelsTreeName];
2265
- (0, internal_2.assert)(dataStoreTree.type === protocol_definitions_1.SummaryType.Tree, 0x1fc /* "summary is not a tree" */);
2266
- const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === protocol_definitions_1.SummaryType.Handle).length;
2258
+ (0, internal_2.assert)(dataStoreTree.type === driver_definitions_1.SummaryType.Tree, 0x1fc /* "summary is not a tree" */);
2259
+ const handleCount = Object.values(dataStoreTree.tree).filter((value) => value.type === driver_definitions_1.SummaryType.Handle).length;
2267
2260
  const gcSummaryTreeStats = summaryTree.tree[internal_5.gcTreeKey]
2268
2261
  ? (0, internal_6.calculateStats)(summaryTree.tree[internal_5.gcTreeKey])
2269
2262
  : undefined;
@@ -2282,14 +2275,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2282
2275
  summaryTree,
2283
2276
  summaryStats,
2284
2277
  generateDuration: trace.trace().duration,
2285
- forcedFullTree,
2286
2278
  };
2287
2279
  continueResult = checkContinue();
2288
2280
  if (!continueResult.continue) {
2289
2281
  return {
2290
2282
  stage: "generate",
2291
2283
  ...generateSummaryData,
2292
- error: new internal_7.LoggingError(continueResult.error),
2284
+ error: new index_js_3.RetriableSummaryError(continueResult.error),
2293
2285
  };
2294
2286
  }
2295
2287
  const summaryContext = lastAck === undefined
@@ -2311,7 +2303,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2311
2303
  return {
2312
2304
  stage: "generate",
2313
2305
  ...generateSummaryData,
2314
- error: (0, internal_7.wrapError)(error, (msg) => new internal_7.LoggingError(msg)),
2306
+ error: (0, internal_7.wrapError)(error, (msg) => new index_js_3.RetriableSummaryError(msg)),
2315
2307
  };
2316
2308
  }
2317
2309
  const parent = summaryContext.ackHandle;
@@ -2332,7 +2324,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2332
2324
  return {
2333
2325
  stage: "upload",
2334
2326
  ...uploadData,
2335
- error: new internal_7.LoggingError(continueResult.error),
2327
+ error: new index_js_3.RetriableSummaryError(continueResult.error),
2336
2328
  };
2337
2329
  }
2338
2330
  let clientSequenceNumber;
@@ -2343,7 +2335,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2343
2335
  return {
2344
2336
  stage: "upload",
2345
2337
  ...uploadData,
2346
- error: (0, internal_7.wrapError)(error, (msg) => new internal_7.LoggingError(msg)),
2338
+ error: (0, internal_7.wrapError)(error, (msg) => new index_js_3.RetriableSummaryError(msg)),
2347
2339
  };
2348
2340
  }
2349
2341
  const submitData = {
@@ -2359,7 +2351,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2359
2351
  return {
2360
2352
  stage: "upload",
2361
2353
  ...uploadData,
2362
- error: (0, internal_7.wrapError)(error, (msg) => new internal_7.LoggingError(msg)),
2354
+ error: (0, internal_7.wrapError)(error, (msg) => new index_js_3.RetriableSummaryError(msg)),
2363
2355
  };
2364
2356
  }
2365
2357
  return submitData;
@@ -2449,13 +2441,13 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2449
2441
  this.verifyNotClosed();
2450
2442
  return this.blobManager.createBlob(blob, signal);
2451
2443
  }
2452
- submitIdAllocationOpIfNeeded(resubmitOutstandingRanges = false) {
2444
+ submitIdAllocationOpIfNeeded(resubmitOutstandingRanges) {
2453
2445
  if (this._idCompressor) {
2454
2446
  const idRange = resubmitOutstandingRanges
2455
- ? this.idCompressor?.takeUnfinalizedCreationRange()
2447
+ ? this._idCompressor.takeUnfinalizedCreationRange()
2456
2448
  : this._idCompressor.takeNextCreationRange();
2457
2449
  // Don't include the idRange if there weren't any Ids allocated
2458
- if (idRange?.ids !== undefined) {
2450
+ if (idRange.ids !== undefined) {
2459
2451
  const idAllocationMessage = {
2460
2452
  type: messageTypes_js_1.ContainerMessageType.IdAllocation,
2461
2453
  contents: idRange,
@@ -2484,6 +2476,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2484
2476
  });
2485
2477
  }
2486
2478
  const type = containerRuntimeMessage.type;
2479
+ (0, internal_2.assert)(type !== messageTypes_js_1.ContainerMessageType.IdAllocation, "IdAllocation should be submitted directly to outbox.");
2487
2480
  const message = {
2488
2481
  contents: serializedContent,
2489
2482
  metadata,
@@ -2491,44 +2484,35 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2491
2484
  referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
2492
2485
  };
2493
2486
  try {
2494
- // If `message` is an allocation op, then we are in the resubmit path and we must redirect the allocation
2495
- // op into the correct batch to avoid ranges being finalized out of order.
2496
- // Otherwise, submit an IdAllocation op if any IDs have been generated since the last op was submitted, as
2497
- // any of the other op types may contain those IDs and thus depend on the allocation op being sent first.
2498
- if (type === messageTypes_js_1.ContainerMessageType.IdAllocation) {
2499
- this.outbox.submitIdAllocation(message);
2487
+ this.submitIdAllocationOpIfNeeded(false);
2488
+ // Allow document schema controller to send a message if it needs to propose change in document schema.
2489
+ // If it needs to send a message, it will call provided callback with payload of such message and rely
2490
+ // on this callback to do actual sending.
2491
+ const contents = this.documentsSchemaController.maybeSendSchemaMessage();
2492
+ if (contents) {
2493
+ this.logger.sendTelemetryEvent({
2494
+ eventName: "SchemaChangeProposal",
2495
+ refSeq: contents.refSeq,
2496
+ version: contents.version,
2497
+ newRuntimeSchema: JSON.stringify(contents.runtime),
2498
+ sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
2499
+ oldRuntimeSchema: JSON.stringify(this.metadata?.documentSchema?.runtime),
2500
+ });
2501
+ const msg = {
2502
+ type: messageTypes_js_1.ContainerMessageType.DocumentSchemaChange,
2503
+ contents,
2504
+ };
2505
+ this.outbox.submit({
2506
+ contents: JSON.stringify(msg),
2507
+ referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
2508
+ });
2509
+ }
2510
+ if (type === messageTypes_js_1.ContainerMessageType.BlobAttach) {
2511
+ // BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
2512
+ this.outbox.submitBlobAttach(message);
2500
2513
  }
2501
2514
  else {
2502
- this.submitIdAllocationOpIfNeeded();
2503
- // Allow document schema controller to send a message if it needs to propose change in document schema.
2504
- // If it needs to send a message, it will call provided callback with payload of such message and rely
2505
- // on this callback to do actual sending.
2506
- const contents = this.documentsSchemaController.maybeSendSchemaMessage();
2507
- if (contents) {
2508
- this.logger.sendTelemetryEvent({
2509
- eventName: "SchemaChangeProposal",
2510
- refSeq: contents.refSeq,
2511
- version: contents.version,
2512
- newRuntimeSchema: JSON.stringify(contents.runtime),
2513
- sessionRuntimeSchema: JSON.stringify(this.sessionSchema),
2514
- oldRuntimeSchema: JSON.stringify(this.metadata?.documentSchema?.runtime),
2515
- });
2516
- const msg = {
2517
- type: messageTypes_js_1.ContainerMessageType.DocumentSchemaChange,
2518
- contents,
2519
- };
2520
- this.outbox.submit({
2521
- contents: JSON.stringify(msg),
2522
- referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
2523
- });
2524
- }
2525
- if (type === messageTypes_js_1.ContainerMessageType.BlobAttach) {
2526
- // BlobAttach ops must have their metadata visible and cannot be grouped (see opGroupingManager.ts)
2527
- this.outbox.submitBlobAttach(message);
2528
- }
2529
- else {
2530
- this.outbox.submit(message);
2531
- }
2515
+ this.outbox.submit(message);
2532
2516
  }
2533
2517
  if (!this.currentlyBatching()) {
2534
2518
  this.flush();
@@ -2586,7 +2570,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2586
2570
  // back-compat: ADO #1385: Make this call unconditional in the future
2587
2571
  return this.submitSummaryFn !== undefined
2588
2572
  ? this.submitSummaryFn(contents, referenceSequenceNumber)
2589
- : this.submitFn(protocol_definitions_1.MessageType.Summarize, contents, false);
2573
+ : this.submitFn(internal_3.MessageType.Summarize, contents, false);
2590
2574
  }
2591
2575
  /**
2592
2576
  * Throw an error if the runtime is closed. Methods that are expected to potentially
@@ -2703,51 +2687,23 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2703
2687
  * and then close as the current main client is likely to be re-elected as the parent summarizer again.
2704
2688
  */
2705
2689
  if (!result.isSummaryTracked && result.isSummaryNewer) {
2706
- await this.fetchLatestSnapshotFromStorage(summaryLogger, {
2690
+ await this.fetchLatestSnapshotAndClose(summaryLogger, {
2707
2691
  eventName: "RefreshLatestSummaryAckFetch",
2708
2692
  ackHandle,
2709
2693
  targetSequenceNumber: summaryRefSeq,
2710
2694
  }, readAndParseBlob);
2711
- await this.closeStaleSummarizer();
2712
2695
  return;
2713
2696
  }
2714
2697
  // Notify the garbage collector so it can update its latest summary state.
2715
2698
  await this.garbageCollector.refreshLatestSummary(result);
2716
2699
  }
2717
2700
  /**
2718
- * Fetches the latest snapshot from storage to refresh the cache as a performance optimization and closes the
2719
- * summarizer to reload from new state.
2720
- * @param summaryLogger - logger to use when fetching snapshot from storage
2721
- * @returns a generic summarization error
2701
+ * Fetches the latest snapshot from storage and closes the container. This is done in cases where
2702
+ * the last known snapshot is older than the latest one. This will ensure that the latest snapshot
2703
+ * is downloaded and we don't end up loading snapshot from cache.
2722
2704
  */
2723
- async prefetchLatestSummaryThenClose(summaryLogger) {
2724
- const readAndParseBlob = async (id) => (0, internal_4.readAndParse)(this.storage, id);
2725
- // This is a performance optimization as the same parent is likely to be elected again, and would use its
2726
- // cache to fetch the snapshot instead of the network.
2727
- await this.fetchLatestSnapshotFromStorage(summaryLogger, {
2728
- eventName: "RefreshLatestSummaryFromServerFetch",
2729
- }, readAndParseBlob);
2730
- await this.closeStaleSummarizer();
2731
- return {
2732
- stage: "base",
2733
- error: new internal_7.LoggingError("summary state stale - Unsupported option 'refreshLatestAck'"),
2734
- referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
2735
- minimumSequenceNumber: this.deltaManager.minimumSequenceNumber,
2736
- };
2737
- }
2738
- async closeStaleSummarizer() {
2739
- // Delay before restarting summarizer to prevent the summarizer from restarting too frequently.
2740
- await (0, internal_2.delay)(this.closeSummarizerDelayMs);
2741
- this._summarizer?.stop("latestSummaryStateStale");
2742
- this.disposeFn();
2743
- }
2744
- /**
2745
- * Downloads the latest snapshot from storage.
2746
- * By default, it also closes the container after downloading the snapshot. However, this may be
2747
- * overridden via options.
2748
- */
2749
- async fetchLatestSnapshotFromStorage(logger, event, readAndParseBlob) {
2750
- return internal_7.PerformanceEvent.timedExecAsync(logger, event, async (perfEvent) => {
2705
+ async fetchLatestSnapshotAndClose(logger, event, readAndParseBlob) {
2706
+ await internal_7.PerformanceEvent.timedExecAsync(logger, event, async (perfEvent) => {
2751
2707
  const stats = {};
2752
2708
  const trace = client_utils_1.Trace.start();
2753
2709
  const versions = await this.storage.getVersions(null, 1, "prefetchLatestSummaryBeforeClose", internal_3.FetchSource.noCache);
@@ -2760,12 +2716,10 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
2760
2716
  stats.snapshotRefSeq = latestSnapshotRefSeq;
2761
2717
  stats.snapshotVersion = versions[0].id;
2762
2718
  perfEvent.end(stats);
2763
- return {
2764
- snapshotTree: maybeSnapshot,
2765
- versionId: versions[0].id,
2766
- latestSnapshotRefSeq,
2767
- };
2768
2719
  });
2720
+ await (0, internal_2.delay)(this.closeSummarizerDelayMs);
2721
+ this._summarizer?.stop("latestSummaryStateStale");
2722
+ this.disposeFn();
2769
2723
  }
2770
2724
  getPendingLocalState(props) {
2771
2725
  this.verifyNotClosed();