@fluidframework/container-runtime 2.0.0-dev.5.3.2.178189 → 2.0.0-dev.6.4.0.191457

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 (526) hide show
  1. package/CHANGELOG.md +123 -0
  2. package/README.md +4 -3
  3. package/dist/batchTracker.d.ts +3 -2
  4. package/dist/batchTracker.d.ts.map +1 -1
  5. package/dist/batchTracker.js +6 -5
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +10 -16
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +184 -172
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/connectionTelemetry.d.ts.map +1 -1
  12. package/dist/connectionTelemetry.js +25 -16
  13. package/dist/connectionTelemetry.js.map +1 -1
  14. package/dist/containerRuntime.d.ts +161 -35
  15. package/dist/containerRuntime.d.ts.map +1 -1
  16. package/dist/containerRuntime.js +697 -449
  17. package/dist/containerRuntime.js.map +1 -1
  18. package/dist/dataStore.d.ts.map +1 -1
  19. package/dist/dataStore.js +15 -7
  20. package/dist/dataStore.js.map +1 -1
  21. package/dist/dataStoreContext.d.ts +3 -2
  22. package/dist/dataStoreContext.d.ts.map +1 -1
  23. package/dist/dataStoreContext.js +83 -87
  24. package/dist/dataStoreContext.js.map +1 -1
  25. package/dist/dataStoreContexts.d.ts +1 -2
  26. package/dist/dataStoreContexts.d.ts.map +1 -1
  27. package/dist/dataStoreContexts.js +8 -9
  28. package/dist/dataStoreContexts.js.map +1 -1
  29. package/dist/dataStoreRegistry.js +2 -2
  30. package/dist/dataStoreRegistry.js.map +1 -1
  31. package/dist/dataStores.d.ts +22 -6
  32. package/dist/dataStores.d.ts.map +1 -1
  33. package/dist/dataStores.js +123 -81
  34. package/dist/dataStores.js.map +1 -1
  35. package/dist/deltaManagerProxyBase.d.ts +35 -0
  36. package/dist/deltaManagerProxyBase.d.ts.map +1 -0
  37. package/dist/deltaManagerProxyBase.js +77 -0
  38. package/dist/deltaManagerProxyBase.js.map +1 -0
  39. package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
  40. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  41. package/dist/deltaManagerSummarizerProxy.js +4 -2
  42. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  43. package/dist/deltaScheduler.d.ts.map +1 -1
  44. package/dist/deltaScheduler.js +10 -10
  45. package/dist/deltaScheduler.js.map +1 -1
  46. package/dist/error.d.ts +14 -0
  47. package/dist/error.d.ts.map +1 -0
  48. package/dist/error.js +21 -0
  49. package/dist/error.js.map +1 -0
  50. package/dist/gc/garbageCollection.d.ts +10 -9
  51. package/dist/gc/garbageCollection.d.ts.map +1 -1
  52. package/dist/gc/garbageCollection.js +61 -53
  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 +18 -14
  56. package/dist/gc/gcConfigs.js.map +1 -1
  57. package/dist/gc/gcDefinitions.d.ts +17 -4
  58. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  59. package/dist/gc/gcDefinitions.js +14 -15
  60. package/dist/gc/gcDefinitions.js.map +1 -1
  61. package/dist/gc/gcHelpers.d.ts +0 -8
  62. package/dist/gc/gcHelpers.d.ts.map +1 -1
  63. package/dist/gc/gcHelpers.js +11 -24
  64. package/dist/gc/gcHelpers.js.map +1 -1
  65. package/dist/gc/gcSummaryStateTracker.d.ts +4 -7
  66. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  67. package/dist/gc/gcSummaryStateTracker.js +19 -58
  68. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  69. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  70. package/dist/gc/gcTelemetry.js +45 -35
  71. package/dist/gc/gcTelemetry.js.map +1 -1
  72. package/dist/gc/gcUnreferencedStateTracker.js +4 -4
  73. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  74. package/dist/gc/index.d.ts +2 -2
  75. package/dist/gc/index.d.ts.map +1 -1
  76. package/dist/gc/index.js +3 -5
  77. package/dist/gc/index.js.map +1 -1
  78. package/dist/id-compressor/appendOnlySortedMap.d.ts +8 -30
  79. package/dist/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
  80. package/dist/id-compressor/appendOnlySortedMap.js +26 -68
  81. package/dist/id-compressor/appendOnlySortedMap.js.map +1 -1
  82. package/dist/id-compressor/finalSpace.d.ts +29 -0
  83. package/dist/id-compressor/finalSpace.d.ts.map +1 -0
  84. package/dist/id-compressor/finalSpace.js +62 -0
  85. package/dist/id-compressor/finalSpace.js.map +1 -0
  86. package/dist/id-compressor/idCompressor.d.ts +25 -250
  87. package/dist/id-compressor/idCompressor.d.ts.map +1 -1
  88. package/dist/id-compressor/idCompressor.js +390 -1153
  89. package/dist/id-compressor/idCompressor.js.map +1 -1
  90. package/dist/id-compressor/identifiers.d.ts +32 -0
  91. package/dist/id-compressor/identifiers.d.ts.map +1 -0
  92. package/dist/id-compressor/identifiers.js +15 -0
  93. package/dist/id-compressor/identifiers.js.map +1 -0
  94. package/dist/id-compressor/index.d.ts +5 -6
  95. package/dist/id-compressor/index.d.ts.map +1 -1
  96. package/dist/id-compressor/index.js +20 -26
  97. package/dist/id-compressor/index.js.map +1 -1
  98. package/dist/id-compressor/persistanceUtilities.d.ts +22 -0
  99. package/dist/id-compressor/persistanceUtilities.d.ts.map +1 -0
  100. package/dist/id-compressor/persistanceUtilities.js +43 -0
  101. package/dist/id-compressor/persistanceUtilities.js.map +1 -0
  102. package/dist/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
  103. package/dist/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
  104. package/dist/id-compressor/sessionSpaceNormalizer.js +80 -0
  105. package/dist/id-compressor/sessionSpaceNormalizer.js.map +1 -0
  106. package/dist/id-compressor/sessions.d.ts +115 -0
  107. package/dist/id-compressor/sessions.d.ts.map +1 -0
  108. package/dist/id-compressor/sessions.js +305 -0
  109. package/dist/id-compressor/sessions.js.map +1 -0
  110. package/dist/id-compressor/utilities.d.ts +49 -0
  111. package/dist/id-compressor/utilities.d.ts.map +1 -0
  112. package/dist/id-compressor/utilities.js +166 -0
  113. package/dist/id-compressor/utilities.js.map +1 -0
  114. package/dist/index.d.ts +3 -3
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +6 -4
  117. package/dist/index.js.map +1 -1
  118. package/dist/opLifecycle/batchManager.js +10 -6
  119. package/dist/opLifecycle/batchManager.js.map +1 -1
  120. package/dist/opLifecycle/opCompressor.d.ts +2 -2
  121. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  122. package/dist/opLifecycle/opCompressor.js +12 -7
  123. package/dist/opLifecycle/opCompressor.js.map +1 -1
  124. package/dist/opLifecycle/opDecompressor.d.ts +2 -2
  125. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  126. package/dist/opLifecycle/opDecompressor.js +23 -20
  127. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  128. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  129. package/dist/opLifecycle/opGroupingManager.js +19 -9
  130. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  131. package/dist/opLifecycle/opSplitter.d.ts +2 -2
  132. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  133. package/dist/opLifecycle/opSplitter.js +22 -19
  134. package/dist/opLifecycle/opSplitter.js.map +1 -1
  135. package/dist/opLifecycle/outbox.d.ts +7 -5
  136. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  137. package/dist/opLifecycle/outbox.js +22 -31
  138. package/dist/opLifecycle/outbox.js.map +1 -1
  139. package/dist/opLifecycle/remoteMessageProcessor.d.ts +6 -1
  140. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  141. package/dist/opLifecycle/remoteMessageProcessor.js +19 -7
  142. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  143. package/dist/opProperties.js +1 -2
  144. package/dist/opProperties.js.map +1 -1
  145. package/dist/packageVersion.d.ts +1 -1
  146. package/dist/packageVersion.js +1 -1
  147. package/dist/packageVersion.js.map +1 -1
  148. package/dist/pendingStateManager.d.ts +18 -8
  149. package/dist/pendingStateManager.d.ts.map +1 -1
  150. package/dist/pendingStateManager.js +73 -51
  151. package/dist/pendingStateManager.js.map +1 -1
  152. package/dist/scheduleManager.d.ts.map +1 -1
  153. package/dist/scheduleManager.js +36 -32
  154. package/dist/scheduleManager.js.map +1 -1
  155. package/dist/summary/index.d.ts +3 -3
  156. package/dist/summary/index.d.ts.map +1 -1
  157. package/dist/summary/index.js +2 -1
  158. package/dist/summary/index.js.map +1 -1
  159. package/dist/summary/orderedClientElection.d.ts +3 -3
  160. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  161. package/dist/summary/orderedClientElection.js +26 -27
  162. package/dist/summary/orderedClientElection.js.map +1 -1
  163. package/dist/summary/runWhileConnectedCoordinator.js +3 -3
  164. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  165. package/dist/summary/runningSummarizer.d.ts +31 -10
  166. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  167. package/dist/summary/runningSummarizer.js +271 -139
  168. package/dist/summary/runningSummarizer.js.map +1 -1
  169. package/dist/summary/summarizer.d.ts +8 -7
  170. package/dist/summary/summarizer.d.ts.map +1 -1
  171. package/dist/summary/summarizer.js +79 -78
  172. package/dist/summary/summarizer.js.map +1 -1
  173. package/dist/summary/summarizerClientElection.d.ts +2 -2
  174. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  175. package/dist/summary/summarizerClientElection.js +7 -11
  176. package/dist/summary/summarizerClientElection.js.map +1 -1
  177. package/dist/summary/summarizerHeuristics.js +10 -14
  178. package/dist/summary/summarizerHeuristics.js.map +1 -1
  179. package/dist/summary/summarizerNode/index.d.ts +1 -1
  180. package/dist/summary/summarizerNode/index.d.ts.map +1 -1
  181. package/dist/summary/summarizerNode/index.js.map +1 -1
  182. package/dist/summary/summarizerNode/summarizerNode.d.ts +10 -19
  183. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  184. package/dist/summary/summarizerNode/summarizerNode.js +57 -130
  185. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  186. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +6 -30
  187. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  188. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  189. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  190. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +4 -14
  191. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  192. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +15 -101
  193. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  194. package/dist/summary/summarizerTypes.d.ts +38 -25
  195. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  196. package/dist/summary/summarizerTypes.js.map +1 -1
  197. package/dist/summary/summaryCollection.d.ts +2 -3
  198. package/dist/summary/summaryCollection.d.ts.map +1 -1
  199. package/dist/summary/summaryCollection.js +12 -13
  200. package/dist/summary/summaryCollection.js.map +1 -1
  201. package/dist/summary/summaryFormat.d.ts +3 -0
  202. package/dist/summary/summaryFormat.d.ts.map +1 -1
  203. package/dist/summary/summaryFormat.js +6 -4
  204. package/dist/summary/summaryFormat.js.map +1 -1
  205. package/dist/summary/summaryGenerator.d.ts +10 -4
  206. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  207. package/dist/summary/summaryGenerator.js +106 -57
  208. package/dist/summary/summaryGenerator.js.map +1 -1
  209. package/dist/summary/summaryManager.d.ts +8 -8
  210. package/dist/summary/summaryManager.d.ts.map +1 -1
  211. package/dist/summary/summaryManager.js +38 -28
  212. package/dist/summary/summaryManager.js.map +1 -1
  213. package/lib/batchTracker.d.ts +3 -2
  214. package/lib/batchTracker.d.ts.map +1 -1
  215. package/lib/batchTracker.js +5 -4
  216. package/lib/batchTracker.js.map +1 -1
  217. package/lib/blobManager.d.ts +10 -16
  218. package/lib/blobManager.d.ts.map +1 -1
  219. package/lib/blobManager.js +159 -147
  220. package/lib/blobManager.js.map +1 -1
  221. package/lib/connectionTelemetry.d.ts.map +1 -1
  222. package/lib/connectionTelemetry.js +15 -6
  223. package/lib/connectionTelemetry.js.map +1 -1
  224. package/lib/containerRuntime.d.ts +161 -35
  225. package/lib/containerRuntime.d.ts.map +1 -1
  226. package/lib/containerRuntime.js +651 -402
  227. package/lib/containerRuntime.js.map +1 -1
  228. package/lib/dataStore.d.ts.map +1 -1
  229. package/lib/dataStore.js +13 -5
  230. package/lib/dataStore.js.map +1 -1
  231. package/lib/dataStoreContext.d.ts +3 -2
  232. package/lib/dataStoreContext.d.ts.map +1 -1
  233. package/lib/dataStoreContext.js +47 -51
  234. package/lib/dataStoreContext.js.map +1 -1
  235. package/lib/dataStoreContexts.d.ts +1 -2
  236. package/lib/dataStoreContexts.d.ts.map +1 -1
  237. package/lib/dataStoreContexts.js +3 -4
  238. package/lib/dataStoreContexts.js.map +1 -1
  239. package/lib/dataStoreRegistry.js +1 -1
  240. package/lib/dataStoreRegistry.js.map +1 -1
  241. package/lib/dataStores.d.ts +22 -6
  242. package/lib/dataStores.d.ts.map +1 -1
  243. package/lib/dataStores.js +107 -65
  244. package/lib/dataStores.js.map +1 -1
  245. package/lib/deltaManagerProxyBase.d.ts +35 -0
  246. package/lib/deltaManagerProxyBase.d.ts.map +1 -0
  247. package/lib/deltaManagerProxyBase.js +73 -0
  248. package/lib/deltaManagerProxyBase.js.map +1 -0
  249. package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
  250. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
  251. package/lib/deltaManagerSummarizerProxy.js +3 -1
  252. package/lib/deltaManagerSummarizerProxy.js.map +1 -1
  253. package/lib/deltaScheduler.d.ts.map +1 -1
  254. package/lib/deltaScheduler.js +7 -7
  255. package/lib/deltaScheduler.js.map +1 -1
  256. package/lib/error.d.ts +14 -0
  257. package/lib/error.d.ts.map +1 -0
  258. package/lib/error.js +17 -0
  259. package/lib/error.js.map +1 -0
  260. package/lib/gc/garbageCollection.d.ts +10 -9
  261. package/lib/gc/garbageCollection.d.ts.map +1 -1
  262. package/lib/gc/garbageCollection.js +61 -53
  263. package/lib/gc/garbageCollection.js.map +1 -1
  264. package/lib/gc/gcConfigs.d.ts.map +1 -1
  265. package/lib/gc/gcConfigs.js +16 -12
  266. package/lib/gc/gcConfigs.js.map +1 -1
  267. package/lib/gc/gcDefinitions.d.ts +17 -4
  268. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  269. package/lib/gc/gcDefinitions.js +13 -14
  270. package/lib/gc/gcDefinitions.js.map +1 -1
  271. package/lib/gc/gcHelpers.d.ts +0 -8
  272. package/lib/gc/gcHelpers.d.ts.map +1 -1
  273. package/lib/gc/gcHelpers.js +5 -17
  274. package/lib/gc/gcHelpers.js.map +1 -1
  275. package/lib/gc/gcSummaryStateTracker.d.ts +4 -7
  276. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  277. package/lib/gc/gcSummaryStateTracker.js +20 -59
  278. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  279. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  280. package/lib/gc/gcTelemetry.js +46 -36
  281. package/lib/gc/gcTelemetry.js.map +1 -1
  282. package/lib/gc/gcUnreferencedStateTracker.js +1 -1
  283. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  284. package/lib/gc/index.d.ts +2 -2
  285. package/lib/gc/index.d.ts.map +1 -1
  286. package/lib/gc/index.js +2 -2
  287. package/lib/gc/index.js.map +1 -1
  288. package/lib/id-compressor/appendOnlySortedMap.d.ts +8 -30
  289. package/lib/id-compressor/appendOnlySortedMap.d.ts.map +1 -1
  290. package/lib/id-compressor/appendOnlySortedMap.js +25 -66
  291. package/lib/id-compressor/appendOnlySortedMap.js.map +1 -1
  292. package/lib/id-compressor/finalSpace.d.ts +29 -0
  293. package/lib/id-compressor/finalSpace.d.ts.map +1 -0
  294. package/lib/id-compressor/finalSpace.js +58 -0
  295. package/lib/id-compressor/finalSpace.js.map +1 -0
  296. package/lib/id-compressor/idCompressor.d.ts +25 -250
  297. package/lib/id-compressor/idCompressor.d.ts.map +1 -1
  298. package/lib/id-compressor/idCompressor.js +385 -1142
  299. package/lib/id-compressor/idCompressor.js.map +1 -1
  300. package/lib/id-compressor/identifiers.d.ts +32 -0
  301. package/lib/id-compressor/identifiers.d.ts.map +1 -0
  302. package/lib/id-compressor/identifiers.js +11 -0
  303. package/lib/id-compressor/identifiers.js.map +1 -0
  304. package/lib/id-compressor/index.d.ts +5 -6
  305. package/lib/id-compressor/index.d.ts.map +1 -1
  306. package/lib/id-compressor/index.js +5 -6
  307. package/lib/id-compressor/index.js.map +1 -1
  308. package/lib/id-compressor/persistanceUtilities.d.ts +22 -0
  309. package/lib/id-compressor/persistanceUtilities.d.ts.map +1 -0
  310. package/lib/id-compressor/persistanceUtilities.js +34 -0
  311. package/lib/id-compressor/persistanceUtilities.js.map +1 -0
  312. package/lib/id-compressor/sessionSpaceNormalizer.d.ts +46 -0
  313. package/lib/id-compressor/sessionSpaceNormalizer.d.ts.map +1 -0
  314. package/lib/id-compressor/sessionSpaceNormalizer.js +76 -0
  315. package/lib/id-compressor/sessionSpaceNormalizer.js.map +1 -0
  316. package/lib/id-compressor/sessions.d.ts +115 -0
  317. package/lib/id-compressor/sessions.d.ts.map +1 -0
  318. package/lib/id-compressor/sessions.js +290 -0
  319. package/lib/id-compressor/sessions.js.map +1 -0
  320. package/lib/id-compressor/utilities.d.ts +49 -0
  321. package/lib/id-compressor/utilities.d.ts.map +1 -0
  322. package/lib/id-compressor/utilities.js +148 -0
  323. package/lib/id-compressor/utilities.js.map +1 -0
  324. package/lib/index.d.ts +3 -3
  325. package/lib/index.d.ts.map +1 -1
  326. package/lib/index.js +2 -2
  327. package/lib/index.js.map +1 -1
  328. package/lib/opLifecycle/batchManager.js +10 -6
  329. package/lib/opLifecycle/batchManager.js.map +1 -1
  330. package/lib/opLifecycle/opCompressor.d.ts +2 -2
  331. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  332. package/lib/opLifecycle/opCompressor.js +10 -5
  333. package/lib/opLifecycle/opCompressor.js.map +1 -1
  334. package/lib/opLifecycle/opDecompressor.d.ts +2 -2
  335. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  336. package/lib/opLifecycle/opDecompressor.js +15 -12
  337. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  338. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  339. package/lib/opLifecycle/opGroupingManager.js +17 -7
  340. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  341. package/lib/opLifecycle/opSplitter.d.ts +2 -2
  342. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  343. package/lib/opLifecycle/opSplitter.js +13 -10
  344. package/lib/opLifecycle/opSplitter.js.map +1 -1
  345. package/lib/opLifecycle/outbox.d.ts +7 -5
  346. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  347. package/lib/opLifecycle/outbox.js +13 -22
  348. package/lib/opLifecycle/outbox.js.map +1 -1
  349. package/lib/opLifecycle/remoteMessageProcessor.d.ts +6 -1
  350. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  351. package/lib/opLifecycle/remoteMessageProcessor.js +20 -8
  352. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  353. package/lib/opProperties.js +1 -2
  354. package/lib/opProperties.js.map +1 -1
  355. package/lib/packageVersion.d.ts +1 -1
  356. package/lib/packageVersion.js +1 -1
  357. package/lib/packageVersion.js.map +1 -1
  358. package/lib/pendingStateManager.d.ts +18 -8
  359. package/lib/pendingStateManager.d.ts.map +1 -1
  360. package/lib/pendingStateManager.js +62 -40
  361. package/lib/pendingStateManager.js.map +1 -1
  362. package/lib/scheduleManager.d.ts.map +1 -1
  363. package/lib/scheduleManager.js +18 -14
  364. package/lib/scheduleManager.js.map +1 -1
  365. package/lib/summary/index.d.ts +3 -3
  366. package/lib/summary/index.d.ts.map +1 -1
  367. package/lib/summary/index.js +1 -1
  368. package/lib/summary/index.js.map +1 -1
  369. package/lib/summary/orderedClientElection.d.ts +3 -3
  370. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  371. package/lib/summary/orderedClientElection.js +21 -22
  372. package/lib/summary/orderedClientElection.js.map +1 -1
  373. package/lib/summary/runWhileConnectedCoordinator.js +1 -1
  374. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  375. package/lib/summary/runningSummarizer.d.ts +31 -10
  376. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  377. package/lib/summary/runningSummarizer.js +265 -133
  378. package/lib/summary/runningSummarizer.js.map +1 -1
  379. package/lib/summary/summarizer.d.ts +8 -7
  380. package/lib/summary/summarizer.d.ts.map +1 -1
  381. package/lib/summary/summarizer.js +75 -74
  382. package/lib/summary/summarizer.js.map +1 -1
  383. package/lib/summary/summarizerClientElection.d.ts +2 -2
  384. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  385. package/lib/summary/summarizerClientElection.js +6 -10
  386. package/lib/summary/summarizerClientElection.js.map +1 -1
  387. package/lib/summary/summarizerHeuristics.js +9 -13
  388. package/lib/summary/summarizerHeuristics.js.map +1 -1
  389. package/lib/summary/summarizerNode/index.d.ts +1 -1
  390. package/lib/summary/summarizerNode/index.d.ts.map +1 -1
  391. package/lib/summary/summarizerNode/index.js.map +1 -1
  392. package/lib/summary/summarizerNode/summarizerNode.d.ts +10 -19
  393. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  394. package/lib/summary/summarizerNode/summarizerNode.js +42 -115
  395. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  396. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +6 -30
  397. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  398. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -4
  399. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  400. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +4 -14
  401. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  402. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +14 -100
  403. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  404. package/lib/summary/summarizerTypes.d.ts +38 -25
  405. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  406. package/lib/summary/summarizerTypes.js.map +1 -1
  407. package/lib/summary/summaryCollection.d.ts +2 -3
  408. package/lib/summary/summaryCollection.d.ts.map +1 -1
  409. package/lib/summary/summaryCollection.js +5 -6
  410. package/lib/summary/summaryCollection.js.map +1 -1
  411. package/lib/summary/summaryFormat.d.ts +3 -0
  412. package/lib/summary/summaryFormat.d.ts.map +1 -1
  413. package/lib/summary/summaryFormat.js +5 -3
  414. package/lib/summary/summaryFormat.js.map +1 -1
  415. package/lib/summary/summaryGenerator.d.ts +10 -4
  416. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  417. package/lib/summary/summaryGenerator.js +100 -51
  418. package/lib/summary/summaryGenerator.js.map +1 -1
  419. package/lib/summary/summaryManager.d.ts +8 -8
  420. package/lib/summary/summaryManager.d.ts.map +1 -1
  421. package/lib/summary/summaryManager.js +35 -25
  422. package/lib/summary/summaryManager.js.map +1 -1
  423. package/package.json +28 -31
  424. package/src/batchTracker.ts +7 -5
  425. package/src/blobManager.ts +188 -166
  426. package/src/connectionTelemetry.ts +9 -4
  427. package/src/containerRuntime.ts +806 -441
  428. package/src/dataStore.ts +12 -4
  429. package/src/dataStoreContext.ts +39 -43
  430. package/src/dataStoreContexts.ts +4 -6
  431. package/src/dataStoreRegistry.ts +1 -1
  432. package/src/dataStores.ts +114 -80
  433. package/src/deltaManagerProxyBase.ts +111 -0
  434. package/src/deltaManagerSummarizerProxy.ts +4 -1
  435. package/src/deltaScheduler.ts +7 -11
  436. package/src/error.ts +18 -0
  437. package/src/gc/garbageCollection.md +53 -5
  438. package/src/gc/garbageCollection.ts +58 -52
  439. package/src/gc/gcConfigs.ts +4 -2
  440. package/src/gc/gcDefinitions.ts +17 -20
  441. package/src/gc/gcEarlyAdoption.md +145 -0
  442. package/src/gc/gcHelpers.ts +1 -12
  443. package/src/gc/gcSummaryStateTracker.ts +19 -65
  444. package/src/gc/gcTelemetry.ts +14 -12
  445. package/src/gc/gcUnreferencedStateTracker.ts +1 -1
  446. package/src/gc/index.ts +2 -4
  447. package/src/id-compressor/appendOnlySortedMap.ts +26 -87
  448. package/src/id-compressor/finalSpace.ts +67 -0
  449. package/src/id-compressor/idCompressor.ts +458 -1682
  450. package/src/id-compressor/identifiers.ts +42 -0
  451. package/src/id-compressor/index.ts +11 -20
  452. package/src/id-compressor/persistanceUtilities.ts +58 -0
  453. package/src/id-compressor/sessionSpaceNormalizer.ts +83 -0
  454. package/src/id-compressor/sessions.ts +405 -0
  455. package/src/id-compressor/utilities.ts +187 -0
  456. package/src/index.ts +7 -2
  457. package/src/opLifecycle/opCompressor.ts +6 -5
  458. package/src/opLifecycle/opDecompressor.ts +6 -4
  459. package/src/opLifecycle/opGroupingManager.ts +9 -6
  460. package/src/opLifecycle/opSplitter.ts +7 -6
  461. package/src/opLifecycle/outbox.ts +23 -32
  462. package/src/opLifecycle/remoteMessageProcessor.ts +27 -8
  463. package/src/packageVersion.ts +1 -1
  464. package/src/pendingStateManager.ts +72 -42
  465. package/src/scheduleManager.ts +7 -5
  466. package/src/summary/index.ts +4 -3
  467. package/src/summary/orderedClientElection.ts +10 -6
  468. package/src/summary/runWhileConnectedCoordinator.ts +1 -1
  469. package/src/summary/runningSummarizer.ts +291 -163
  470. package/src/summary/summarizer.ts +27 -16
  471. package/src/summary/summarizerClientElection.ts +2 -2
  472. package/src/summary/summarizerHeuristics.ts +1 -1
  473. package/src/summary/summarizerNode/index.ts +1 -2
  474. package/src/summary/summarizerNode/summarizerNode.ts +36 -160
  475. package/src/summary/summarizerNode/summarizerNodeUtils.ts +7 -38
  476. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +11 -130
  477. package/src/summary/summarizerTypes.ts +40 -25
  478. package/src/summary/summaryCollection.ts +3 -3
  479. package/src/summary/summaryFormat.ts +4 -1
  480. package/src/summary/summaryGenerator.ts +52 -52
  481. package/src/summary/summaryManager.ts +44 -17
  482. package/dist/id-compressor/idRange.d.ts +0 -11
  483. package/dist/id-compressor/idRange.d.ts.map +0 -1
  484. package/dist/id-compressor/idRange.js +0 -29
  485. package/dist/id-compressor/idRange.js.map +0 -1
  486. package/dist/id-compressor/numericUuid.d.ts +0 -59
  487. package/dist/id-compressor/numericUuid.d.ts.map +0 -1
  488. package/dist/id-compressor/numericUuid.js +0 -325
  489. package/dist/id-compressor/numericUuid.js.map +0 -1
  490. package/dist/id-compressor/sessionIdNormalizer.d.ts +0 -138
  491. package/dist/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
  492. package/dist/id-compressor/sessionIdNormalizer.js +0 -488
  493. package/dist/id-compressor/sessionIdNormalizer.js.map +0 -1
  494. package/dist/id-compressor/utils.d.ts +0 -57
  495. package/dist/id-compressor/utils.d.ts.map +0 -1
  496. package/dist/id-compressor/utils.js +0 -90
  497. package/dist/id-compressor/utils.js.map +0 -1
  498. package/dist/id-compressor/uuidUtilities.d.ts +0 -28
  499. package/dist/id-compressor/uuidUtilities.d.ts.map +0 -1
  500. package/dist/id-compressor/uuidUtilities.js +0 -104
  501. package/dist/id-compressor/uuidUtilities.js.map +0 -1
  502. package/lib/id-compressor/idRange.d.ts +0 -11
  503. package/lib/id-compressor/idRange.d.ts.map +0 -1
  504. package/lib/id-compressor/idRange.js +0 -25
  505. package/lib/id-compressor/idRange.js.map +0 -1
  506. package/lib/id-compressor/numericUuid.d.ts +0 -59
  507. package/lib/id-compressor/numericUuid.d.ts.map +0 -1
  508. package/lib/id-compressor/numericUuid.js +0 -315
  509. package/lib/id-compressor/numericUuid.js.map +0 -1
  510. package/lib/id-compressor/sessionIdNormalizer.d.ts +0 -138
  511. package/lib/id-compressor/sessionIdNormalizer.d.ts.map +0 -1
  512. package/lib/id-compressor/sessionIdNormalizer.js +0 -484
  513. package/lib/id-compressor/sessionIdNormalizer.js.map +0 -1
  514. package/lib/id-compressor/utils.d.ts +0 -57
  515. package/lib/id-compressor/utils.d.ts.map +0 -1
  516. package/lib/id-compressor/utils.js +0 -79
  517. package/lib/id-compressor/utils.js.map +0 -1
  518. package/lib/id-compressor/uuidUtilities.d.ts +0 -28
  519. package/lib/id-compressor/uuidUtilities.d.ts.map +0 -1
  520. package/lib/id-compressor/uuidUtilities.js +0 -96
  521. package/lib/id-compressor/uuidUtilities.js.map +0 -1
  522. package/src/id-compressor/idRange.ts +0 -35
  523. package/src/id-compressor/numericUuid.ts +0 -383
  524. package/src/id-compressor/sessionIdNormalizer.ts +0 -609
  525. package/src/id-compressor/utils.ts +0 -114
  526. package/src/id-compressor/uuidUtilities.ts +0 -120
@@ -3,17 +3,17 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { EventEmitter } from "events";
7
- import { Deferred } from "@fluidframework/common-utils";
6
+ import { Deferred } from "@fluidframework/core-utils";
7
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
8
8
  import {
9
9
  ITelemetryLoggerExt,
10
- ChildLogger,
10
+ createChildLogger,
11
11
  IFluidErrorBase,
12
12
  LoggingError,
13
+ UsageError,
13
14
  wrapErrorAndLog,
14
15
  } from "@fluidframework/telemetry-utils";
15
16
  import { ILoader, LoaderHeader } from "@fluidframework/container-definitions";
16
- import { UsageError } from "@fluidframework/container-utils";
17
17
  import { DriverHeader } from "@fluidframework/driver-definitions";
18
18
  import { requestFluidObject } from "@fluidframework/runtime-utils";
19
19
  import { FluidObject, IFluidHandleContext, IRequest } from "@fluidframework/core-interfaces";
@@ -30,6 +30,12 @@ import {
30
30
  ISummarizerRuntime,
31
31
  ISummarizingWarning,
32
32
  SummarizerStopReason,
33
+ IOnDemandSummarizeOptions,
34
+ ISummarizeResults,
35
+ IEnqueueSummarizeOptions,
36
+ EnqueueSummarizeResult,
37
+ ISummarizerEvents,
38
+ ISummarizeEventProps,
33
39
  } from "./summarizerTypes";
34
40
  import { SummarizeHeuristicData } from "./summarizerHeuristics";
35
41
  import { SummarizeResultBuilder } from "./summaryGenerator";
@@ -61,7 +67,7 @@ export const createSummarizingWarning = (errorMessage: string, logged: boolean)
61
67
  * It is the main entry point for summary work.
62
68
  * It is created only by summarizing container (i.e. one with clientType === "summarizer")
63
69
  */
64
- export class Summarizer extends EventEmitter implements ISummarizer {
70
+ export class Summarizer extends TypedEventEmitter<ISummarizerEvents> implements ISummarizer {
65
71
  public get ISummarizer() {
66
72
  return this;
67
73
  }
@@ -90,7 +96,7 @@ export class Summarizer extends EventEmitter implements ISummarizer {
90
96
  ) => Promise<ICancellableSummarizerController>,
91
97
  ) {
92
98
  super();
93
- this.logger = ChildLogger.create(this.runtime.logger, "Summarizer");
99
+ this.logger = createChildLogger({ logger: this.runtime.logger, namespace: "Summarizer" });
94
100
  }
95
101
 
96
102
  /**
@@ -210,7 +216,7 @@ export class Summarizer extends EventEmitter implements ISummarizer {
210
216
  * Should we try to run a last summary for the given stop reason?
211
217
  * Currently only allows "parentNotConnected"
212
218
  * @param stopReason - SummarizerStopReason
213
- * @returns - true if the stop reason can run a last summary
219
+ * @returns `true` if the stop reason can run a last summary, otherwise `false`.
214
220
  */
215
221
  public static stopReasonCanRunLastSummary(stopReason: SummarizerStopReason): boolean {
216
222
  return stopReason === "parentNotConnected";
@@ -225,7 +231,7 @@ export class Summarizer extends EventEmitter implements ISummarizer {
225
231
  * @param onBehalfOf - ID of the client that requested that the summarizer start
226
232
  * @param runCoordinator - cancellation token
227
233
  * @param newConfig - Summary configuration to override the existing config when invoking the RunningSummarizer.
228
- * @returns - Promise that is fulfilled when the RunningSummarizer is ready
234
+ * @returns A promise that is fulfilled when the RunningSummarizer is ready.
229
235
  */
230
236
  private async start(
231
237
  onBehalfOf: string,
@@ -277,11 +283,15 @@ export class Summarizer extends EventEmitter implements ISummarizer {
277
283
  this.runtime,
278
284
  );
279
285
  this.runningSummarizer = runningSummarizer;
286
+ this.runningSummarizer.on("summarize", this.handleSummarizeEvent);
280
287
  this.starting = false;
281
-
282
288
  return runningSummarizer;
283
289
  }
284
290
 
291
+ private readonly handleSummarizeEvent = (eventProps: ISummarizeEventProps) => {
292
+ this.emit("summarize", eventProps);
293
+ };
294
+
285
295
  /**
286
296
  * Disposes of resources after running. This cleanup will
287
297
  * clear any outstanding timers and reset some of the state
@@ -294,12 +304,13 @@ export class Summarizer extends EventEmitter implements ISummarizer {
294
304
 
295
305
  this._disposed = true;
296
306
  if (this.runningSummarizer) {
307
+ this.runningSummarizer.off("summarize", this.handleSummarizeEvent);
297
308
  this.runningSummarizer.dispose();
298
309
  this.runningSummarizer = undefined;
299
310
  }
300
311
  }
301
312
 
302
- public readonly summarizeOnDemand: ISummarizer["summarizeOnDemand"] = (...args) => {
313
+ public summarizeOnDemand(options: IOnDemandSummarizeOptions): ISummarizeResults {
303
314
  try {
304
315
  if (this._disposed || this.runningSummarizer?.disposed) {
305
316
  throw new UsageError("Summarizer is already disposed.");
@@ -318,7 +329,7 @@ export class Summarizer extends EventEmitter implements ISummarizer {
318
329
  const builder = new SummarizeResultBuilder();
319
330
  if (this.runningSummarizer) {
320
331
  // Summarizer is already running. Go ahead and start.
321
- return this.runningSummarizer.summarizeOnDemand(builder, ...args);
332
+ return this.runningSummarizer.summarizeOnDemand(options, builder);
322
333
  }
323
334
 
324
335
  // Summarizer isn't running, so we need to start it, which is an async operation.
@@ -335,7 +346,7 @@ export class Summarizer extends EventEmitter implements ISummarizer {
335
346
  startP
336
347
  .then(async (runningSummarizer) => {
337
348
  // Successfully started the summarizer. Run it.
338
- runningSummarizer.summarizeOnDemand(builder, ...args);
349
+ runningSummarizer.summarizeOnDemand(options, builder);
339
350
  // Wait for a command to stop or loss of connectivity before tearing down the summarizer and client.
340
351
  const stopReason = await Promise.race([
341
352
  this.stopDeferred.promise,
@@ -357,9 +368,9 @@ export class Summarizer extends EventEmitter implements ISummarizer {
357
368
  } catch (error) {
358
369
  throw SummarizingWarning.wrap(error, false /* logged */, this.logger);
359
370
  }
360
- };
371
+ }
361
372
 
362
- public readonly enqueueSummarize: ISummarizer["enqueueSummarize"] = (...args) => {
373
+ public enqueueSummarize(options: IEnqueueSummarizeOptions): EnqueueSummarizeResult {
363
374
  if (
364
375
  this._disposed ||
365
376
  this.runningSummarizer === undefined ||
@@ -367,8 +378,8 @@ export class Summarizer extends EventEmitter implements ISummarizer {
367
378
  ) {
368
379
  throw new UsageError("Summarizer is not running or already disposed.");
369
380
  }
370
- return this.runningSummarizer.enqueueSummarize(...args);
371
- };
381
+ return this.runningSummarizer.enqueueSummarize(options);
382
+ }
372
383
 
373
384
  public recordSummaryAttempt?(summaryRefSeqNum?: number) {
374
385
  this._heuristicData?.recordAttempt(summaryRefSeqNum);
@@ -3,9 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IEvent, IEventProvider } from "@fluidframework/common-definitions";
6
+ import { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
7
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
- import { TypedEventEmitter } from "@fluidframework/common-utils";
8
+ import { TypedEventEmitter } from "@fluid-internal/client-utils";
9
9
  import { IClientDetails, MessageType } from "@fluidframework/protocol-definitions";
10
10
  import {
11
11
  IOrderedClientElection,
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
7
- import { Timer } from "@fluidframework/common-utils";
7
+ import { Timer } from "@fluidframework/core-utils";
8
8
  import { ISummaryConfigurationHeuristics } from "../containerRuntime";
9
9
  import {
10
10
  ISummarizeHeuristicData,
@@ -4,9 +4,8 @@
4
4
  */
5
5
 
6
6
  export {
7
- IFetchSnapshotResult,
7
+ IRefreshSummaryResult,
8
8
  ISummarizerNodeRootContract,
9
- RefreshSummaryResult,
10
9
  ValidateSummaryResult,
11
10
  } from "./summarizerNodeUtils";
12
11
  export { IRootSummarizerNode, createRootSummarizerNode } from "./summarizerNode";
@@ -3,7 +3,7 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ITelemetryErrorEvent } from "@fluidframework/core-interfaces";
6
+ import { ITelemetryBaseLogger, ITelemetryErrorEvent } from "@fluidframework/core-interfaces";
7
7
  import {
8
8
  ISummarizerNode,
9
9
  ISummarizerNodeConfig,
@@ -23,27 +23,22 @@ import {
23
23
  } from "@fluidframework/protocol-definitions";
24
24
  import {
25
25
  ITelemetryLoggerExt,
26
- ChildLogger,
26
+ createChildLogger,
27
27
  LoggingError,
28
28
  PerformanceEvent,
29
29
  TelemetryDataTag,
30
+ tagCodeArtifacts,
30
31
  } from "@fluidframework/telemetry-utils";
31
- import { assert, unreachableCase } from "@fluidframework/common-utils";
32
- import {
33
- convertToSummaryTree,
34
- calculateStats,
35
- mergeStats,
36
- ReadAndParseBlob,
37
- } from "@fluidframework/runtime-utils";
32
+ import { assert, unreachableCase } from "@fluidframework/core-utils";
33
+ import { convertToSummaryTree, calculateStats, mergeStats } from "@fluidframework/runtime-utils";
38
34
  import {
39
35
  EscapedPath,
40
36
  ICreateChildDetails,
41
- IFetchSnapshotResult,
42
37
  IInitialSummary,
38
+ IRefreshSummaryResult,
43
39
  ISummarizerNodeRootContract,
44
40
  parseSummaryForSubtrees,
45
41
  parseSummaryTreeForSubtrees,
46
- RefreshSummaryResult,
47
42
  SummaryNode,
48
43
  ValidateSummaryResult,
49
44
  } from "./summarizerNodeUtils";
@@ -85,30 +80,28 @@ export class SummarizerNode implements IRootSummarizerNode {
85
80
  * Use createRootSummarizerNode to create root node, or createChild to create child nodes.
86
81
  */
87
82
  public constructor(
88
- baseLogger: ITelemetryLoggerExt,
83
+ baseLogger: ITelemetryBaseLogger,
89
84
  private readonly summarizeInternalFn: SummarizeInternalFn,
90
85
  config: ISummarizerNodeConfig,
91
86
  private _changeSequenceNumber: number,
92
87
  /** Undefined means created without summary */
93
88
  private _latestSummary?: SummaryNode,
94
89
  private readonly initialSummary?: IInitialSummary,
95
- protected wipSummaryLogger?: ITelemetryLoggerExt,
90
+ protected wipSummaryLogger?: ITelemetryBaseLogger,
96
91
  /** A unique id of this node to be logged when sending telemetry. */
97
92
  protected telemetryNodeId?: string,
98
93
  ) {
99
94
  this.canReuseHandle = config.canReuseHandle ?? true;
100
95
  // All logs posted by the summarizer node should include the telemetryNodeId.
101
- this.logger = ChildLogger.create(baseLogger, undefined /* namespace */, {
102
- all: {
103
- id: {
104
- tag: TelemetryDataTag.CodeArtifact,
105
- value: this.telemetryNodeId,
106
- },
96
+ this.logger = createChildLogger({
97
+ logger: baseLogger,
98
+ properties: {
99
+ all: tagCodeArtifacts({ id: this.telemetryNodeId }),
107
100
  },
108
101
  });
109
102
  }
110
103
 
111
- public startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryLoggerExt) {
104
+ public startSummary(referenceSequenceNumber: number, summaryLogger: ITelemetryBaseLogger) {
112
105
  assert(
113
106
  this.wipSummaryLogger === undefined,
114
107
  0x19f /* "wipSummaryLogger should not be set yet in startSummary" */,
@@ -372,31 +365,21 @@ export class SummarizerNode implements IRootSummarizerNode {
372
365
 
373
366
  /**
374
367
  * Refreshes the latest summary tracked by this node. If we have a pending summary for the given proposal handle,
375
- * it becomes the latest summary. If the current summary is already ahead (e.g., loaded from a service summary),
376
- * we skip the update. Otherwise, we fetch the latest snapshot and update latest summary based off of that.
377
- *
378
- * @returns A RefreshSummaryResult type which returns information based on the following three scenarios:
368
+ * it becomes the latest summary. If the current summary is already ahead, we skip the update.
369
+ * If the current summary is behind, then we do not refresh.
379
370
  *
380
- * 1. The latest summary was not updated.
381
- *
382
- * 2. The latest summary was updated and the summary corresponding to the params was being tracked.
383
- *
384
- * 3. The latest summary was updated but the summary corresponding to the params was not tracked. In this
385
- * case, the latest summary is updated based on the downloaded snapshot which is also returned.
371
+ * @returns true if the summary is tracked by this node, false otherwise.
386
372
  */
387
373
  public async refreshLatestSummary(
388
- proposalHandle: string | undefined,
374
+ proposalHandle: string,
389
375
  summaryRefSeq: number,
390
- fetchLatestSnapshot: () => Promise<IFetchSnapshotResult>,
391
- readAndParseBlob: ReadAndParseBlob,
392
- correlatedSummaryLogger: ITelemetryLoggerExt,
393
- ): Promise<RefreshSummaryResult> {
376
+ ): Promise<IRefreshSummaryResult> {
394
377
  const eventProps: {
395
378
  proposalHandle: string | undefined;
396
379
  summaryRefSeq: number;
397
380
  referenceSequenceNumber: number;
398
- latestSummaryUpdated?: boolean;
399
- wasSummaryTracked?: boolean;
381
+ isSummaryTracked?: boolean;
382
+ pendingSummaryFound?: boolean;
400
383
  } = {
401
384
  proposalHandle,
402
385
  summaryRefSeq,
@@ -417,75 +400,22 @@ export class SummarizerNode implements IRootSummarizerNode {
417
400
  });
418
401
  }
419
402
 
420
- if (proposalHandle !== undefined) {
421
- const maybeSummaryNode = this.pendingSummaries.get(proposalHandle);
403
+ let isSummaryTracked = false;
404
+ let isSummaryNewer = false;
422
405
 
423
- if (maybeSummaryNode !== undefined) {
424
- this.refreshLatestSummaryFromPending(
425
- proposalHandle,
426
- maybeSummaryNode.referenceSequenceNumber,
427
- );
428
- eventProps.wasSummaryTracked = true;
429
- eventProps.latestSummaryUpdated = true;
430
- event.end(eventProps);
431
- return {
432
- latestSummaryUpdated: true,
433
- wasSummaryTracked: true,
434
- summaryRefSeq,
435
- };
436
- }
437
-
438
- const props = {
439
- summaryRefSeq,
440
- pendingSize: this.pendingSummaries.size ?? undefined,
441
- };
442
- this.logger.sendTelemetryEvent({
443
- eventName: "PendingSummaryNotFound",
444
- proposalHandle,
445
- referenceSequenceNumber: this.referenceSequenceNumber,
446
- details: JSON.stringify(props),
447
- });
406
+ if (summaryRefSeq > this.referenceSequenceNumber) {
407
+ isSummaryNewer = true;
448
408
  }
449
-
450
- // If the summary for which refresh is called is older than the latest tracked summary, ignore it.
451
- if (this.referenceSequenceNumber >= summaryRefSeq) {
452
- eventProps.latestSummaryUpdated = false;
453
- event.end(eventProps);
454
- return { latestSummaryUpdated: false };
455
- }
456
-
457
- // Fetch the latest snapshot and refresh state from it. Note that we need to use the reference sequence number
458
- // of the fetched snapshot and not the "summaryRefSeq" that was passed in.
459
- const { snapshotTree, snapshotRefSeq: fetchedSnapshotRefSeq } =
460
- await fetchLatestSnapshot();
461
-
462
- // Possible re-entrancy. We may have updated latest summary state while fetching the snapshot. If the fetched
463
- // snapshot is older than the latest tracked summary, ignore it.
464
- if (this.referenceSequenceNumber >= fetchedSnapshotRefSeq) {
465
- eventProps.latestSummaryUpdated = false;
466
- event.end(eventProps);
467
- return { latestSummaryUpdated: false };
409
+ const maybeSummaryNode = this.pendingSummaries.get(proposalHandle);
410
+ if (maybeSummaryNode !== undefined) {
411
+ this.refreshLatestSummaryFromPending(
412
+ proposalHandle,
413
+ maybeSummaryNode.referenceSequenceNumber,
414
+ );
415
+ isSummaryTracked = true;
468
416
  }
469
-
470
- await this.refreshLatestSummaryFromSnapshot(
471
- fetchedSnapshotRefSeq,
472
- snapshotTree,
473
- undefined,
474
- EscapedPath.create(""),
475
- correlatedSummaryLogger,
476
- readAndParseBlob,
477
- );
478
-
479
- eventProps.latestSummaryUpdated = true;
480
- eventProps.wasSummaryTracked = false;
481
- eventProps.summaryRefSeq = fetchedSnapshotRefSeq;
482
- event.end(eventProps);
483
- return {
484
- latestSummaryUpdated: true,
485
- wasSummaryTracked: false,
486
- snapshotTree,
487
- summaryRefSeq: fetchedSnapshotRefSeq,
488
- };
417
+ event.end({ ...eventProps, isSummaryNewer, pendingSummaryFound: isSummaryTracked });
418
+ return { isSummaryTracked, isSummaryNewer };
489
419
  },
490
420
  { start: true, end: true, cancel: "error" },
491
421
  );
@@ -527,59 +457,6 @@ export class SummarizerNode implements IRootSummarizerNode {
527
457
  }
528
458
  }
529
459
 
530
- protected async refreshLatestSummaryFromSnapshot(
531
- referenceSequenceNumber: number,
532
- snapshotTree: ISnapshotTree,
533
- basePath: EscapedPath | undefined,
534
- localPath: EscapedPath,
535
- correlatedSummaryLogger: ITelemetryLoggerExt,
536
- readAndParseBlob: ReadAndParseBlob,
537
- ): Promise<void> {
538
- // Possible re-entrancy. If we have already seen a summary later than this one, ignore it.
539
- if (this.referenceSequenceNumber >= referenceSequenceNumber) {
540
- return;
541
- }
542
-
543
- this.refreshLatestSummaryCore(referenceSequenceNumber);
544
-
545
- this._latestSummary = new SummaryNode({
546
- referenceSequenceNumber,
547
- basePath,
548
- localPath,
549
- });
550
-
551
- const pathParts: string[] = [];
552
- const { childrenTree, childrenPathPart } = parseSummaryForSubtrees(snapshotTree);
553
- if (childrenPathPart !== undefined) {
554
- pathParts.push(childrenPathPart);
555
- }
556
-
557
- if (pathParts.length > 0) {
558
- this._latestSummary.additionalPath = EscapedPath.createAndConcat(pathParts);
559
- }
560
-
561
- // Propagate update to all child nodes
562
- const pathForChildren = this._latestSummary.fullPathForChildren;
563
- await Promise.all(
564
- Array.from(this.children)
565
- .filter(([id]) => {
566
- // Assuming subtrees missing from snapshot are newer than the snapshot,
567
- // but might be nice to assert this using earliest seq for node.
568
- return childrenTree.trees[id] !== undefined;
569
- })
570
- .map(async ([id, child]) => {
571
- return child.refreshLatestSummaryFromSnapshot(
572
- referenceSequenceNumber,
573
- childrenTree.trees[id],
574
- pathForChildren,
575
- EscapedPath.create(id),
576
- correlatedSummaryLogger,
577
- readAndParseBlob,
578
- );
579
- }),
580
- );
581
- }
582
-
583
460
  private refreshLatestSummaryCore(referenceSequenceNumber: number): void {
584
461
  for (const [key, value] of this.pendingSummaries) {
585
462
  if (value.referenceSequenceNumber < referenceSequenceNumber) {
@@ -809,10 +686,9 @@ export class SummarizerNode implements IRootSummarizerNode {
809
686
  const error = new LoggingError(eventProps.eventName, {
810
687
  ...eventProps,
811
688
  referenceSequenceNumber: this.wipReferenceSequenceNumber,
812
- id: {
813
- tag: TelemetryDataTag.CodeArtifact,
814
- value: this.telemetryNodeId,
815
- },
689
+ ...tagCodeArtifacts({
690
+ id: this.telemetryNodeId,
691
+ }),
816
692
  });
817
693
  this.logger.sendErrorEvent(eventProps, error);
818
694
  throw error;
@@ -6,40 +6,12 @@
6
6
  import { ITelemetryLoggerExt, TelemetryDataTag } from "@fluidframework/telemetry-utils";
7
7
  import { ISnapshotTree, ISummaryTree, SummaryObject } from "@fluidframework/protocol-definitions";
8
8
  import { channelsTreeName, ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
9
- import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
10
9
 
11
- /**
12
- * Return type of refreshSummaryAck function. There can be three different scenarios based on the passed params:
13
- *
14
- * 1. The latest summary was not updated.
15
- *
16
- * 2. The latest summary was updated and the summary corresponding to the params was tracked by this client.
17
- *
18
- * 3. The latest summary was updated but the summary corresponding to the params was not tracked. In this case, the
19
- * latest snapshot is fetched and the latest summary state is updated based on it.
20
- */
21
- export type RefreshSummaryResult =
22
- | {
23
- latestSummaryUpdated: false;
24
- }
25
- | {
26
- latestSummaryUpdated: true;
27
- wasSummaryTracked: true;
28
- summaryRefSeq: number;
29
- }
30
- | {
31
- latestSummaryUpdated: true;
32
- wasSummaryTracked: false;
33
- snapshotTree: ISnapshotTree;
34
- summaryRefSeq: number;
35
- };
36
-
37
- /**
38
- * Result of snapshot fetch during refreshing latest summary state.
39
- */
40
- export interface IFetchSnapshotResult {
41
- snapshotTree: ISnapshotTree;
42
- snapshotRefSeq: number;
10
+ export interface IRefreshSummaryResult {
11
+ /** Tells whether this summary is tracked by this client. */
12
+ isSummaryTracked: boolean;
13
+ /** Tells whether this summary is newer than the latest one tracked by this client. */
14
+ isSummaryNewer: boolean;
43
15
  }
44
16
 
45
17
  /**
@@ -70,12 +42,9 @@ export interface ISummarizerNodeRootContract {
70
42
  completeSummary(proposalHandle: string, validate: boolean): void;
71
43
  clearSummary(): void;
72
44
  refreshLatestSummary(
73
- proposalHandle: string | undefined,
45
+ proposalHandle: string,
74
46
  summaryRefSeq: number,
75
- fetchLatestSnapshot: () => Promise<IFetchSnapshotResult>,
76
- readAndParseBlob: ReadAndParseBlob,
77
- correlatedSummaryLogger: ITelemetryLoggerExt,
78
- ): Promise<RefreshSummaryResult>;
47
+ ): Promise<IRefreshSummaryResult>;
79
48
  }
80
49
 
81
50
  /** Path for nodes in a tree with escaped special characters */