@fluidframework/container-runtime 2.0.0-dev-rc.3.0.0.250606 → 2.0.0-dev-rc.3.0.0.254274

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 (486) hide show
  1. package/api-report/container-runtime.api.md +35 -34
  2. package/dist/batchTracker.d.ts.map +1 -1
  3. package/dist/batchTracker.js +4 -4
  4. package/dist/batchTracker.js.map +1 -1
  5. package/dist/blobManager.d.ts +31 -23
  6. package/dist/blobManager.d.ts.map +1 -1
  7. package/dist/blobManager.js +81 -99
  8. package/dist/blobManager.js.map +1 -1
  9. package/dist/channelCollection.d.ts +4 -2
  10. package/dist/channelCollection.d.ts.map +1 -1
  11. package/dist/channelCollection.js +75 -72
  12. package/dist/channelCollection.js.map +1 -1
  13. package/dist/connectionTelemetry.d.ts +1 -1
  14. package/dist/connectionTelemetry.d.ts.map +1 -1
  15. package/dist/connectionTelemetry.js +16 -16
  16. package/dist/connectionTelemetry.js.map +1 -1
  17. package/dist/container-runtime-alpha.d.ts +64 -36
  18. package/dist/container-runtime-beta.d.ts +28 -28
  19. package/dist/container-runtime-public.d.ts +28 -28
  20. package/dist/container-runtime-untrimmed.d.ts +68 -39
  21. package/dist/containerHandleContext.d.ts.map +1 -1
  22. package/dist/containerHandleContext.js +2 -2
  23. package/dist/containerHandleContext.js.map +1 -1
  24. package/dist/containerRuntime.d.ts +12 -8
  25. package/dist/containerRuntime.d.ts.map +1 -1
  26. package/dist/containerRuntime.js +197 -162
  27. package/dist/containerRuntime.js.map +1 -1
  28. package/dist/dataStore.d.ts +1 -1
  29. package/dist/dataStore.d.ts.map +1 -1
  30. package/dist/dataStore.js +7 -7
  31. package/dist/dataStore.js.map +1 -1
  32. package/dist/dataStoreContext.d.ts +9 -9
  33. package/dist/dataStoreContext.d.ts.map +1 -1
  34. package/dist/dataStoreContext.js +72 -62
  35. package/dist/dataStoreContext.js.map +1 -1
  36. package/dist/dataStoreContexts.d.ts.map +1 -1
  37. package/dist/dataStoreContexts.js +11 -11
  38. package/dist/dataStoreContexts.js.map +1 -1
  39. package/dist/dataStoreRegistry.d.ts +1 -1
  40. package/dist/dataStoreRegistry.d.ts.map +1 -1
  41. package/dist/dataStoreRegistry.js +2 -2
  42. package/dist/dataStoreRegistry.js.map +1 -1
  43. package/dist/deltaManagerSummarizerProxy.d.ts +1 -1
  44. package/dist/deltaManagerSummarizerProxy.d.ts.map +1 -1
  45. package/dist/deltaManagerSummarizerProxy.js.map +1 -1
  46. package/dist/deltaScheduler.d.ts.map +1 -1
  47. package/dist/deltaScheduler.js +6 -6
  48. package/dist/deltaScheduler.js.map +1 -1
  49. package/dist/error.d.ts +1 -1
  50. package/dist/error.d.ts.map +1 -1
  51. package/dist/error.js +4 -4
  52. package/dist/error.js.map +1 -1
  53. package/dist/gc/garbageCollection.d.ts +2 -1
  54. package/dist/gc/garbageCollection.d.ts.map +1 -1
  55. package/dist/gc/garbageCollection.js +20 -20
  56. package/dist/gc/garbageCollection.js.map +1 -1
  57. package/dist/gc/gcConfigs.d.ts +1 -1
  58. package/dist/gc/gcConfigs.d.ts.map +1 -1
  59. package/dist/gc/gcConfigs.js +4 -5
  60. package/dist/gc/gcConfigs.js.map +1 -1
  61. package/dist/gc/gcDefinitions.d.ts +3 -2
  62. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  63. package/dist/gc/gcDefinitions.js.map +1 -1
  64. package/dist/gc/gcHelpers.d.ts +5 -1
  65. package/dist/gc/gcHelpers.d.ts.map +1 -1
  66. package/dist/gc/gcHelpers.js +21 -12
  67. package/dist/gc/gcHelpers.js.map +1 -1
  68. package/dist/gc/gcSummaryStateTracker.d.ts +1 -1
  69. package/dist/gc/gcSummaryStateTracker.d.ts.map +1 -1
  70. package/dist/gc/gcSummaryStateTracker.js +11 -11
  71. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  72. package/dist/gc/gcTelemetry.d.ts +2 -1
  73. package/dist/gc/gcTelemetry.d.ts.map +1 -1
  74. package/dist/gc/gcTelemetry.js +11 -9
  75. package/dist/gc/gcTelemetry.js.map +1 -1
  76. package/dist/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  77. package/dist/gc/gcUnreferencedStateTracker.js +6 -6
  78. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  79. package/dist/gc/index.d.ts +1 -1
  80. package/dist/gc/index.d.ts.map +1 -1
  81. package/dist/gc/index.js +2 -1
  82. package/dist/gc/index.js.map +1 -1
  83. package/dist/messageTypes.d.ts +2 -2
  84. package/dist/messageTypes.d.ts.map +1 -1
  85. package/dist/messageTypes.js.map +1 -1
  86. package/dist/opLifecycle/batchManager.d.ts.map +1 -1
  87. package/dist/opLifecycle/batchManager.js.map +1 -1
  88. package/dist/opLifecycle/definitions.d.ts +1 -1
  89. package/dist/opLifecycle/definitions.d.ts.map +1 -1
  90. package/dist/opLifecycle/definitions.js.map +1 -1
  91. package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
  92. package/dist/opLifecycle/opCompressor.js +5 -5
  93. package/dist/opLifecycle/opCompressor.js.map +1 -1
  94. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  95. package/dist/opLifecycle/opDecompressor.js +12 -12
  96. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  97. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  98. package/dist/opLifecycle/opGroupingManager.js +7 -7
  99. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  100. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  101. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  102. package/dist/opLifecycle/opSplitter.js +17 -17
  103. package/dist/opLifecycle/opSplitter.js.map +1 -1
  104. package/dist/opLifecycle/outbox.d.ts +2 -1
  105. package/dist/opLifecycle/outbox.d.ts.map +1 -1
  106. package/dist/opLifecycle/outbox.js +13 -13
  107. package/dist/opLifecycle/outbox.js.map +1 -1
  108. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  109. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  110. package/dist/packageVersion.d.ts +1 -1
  111. package/dist/packageVersion.js +1 -1
  112. package/dist/packageVersion.js.map +1 -1
  113. package/dist/pendingStateManager.d.ts.map +1 -1
  114. package/dist/pendingStateManager.js +18 -18
  115. package/dist/pendingStateManager.js.map +1 -1
  116. package/dist/scheduleManager.d.ts.map +1 -1
  117. package/dist/scheduleManager.js +24 -24
  118. package/dist/scheduleManager.js.map +1 -1
  119. package/dist/storageServiceWithAttachBlobs.d.ts +2 -2
  120. package/dist/storageServiceWithAttachBlobs.d.ts.map +1 -1
  121. package/dist/storageServiceWithAttachBlobs.js +2 -2
  122. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  123. package/dist/summary/documentSchema.d.ts +37 -6
  124. package/dist/summary/documentSchema.d.ts.map +1 -1
  125. package/dist/summary/documentSchema.js +58 -21
  126. package/dist/summary/documentSchema.js.map +1 -1
  127. package/dist/summary/orderedClientElection.d.ts.map +1 -1
  128. package/dist/summary/orderedClientElection.js +7 -7
  129. package/dist/summary/orderedClientElection.js.map +1 -1
  130. package/dist/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  131. package/dist/summary/runWhileConnectedCoordinator.js +3 -3
  132. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  133. package/dist/summary/runningSummarizer.d.ts +1 -1
  134. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  135. package/dist/summary/runningSummarizer.js +16 -16
  136. package/dist/summary/runningSummarizer.js.map +1 -1
  137. package/dist/summary/summarizer.d.ts +2 -1
  138. package/dist/summary/summarizer.d.ts.map +1 -1
  139. package/dist/summary/summarizer.js +12 -12
  140. package/dist/summary/summarizer.js.map +1 -1
  141. package/dist/summary/summarizerClientElection.d.ts.map +1 -1
  142. package/dist/summary/summarizerClientElection.js.map +1 -1
  143. package/dist/summary/summarizerHeuristics.d.ts.map +1 -1
  144. package/dist/summary/summarizerHeuristics.js +2 -2
  145. package/dist/summary/summarizerHeuristics.js.map +1 -1
  146. package/dist/summary/summarizerNode/summarizerNode.d.ts +2 -1
  147. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  148. package/dist/summary/summarizerNode/summarizerNode.js +28 -28
  149. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  150. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  151. package/dist/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  152. package/dist/summary/summarizerNode/summarizerNodeUtils.js +3 -3
  153. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  154. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
  155. package/dist/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  156. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +14 -14
  157. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  158. package/dist/summary/summarizerTypes.d.ts +4 -2
  159. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  160. package/dist/summary/summarizerTypes.js.map +1 -1
  161. package/dist/summary/summaryCollection.js +7 -7
  162. package/dist/summary/summaryCollection.js.map +1 -1
  163. package/dist/summary/summaryFormat.d.ts +1 -1
  164. package/dist/summary/summaryFormat.d.ts.map +1 -1
  165. package/dist/summary/summaryFormat.js +8 -8
  166. package/dist/summary/summaryFormat.js.map +1 -1
  167. package/dist/summary/summaryGenerator.d.ts +3 -2
  168. package/dist/summary/summaryGenerator.d.ts.map +1 -1
  169. package/dist/summary/summaryGenerator.js +16 -16
  170. package/dist/summary/summaryGenerator.js.map +1 -1
  171. package/dist/summary/summaryManager.d.ts.map +1 -1
  172. package/dist/summary/summaryManager.js +15 -14
  173. package/dist/summary/summaryManager.js.map +1 -1
  174. package/lib/batchTracker.d.ts.map +1 -1
  175. package/lib/batchTracker.js +2 -2
  176. package/lib/batchTracker.js.map +1 -1
  177. package/lib/blobManager.d.ts +31 -23
  178. package/lib/blobManager.d.ts.map +1 -1
  179. package/lib/blobManager.js +46 -64
  180. package/lib/blobManager.js.map +1 -1
  181. package/lib/channelCollection.d.ts +4 -2
  182. package/lib/channelCollection.d.ts.map +1 -1
  183. package/lib/channelCollection.js +10 -7
  184. package/lib/channelCollection.js.map +1 -1
  185. package/lib/connectionTelemetry.d.ts +1 -1
  186. package/lib/connectionTelemetry.d.ts.map +1 -1
  187. package/lib/connectionTelemetry.js +2 -2
  188. package/lib/connectionTelemetry.js.map +1 -1
  189. package/lib/container-runtime-alpha.d.ts +64 -36
  190. package/lib/container-runtime-beta.d.ts +28 -28
  191. package/lib/container-runtime-public.d.ts +28 -28
  192. package/lib/container-runtime-untrimmed.d.ts +68 -39
  193. package/lib/containerHandleContext.d.ts.map +1 -1
  194. package/lib/containerHandleContext.js +1 -1
  195. package/lib/containerHandleContext.js.map +1 -1
  196. package/lib/containerRuntime.d.ts +12 -8
  197. package/lib/containerRuntime.d.ts.map +1 -1
  198. package/lib/containerRuntime.js +76 -39
  199. package/lib/containerRuntime.js.map +1 -1
  200. package/lib/dataStore.d.ts +1 -1
  201. package/lib/dataStore.d.ts.map +1 -1
  202. package/lib/dataStore.js +2 -2
  203. package/lib/dataStore.js.map +1 -1
  204. package/lib/dataStoreContext.d.ts +9 -9
  205. package/lib/dataStoreContext.d.ts.map +1 -1
  206. package/lib/dataStoreContext.js +18 -8
  207. package/lib/dataStoreContext.js.map +1 -1
  208. package/lib/dataStoreContexts.d.ts.map +1 -1
  209. package/lib/dataStoreContexts.js +2 -2
  210. package/lib/dataStoreContexts.js.map +1 -1
  211. package/lib/dataStoreRegistry.d.ts +1 -1
  212. package/lib/dataStoreRegistry.d.ts.map +1 -1
  213. package/lib/dataStoreRegistry.js +1 -1
  214. package/lib/dataStoreRegistry.js.map +1 -1
  215. package/lib/deltaManagerSummarizerProxy.d.ts +1 -1
  216. package/lib/deltaManagerSummarizerProxy.d.ts.map +1 -1
  217. package/lib/deltaManagerSummarizerProxy.js.map +1 -1
  218. package/lib/deltaScheduler.d.ts.map +1 -1
  219. package/lib/deltaScheduler.js +1 -1
  220. package/lib/deltaScheduler.js.map +1 -1
  221. package/lib/error.d.ts +1 -1
  222. package/lib/error.d.ts.map +1 -1
  223. package/lib/error.js +2 -2
  224. package/lib/error.js.map +1 -1
  225. package/lib/gc/garbageCollection.d.ts +2 -1
  226. package/lib/gc/garbageCollection.d.ts.map +1 -1
  227. package/lib/gc/garbageCollection.js +4 -4
  228. package/lib/gc/garbageCollection.js.map +1 -1
  229. package/lib/gc/gcConfigs.d.ts +1 -1
  230. package/lib/gc/gcConfigs.d.ts.map +1 -1
  231. package/lib/gc/gcConfigs.js +4 -5
  232. package/lib/gc/gcConfigs.js.map +1 -1
  233. package/lib/gc/gcDefinitions.d.ts +3 -2
  234. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  235. package/lib/gc/gcDefinitions.js.map +1 -1
  236. package/lib/gc/gcHelpers.d.ts +5 -1
  237. package/lib/gc/gcHelpers.d.ts.map +1 -1
  238. package/lib/gc/gcHelpers.js +10 -2
  239. package/lib/gc/gcHelpers.js.map +1 -1
  240. package/lib/gc/gcSummaryStateTracker.d.ts +1 -1
  241. package/lib/gc/gcSummaryStateTracker.d.ts.map +1 -1
  242. package/lib/gc/gcSummaryStateTracker.js +2 -2
  243. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  244. package/lib/gc/gcTelemetry.d.ts +2 -1
  245. package/lib/gc/gcTelemetry.d.ts.map +1 -1
  246. package/lib/gc/gcTelemetry.js +3 -1
  247. package/lib/gc/gcTelemetry.js.map +1 -1
  248. package/lib/gc/gcUnreferencedStateTracker.d.ts.map +1 -1
  249. package/lib/gc/gcUnreferencedStateTracker.js +2 -2
  250. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  251. package/lib/gc/index.d.ts +1 -1
  252. package/lib/gc/index.d.ts.map +1 -1
  253. package/lib/gc/index.js +1 -1
  254. package/lib/gc/index.js.map +1 -1
  255. package/lib/messageTypes.d.ts +2 -2
  256. package/lib/messageTypes.d.ts.map +1 -1
  257. package/lib/messageTypes.js.map +1 -1
  258. package/lib/opLifecycle/batchManager.d.ts.map +1 -1
  259. package/lib/opLifecycle/batchManager.js.map +1 -1
  260. package/lib/opLifecycle/definitions.d.ts +1 -1
  261. package/lib/opLifecycle/definitions.d.ts.map +1 -1
  262. package/lib/opLifecycle/definitions.js.map +1 -1
  263. package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
  264. package/lib/opLifecycle/opCompressor.js +2 -2
  265. package/lib/opLifecycle/opCompressor.js.map +1 -1
  266. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  267. package/lib/opLifecycle/opDecompressor.js +2 -2
  268. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  269. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  270. package/lib/opLifecycle/opGroupingManager.js +2 -2
  271. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  272. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  273. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  274. package/lib/opLifecycle/opSplitter.js +2 -2
  275. package/lib/opLifecycle/opSplitter.js.map +1 -1
  276. package/lib/opLifecycle/outbox.d.ts +2 -1
  277. package/lib/opLifecycle/outbox.d.ts.map +1 -1
  278. package/lib/opLifecycle/outbox.js +2 -2
  279. package/lib/opLifecycle/outbox.js.map +1 -1
  280. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  281. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  282. package/lib/packageVersion.d.ts +1 -1
  283. package/lib/packageVersion.js +1 -1
  284. package/lib/packageVersion.js.map +1 -1
  285. package/lib/pendingStateManager.d.ts.map +1 -1
  286. package/lib/pendingStateManager.js +2 -2
  287. package/lib/pendingStateManager.js.map +1 -1
  288. package/lib/scheduleManager.d.ts.map +1 -1
  289. package/lib/scheduleManager.js +3 -3
  290. package/lib/scheduleManager.js.map +1 -1
  291. package/lib/storageServiceWithAttachBlobs.d.ts +2 -2
  292. package/lib/storageServiceWithAttachBlobs.d.ts.map +1 -1
  293. package/lib/storageServiceWithAttachBlobs.js +1 -1
  294. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  295. package/lib/summary/documentSchema.d.ts +37 -6
  296. package/lib/summary/documentSchema.d.ts.map +1 -1
  297. package/lib/summary/documentSchema.js +48 -11
  298. package/lib/summary/documentSchema.js.map +1 -1
  299. package/lib/summary/orderedClientElection.d.ts.map +1 -1
  300. package/lib/summary/orderedClientElection.js +2 -2
  301. package/lib/summary/orderedClientElection.js.map +1 -1
  302. package/lib/summary/runWhileConnectedCoordinator.d.ts.map +1 -1
  303. package/lib/summary/runWhileConnectedCoordinator.js +1 -1
  304. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  305. package/lib/summary/runningSummarizer.d.ts +1 -1
  306. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  307. package/lib/summary/runningSummarizer.js +2 -2
  308. package/lib/summary/runningSummarizer.js.map +1 -1
  309. package/lib/summary/summarizer.d.ts +2 -1
  310. package/lib/summary/summarizer.d.ts.map +1 -1
  311. package/lib/summary/summarizer.js +2 -2
  312. package/lib/summary/summarizer.js.map +1 -1
  313. package/lib/summary/summarizerClientElection.d.ts.map +1 -1
  314. package/lib/summary/summarizerClientElection.js.map +1 -1
  315. package/lib/summary/summarizerHeuristics.d.ts.map +1 -1
  316. package/lib/summary/summarizerHeuristics.js +1 -1
  317. package/lib/summary/summarizerHeuristics.js.map +1 -1
  318. package/lib/summary/summarizerNode/summarizerNode.d.ts +2 -1
  319. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  320. package/lib/summary/summarizerNode/summarizerNode.js +4 -4
  321. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  322. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts +2 -1
  323. package/lib/summary/summarizerNode/summarizerNodeUtils.d.ts.map +1 -1
  324. package/lib/summary/summarizerNode/summarizerNodeUtils.js +1 -1
  325. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  326. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts +2 -1
  327. package/lib/summary/summarizerNode/summarizerNodeWithGc.d.ts.map +1 -1
  328. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +3 -3
  329. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  330. package/lib/summary/summarizerTypes.d.ts +4 -2
  331. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  332. package/lib/summary/summarizerTypes.js.map +1 -1
  333. package/lib/summary/summaryCollection.js +1 -1
  334. package/lib/summary/summaryCollection.js.map +1 -1
  335. package/lib/summary/summaryFormat.d.ts +1 -1
  336. package/lib/summary/summaryFormat.d.ts.map +1 -1
  337. package/lib/summary/summaryFormat.js +3 -3
  338. package/lib/summary/summaryFormat.js.map +1 -1
  339. package/lib/summary/summaryGenerator.d.ts +3 -2
  340. package/lib/summary/summaryGenerator.d.ts.map +1 -1
  341. package/lib/summary/summaryGenerator.js +3 -3
  342. package/lib/summary/summaryGenerator.js.map +1 -1
  343. package/lib/summary/summaryManager.d.ts.map +1 -1
  344. package/lib/summary/summaryManager.js +9 -8
  345. package/lib/summary/summaryManager.js.map +1 -1
  346. package/lib/tsdoc-metadata.json +11 -0
  347. package/package.json +25 -37
  348. package/src/batchTracker.ts +3 -2
  349. package/src/blobManager.ts +87 -56
  350. package/src/channelCollection.ts +19 -12
  351. package/src/connectionTelemetry.ts +4 -4
  352. package/src/containerHandleContext.ts +2 -1
  353. package/src/containerRuntime.ts +115 -70
  354. package/src/dataStore.ts +5 -3
  355. package/src/dataStoreContext.ts +30 -15
  356. package/src/dataStoreContexts.ts +4 -2
  357. package/src/dataStoreRegistry.ts +2 -2
  358. package/src/deltaManagerSummarizerProxy.ts +1 -1
  359. package/src/deltaScheduler.ts +2 -1
  360. package/src/error.ts +2 -2
  361. package/src/gc/garbageCollection.ts +8 -7
  362. package/src/gc/gcConfigs.ts +5 -8
  363. package/src/gc/gcDefinitions.ts +4 -4
  364. package/src/gc/gcHelpers.ts +21 -4
  365. package/src/gc/gcSummaryStateTracker.ts +5 -3
  366. package/src/gc/gcTelemetry.ts +7 -1
  367. package/src/gc/gcUnreferencedStateTracker.ts +3 -2
  368. package/src/gc/index.ts +1 -0
  369. package/src/messageTypes.ts +3 -2
  370. package/src/opLifecycle/batchManager.ts +1 -0
  371. package/src/opLifecycle/definitions.ts +2 -1
  372. package/src/opLifecycle/opCompressor.ts +4 -2
  373. package/src/opLifecycle/opDecompressor.ts +3 -2
  374. package/src/opLifecycle/opGroupingManager.ts +3 -2
  375. package/src/opLifecycle/opSplitter.ts +5 -3
  376. package/src/opLifecycle/outbox.ts +6 -3
  377. package/src/opLifecycle/remoteMessageProcessor.ts +2 -0
  378. package/src/packageVersion.ts +1 -1
  379. package/src/pendingStateManager.ts +4 -4
  380. package/src/scheduleManager.ts +5 -4
  381. package/src/storageServiceWithAttachBlobs.ts +2 -2
  382. package/src/summary/documentSchema.ts +71 -12
  383. package/src/summary/orderedClientElection.ts +4 -6
  384. package/src/summary/runWhileConnectedCoordinator.ts +2 -1
  385. package/src/summary/runningSummarizer.ts +4 -2
  386. package/src/summary/summarizer.ts +5 -3
  387. package/src/summary/summarizerClientElection.ts +1 -0
  388. package/src/summary/summarizerHeuristics.ts +3 -1
  389. package/src/summary/summarizerNode/summarizerNode.ts +10 -8
  390. package/src/summary/summarizerNode/summarizerNodeUtils.ts +3 -2
  391. package/src/summary/summarizerNode/summarizerNodeWithGc.ts +14 -6
  392. package/src/summary/summarizerTypes.ts +6 -2
  393. package/src/summary/summaryCollection.ts +1 -1
  394. package/src/summary/summaryFormat.ts +7 -8
  395. package/src/summary/summaryGenerator.ts +5 -8
  396. package/src/summary/summaryManager.ts +14 -11
  397. package/lib/test/batchTracker.spec.js +0 -88
  398. package/lib/test/batchTracker.spec.js.map +0 -1
  399. package/lib/test/blobManager.spec.js +0 -835
  400. package/lib/test/blobManager.spec.js.map +0 -1
  401. package/lib/test/channelCollection.spec.js +0 -138
  402. package/lib/test/channelCollection.spec.js.map +0 -1
  403. package/lib/test/containerRuntime.spec.js +0 -1750
  404. package/lib/test/containerRuntime.spec.js.map +0 -1
  405. package/lib/test/dataStoreContext.spec.js +0 -771
  406. package/lib/test/dataStoreContext.spec.js.map +0 -1
  407. package/lib/test/dataStoreCreation.spec.js +0 -303
  408. package/lib/test/dataStoreCreation.spec.js.map +0 -1
  409. package/lib/test/dataStoreRegistry.spec.js +0 -26
  410. package/lib/test/dataStoreRegistry.spec.js.map +0 -1
  411. package/lib/test/documentSchema.spec.js +0 -282
  412. package/lib/test/documentSchema.spec.js.map +0 -1
  413. package/lib/test/fuzz/fuzzUtils.js +0 -70
  414. package/lib/test/fuzz/fuzzUtils.js.map +0 -1
  415. package/lib/test/fuzz/summarizer.fuzz.spec.js +0 -33
  416. package/lib/test/fuzz/summarizer.fuzz.spec.js.map +0 -1
  417. package/lib/test/fuzz/summarizerFuzzMocks.js +0 -180
  418. package/lib/test/fuzz/summarizerFuzzMocks.js.map +0 -1
  419. package/lib/test/fuzz/summarizerFuzzSuite.js +0 -109
  420. package/lib/test/fuzz/summarizerFuzzSuite.js.map +0 -1
  421. package/lib/test/gc/garbageCollection.spec.js +0 -1464
  422. package/lib/test/gc/garbageCollection.spec.js.map +0 -1
  423. package/lib/test/gc/gcConfigs.spec.js +0 -689
  424. package/lib/test/gc/gcConfigs.spec.js.map +0 -1
  425. package/lib/test/gc/gcHelpers.spec.js +0 -110
  426. package/lib/test/gc/gcHelpers.spec.js.map +0 -1
  427. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js +0 -68
  428. package/lib/test/gc/gcReferenceGraphAlgorithm.spec.js.map +0 -1
  429. package/lib/test/gc/gcStats.spec.js +0 -390
  430. package/lib/test/gc/gcStats.spec.js.map +0 -1
  431. package/lib/test/gc/gcSummaryStateTracker.spec.js +0 -228
  432. package/lib/test/gc/gcSummaryStateTracker.spec.js.map +0 -1
  433. package/lib/test/gc/gcTelemetry.spec.js +0 -530
  434. package/lib/test/gc/gcTelemetry.spec.js.map +0 -1
  435. package/lib/test/gc/gcUnitTestHelpers.js +0 -29
  436. package/lib/test/gc/gcUnitTestHelpers.js.map +0 -1
  437. package/lib/test/gc/gcUnreferencedStateTracker.spec.js +0 -192
  438. package/lib/test/gc/gcUnreferencedStateTracker.spec.js.map +0 -1
  439. package/lib/test/getPendingBlobs.spec.js +0 -193
  440. package/lib/test/getPendingBlobs.spec.js.map +0 -1
  441. package/lib/test/hardwareStats.spec.js +0 -93
  442. package/lib/test/hardwareStats.spec.js.map +0 -1
  443. package/lib/test/index.js +0 -6
  444. package/lib/test/index.js.map +0 -1
  445. package/lib/test/opLifecycle/OpGroupingManager.spec.js +0 -202
  446. package/lib/test/opLifecycle/OpGroupingManager.spec.js.map +0 -1
  447. package/lib/test/opLifecycle/batchManager.spec.js +0 -189
  448. package/lib/test/opLifecycle/batchManager.spec.js.map +0 -1
  449. package/lib/test/opLifecycle/opCompressor.spec.js +0 -73
  450. package/lib/test/opLifecycle/opCompressor.spec.js.map +0 -1
  451. package/lib/test/opLifecycle/opDecompressor.spec.js +0 -223
  452. package/lib/test/opLifecycle/opDecompressor.spec.js.map +0 -1
  453. package/lib/test/opLifecycle/opSplitter.spec.js +0 -287
  454. package/lib/test/opLifecycle/opSplitter.spec.js.map +0 -1
  455. package/lib/test/opLifecycle/outbox.spec.js +0 -783
  456. package/lib/test/opLifecycle/outbox.spec.js.map +0 -1
  457. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js +0 -220
  458. package/lib/test/opLifecycle/remoteMessageProcessor.spec.js.map +0 -1
  459. package/lib/test/pendingStateManager.spec.js +0 -329
  460. package/lib/test/pendingStateManager.spec.js.map +0 -1
  461. package/lib/test/scheduleManager.spec.js +0 -270
  462. package/lib/test/scheduleManager.spec.js.map +0 -1
  463. package/lib/test/summarizerNode.spec.js +0 -326
  464. package/lib/test/summarizerNode.spec.js.map +0 -1
  465. package/lib/test/summarizerNodeWithGc.spec.js +0 -318
  466. package/lib/test/summarizerNodeWithGc.spec.js.map +0 -1
  467. package/lib/test/summary/orderedClientElection.spec.js +0 -535
  468. package/lib/test/summary/orderedClientElection.spec.js.map +0 -1
  469. package/lib/test/summary/runningSummarizer.spec.js +0 -1349
  470. package/lib/test/summary/runningSummarizer.spec.js.map +0 -1
  471. package/lib/test/summary/summarizer.spec.js +0 -29
  472. package/lib/test/summary/summarizer.spec.js.map +0 -1
  473. package/lib/test/summary/summarizerClientElection.spec.js +0 -436
  474. package/lib/test/summary/summarizerClientElection.spec.js.map +0 -1
  475. package/lib/test/summary/summarizerHeuristics.spec.js +0 -289
  476. package/lib/test/summary/summarizerHeuristics.spec.js.map +0 -1
  477. package/lib/test/summary/summaryCollection.spec.js +0 -200
  478. package/lib/test/summary/summaryCollection.spec.js.map +0 -1
  479. package/lib/test/summary/summaryManager.spec.js +0 -430
  480. package/lib/test/summary/summaryManager.spec.js.map +0 -1
  481. package/lib/test/summary/testQuorumClients.js +0 -34
  482. package/lib/test/summary/testQuorumClients.js.map +0 -1
  483. package/lib/test/throttler.spec.js +0 -175
  484. package/lib/test/throttler.spec.js.map +0 -1
  485. package/lib/test/types/validateContainerRuntimePrevious.generated.js +0 -182
  486. package/lib/test/types/validateContainerRuntimePrevious.generated.js.map +0 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-runtime",
3
- "version": "2.0.0-dev-rc.3.0.0.250606",
3
+ "version": "2.0.0-dev-rc.3.0.0.254274",
4
4
  "description": "Fluid container runtime",
5
5
  "homepage": "https://fluidframework.com",
6
6
  "repository": {
@@ -14,16 +14,6 @@
14
14
  "type": "module",
15
15
  "exports": {
16
16
  ".": {
17
- "import": {
18
- "types": "./lib/index.d.ts",
19
- "default": "./lib/index.js"
20
- },
21
- "require": {
22
- "types": "./dist/index.d.ts",
23
- "default": "./dist/index.js"
24
- }
25
- },
26
- "./public": {
27
17
  "import": {
28
18
  "types": "./lib/container-runtime-public.d.ts",
29
19
  "default": "./lib/index.js"
@@ -53,7 +43,7 @@
53
43
  "default": "./dist/index.js"
54
44
  }
55
45
  },
56
- "./test/containerRuntime": {
46
+ "./internal/test/containerRuntime": {
57
47
  "import": {
58
48
  "types": "./lib/containerRuntime.d.ts",
59
49
  "default": "./lib/containerRuntime.js"
@@ -63,7 +53,7 @@
63
53
  "default": "./dist/containerRuntime.js"
64
54
  }
65
55
  },
66
- "./test/deltaScheduler": {
56
+ "./internal/test/deltaScheduler": {
67
57
  "import": {
68
58
  "types": "./lib/deltaScheduler.d.ts",
69
59
  "default": "./lib/deltaScheduler.js"
@@ -73,7 +63,7 @@
73
63
  "default": "./dist/deltaScheduler.js"
74
64
  }
75
65
  },
76
- "./test/scheduleManager": {
66
+ "./internal/test/scheduleManager": {
77
67
  "import": {
78
68
  "types": "./lib/scheduleManager.d.ts",
79
69
  "default": "./lib/scheduleManager.js"
@@ -83,7 +73,7 @@
83
73
  "default": "./dist/scheduleManager.js"
84
74
  }
85
75
  },
86
- "./test/blobManager": {
76
+ "./internal/test/blobManager": {
87
77
  "import": {
88
78
  "types": "./lib/blobManager.d.ts",
89
79
  "default": "./lib/blobManager.js"
@@ -93,7 +83,7 @@
93
83
  "default": "./dist/blobManager.js"
94
84
  }
95
85
  },
96
- "./test/summary": {
86
+ "./internal/test/summary": {
97
87
  "import": {
98
88
  "types": "./lib/summary/index.d.ts",
99
89
  "default": "./lib/summary/index.js"
@@ -103,7 +93,7 @@
103
93
  "default": "./dist/summary/index.js"
104
94
  }
105
95
  },
106
- "./test/gc": {
96
+ "./internal/test/gc": {
107
97
  "import": {
108
98
  "types": "./lib/gc/index.d.ts",
109
99
  "default": "./lib/gc/index.js"
@@ -115,7 +105,7 @@
115
105
  }
116
106
  },
117
107
  "main": "dist/index.js",
118
- "types": "dist/index.d.ts",
108
+ "types": "./dist/container-runtime-public.d.ts",
119
109
  "c8": {
120
110
  "all": true,
121
111
  "cache-dir": "nyc/.cache",
@@ -137,38 +127,38 @@
137
127
  "temp-directory": "nyc/.nyc_output"
138
128
  },
139
129
  "dependencies": {
140
- "@fluid-internal/client-utils": "2.0.0-dev-rc.3.0.0.250606",
130
+ "@fluid-internal/client-utils": "2.0.0-dev-rc.3.0.0.254274",
141
131
  "@fluidframework/common-definitions": "^1.1.0",
142
- "@fluidframework/container-definitions": "2.0.0-dev-rc.3.0.0.250606",
143
- "@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.3.0.0.250606",
144
- "@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.250606",
145
- "@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.250606",
146
- "@fluidframework/datastore": "2.0.0-dev-rc.3.0.0.250606",
147
- "@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.250606",
148
- "@fluidframework/driver-utils": "2.0.0-dev-rc.3.0.0.250606",
149
- "@fluidframework/id-compressor": "2.0.0-dev-rc.3.0.0.250606",
132
+ "@fluidframework/container-definitions": "2.0.0-dev-rc.3.0.0.254274",
133
+ "@fluidframework/container-runtime-definitions": "2.0.0-dev-rc.3.0.0.254274",
134
+ "@fluidframework/core-interfaces": "2.0.0-dev-rc.3.0.0.254274",
135
+ "@fluidframework/core-utils": "2.0.0-dev-rc.3.0.0.254274",
136
+ "@fluidframework/datastore": "2.0.0-dev-rc.3.0.0.254274",
137
+ "@fluidframework/driver-definitions": "2.0.0-dev-rc.3.0.0.254274",
138
+ "@fluidframework/driver-utils": "2.0.0-dev-rc.3.0.0.254274",
139
+ "@fluidframework/id-compressor": "2.0.0-dev-rc.3.0.0.254274",
150
140
  "@fluidframework/protocol-definitions": "^3.2.0",
151
- "@fluidframework/runtime-definitions": "2.0.0-dev-rc.3.0.0.250606",
152
- "@fluidframework/runtime-utils": "2.0.0-dev-rc.3.0.0.250606",
153
- "@fluidframework/telemetry-utils": "2.0.0-dev-rc.3.0.0.250606",
141
+ "@fluidframework/runtime-definitions": "2.0.0-dev-rc.3.0.0.254274",
142
+ "@fluidframework/runtime-utils": "2.0.0-dev-rc.3.0.0.254274",
143
+ "@fluidframework/telemetry-utils": "2.0.0-dev-rc.3.0.0.254274",
154
144
  "@tylerbu/sorted-btree-es6": "^1.8.0",
155
145
  "double-ended-queue": "^2.1.0-0",
156
146
  "lz4js": "^0.2.0",
157
147
  "uuid": "^9.0.0"
158
148
  },
159
149
  "devDependencies": {
160
- "@arethetypeswrong/cli": "^0.13.3",
150
+ "@arethetypeswrong/cli": "^0.15.2",
161
151
  "@biomejs/biome": "^1.6.2",
162
- "@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.250606",
163
- "@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.3.0.0.250606",
164
- "@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.3.0.0.250606",
152
+ "@fluid-internal/mocha-test-setup": "2.0.0-dev-rc.3.0.0.254274",
153
+ "@fluid-private/stochastic-test-utils": "2.0.0-dev-rc.3.0.0.254274",
154
+ "@fluid-private/test-pairwise-generator": "2.0.0-dev-rc.3.0.0.254274",
165
155
  "@fluid-tools/benchmark": "^0.48.0",
166
156
  "@fluid-tools/build-cli": "^0.34.0",
167
157
  "@fluidframework/build-common": "^2.0.3",
168
158
  "@fluidframework/build-tools": "^0.34.0",
169
159
  "@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-internal.8.0.0",
170
160
  "@fluidframework/eslint-config-fluid": "^5.1.0",
171
- "@fluidframework/test-runtime-utils": "2.0.0-dev-rc.3.0.0.250606",
161
+ "@fluidframework/test-runtime-utils": "2.0.0-dev-rc.3.0.0.254274",
172
162
  "@microsoft/api-extractor": "^7.42.3",
173
163
  "@types/double-ended-queue": "^2.1.0",
174
164
  "@types/mocha": "^9.1.1",
@@ -251,7 +241,6 @@
251
241
  "build:test:cjs": "fluid-tsc commonjs --project ./src/test/tsconfig.cjs.json",
252
242
  "build:test:esm": "tsc --project ./src/test/tsconfig.json",
253
243
  "check:are-the-types-wrong": "attw --pack . --entrypoints .",
254
- "check:biome": "biome check .",
255
244
  "check:prettier": "prettier --check . --cache --ignore-path ../../../.prettierignore",
256
245
  "check:release-tags": "api-extractor run --local --config ./api-extractor-lint.json",
257
246
  "ci:build:docs": "api-extractor run",
@@ -259,7 +248,6 @@
259
248
  "eslint": "eslint --format stylish src",
260
249
  "eslint:fix": "eslint --format stylish src --fix --fix-type problem,suggestion,layout",
261
250
  "format": "fluid-build --task format .",
262
- "format:biome": "biome check --apply .",
263
251
  "format:prettier": "prettier --write . --cache --ignore-path ../../../.prettierignore",
264
252
  "lint": "fluid-build . --task lint",
265
253
  "lint:fix": "fluid-build . --task eslint:fix --task format",
@@ -6,9 +6,10 @@
6
6
  import type { EventEmitter } from "@fluid-internal/client-utils";
7
7
  import { performance } from "@fluid-internal/client-utils";
8
8
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
9
- import { assert } from "@fluidframework/core-utils";
9
+ import { assert } from "@fluidframework/core-utils/internal";
10
10
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
11
- import { ITelemetryLoggerExt, createChildLogger } from "@fluidframework/telemetry-utils";
11
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
12
+ import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
12
13
 
13
14
  export class BatchTracker {
14
15
  private readonly logger: ITelemetryLoggerExt;
@@ -8,10 +8,11 @@ import { AttachState, ICriticalContainerError } from "@fluidframework/container-
8
8
  import {
9
9
  IContainerRuntime,
10
10
  IContainerRuntimeEvents,
11
- } from "@fluidframework/container-runtime-definitions";
11
+ } from "@fluidframework/container-runtime-definitions/internal";
12
12
  import { IFluidHandle, IFluidHandleContext } from "@fluidframework/core-interfaces";
13
- import { assert, Deferred } from "@fluidframework/core-utils";
14
- import { IDocumentStorageService } from "@fluidframework/driver-definitions";
13
+ import { assert, Deferred } from "@fluidframework/core-utils/internal";
14
+ import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
15
+ import { canRetryOnError, runWithRetry } from "@fluidframework/driver-utils/internal";
15
16
  import {
16
17
  ICreateBlobResponse,
17
18
  ISequencedDocumentMessage,
@@ -27,7 +28,7 @@ import {
27
28
  createResponseError,
28
29
  generateHandleContextPath,
29
30
  responseToException,
30
- } from "@fluidframework/runtime-utils";
31
+ } from "@fluidframework/runtime-utils/internal";
31
32
  import {
32
33
  GenericError,
33
34
  LoggingError,
@@ -35,10 +36,9 @@ import {
35
36
  PerformanceEvent,
36
37
  createChildMonitoringContext,
37
38
  wrapError,
38
- } from "@fluidframework/telemetry-utils";
39
+ } from "@fluidframework/telemetry-utils/internal";
39
40
  import { v4 as uuid } from "uuid";
40
41
 
41
- import { canRetryOnError, runWithRetry } from "@fluidframework/driver-utils";
42
42
  import { IBlobMetadata } from "./metadata.js";
43
43
 
44
44
  /**
@@ -103,7 +103,6 @@ type ICreateBlobResponseWithTTL = ICreateBlobResponse & Partial<Record<"minTTLIn
103
103
 
104
104
  interface PendingBlob {
105
105
  blob: ArrayBufferLike;
106
- uploading?: boolean;
107
106
  opsent?: boolean;
108
107
  storageId?: string;
109
108
  handleP: Deferred<BlobHandle>;
@@ -113,7 +112,7 @@ interface PendingBlob {
113
112
  attached?: boolean;
114
113
  acked?: boolean;
115
114
  abortSignal?: AbortSignal;
116
- pendingStashed?: boolean;
115
+ stashedUpload?: boolean;
117
116
  }
118
117
 
119
118
  export interface IPendingBlobs {
@@ -122,7 +121,6 @@ export interface IPendingBlobs {
122
121
  storageId?: string;
123
122
  uploadTime?: number;
124
123
  minTTLInSeconds?: number;
125
- attached?: boolean;
126
124
  acked?: boolean;
127
125
  };
128
126
  }
@@ -131,6 +129,16 @@ export interface IBlobManagerEvents {
131
129
  (event: "noPendingBlobs", listener: () => void);
132
130
  }
133
131
 
132
+ const stashedPendingBlobOverrides: Pick<
133
+ PendingBlob,
134
+ "stashedUpload" | "storageId" | "minTTLInSeconds" | "uploadTime"
135
+ > = {
136
+ stashedUpload: true,
137
+ storageId: undefined,
138
+ minTTLInSeconds: undefined,
139
+ uploadTime: undefined,
140
+ } as const;
141
+
134
142
  export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
135
143
  public static readonly basePath = "_blobs";
136
144
  private static readonly redirectTableBlobName = ".redirectTable";
@@ -168,10 +176,21 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
168
176
  private readonly sendBlobAttachOp: (localId: string, storageId?: string) => void;
169
177
  private stopAttaching: boolean = false;
170
178
 
171
- constructor(
172
- private readonly routeContext: IFluidHandleContext,
173
- snapshot: IBlobManagerLoadInfo,
174
- private readonly getStorage: () => IDocumentStorageService,
179
+ private readonly routeContext: IFluidHandleContext;
180
+ private readonly getStorage: () => IDocumentStorageService;
181
+ // Called when a blob node is requested. blobPath is the path of the blob's node in GC's graph.
182
+ // blobPath's format - `/<BlobManager.basePath>/<blobId>`.
183
+ private readonly blobRequested: (blobPath: string) => void;
184
+ // Called to check if a blob has been deleted by GC.
185
+ // blobPath's format - `/<BlobManager.basePath>/<blobId>`.
186
+ private readonly isBlobDeleted: (blobPath: string) => boolean;
187
+ private readonly runtime: IBlobManagerRuntime;
188
+ private readonly closeContainer: (error?: ICriticalContainerError) => void;
189
+
190
+ constructor(props: {
191
+ readonly routeContext: IFluidHandleContext;
192
+ snapshot: IBlobManagerLoadInfo;
193
+ readonly getStorage: () => IDocumentStorageService;
175
194
  /**
176
195
  * Submit a BlobAttach op. When a blob is uploaded, there is a short grace period before which the blob is
177
196
  * deleted. The BlobAttach op notifies the server that blob is in use. The server will then not delete the
@@ -182,18 +201,36 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
182
201
  * knowledge of which they cannot request the blob from storage. It's important that this op is sequenced
183
202
  * before any ops that reference the local ID, otherwise, an invalid handle could be added to the document.
184
203
  */
185
- sendBlobAttachOp: (localId: string, storageId?: string) => void,
204
+ sendBlobAttachOp: (localId: string, storageId?: string) => void;
186
205
  // Called when a blob node is requested. blobPath is the path of the blob's node in GC's graph.
187
206
  // blobPath's format - `/<BlobManager.basePath>/<blobId>`.
188
- private readonly blobRequested: (blobPath: string) => void,
207
+ readonly blobRequested: (blobPath: string) => void;
189
208
  // Called to check if a blob has been deleted by GC.
190
209
  // blobPath's format - `/<BlobManager.basePath>/<blobId>`.
191
- private readonly isBlobDeleted: (blobPath: string) => boolean,
192
- private readonly runtime: IBlobManagerRuntime,
193
- stashedBlobs: IPendingBlobs = {},
194
- private readonly closeContainer: (error?: ICriticalContainerError) => void,
195
- ) {
210
+ readonly isBlobDeleted: (blobPath: string) => boolean;
211
+ readonly runtime: IBlobManagerRuntime;
212
+ stashedBlobs: IPendingBlobs | undefined;
213
+ readonly closeContainer: (error?: ICriticalContainerError) => void;
214
+ }) {
196
215
  super();
216
+ const {
217
+ routeContext,
218
+ snapshot,
219
+ getStorage,
220
+ sendBlobAttachOp,
221
+ blobRequested,
222
+ isBlobDeleted,
223
+ runtime,
224
+ stashedBlobs,
225
+ closeContainer,
226
+ } = props;
227
+ this.routeContext = routeContext;
228
+ this.getStorage = getStorage;
229
+ this.blobRequested = blobRequested;
230
+ this.isBlobDeleted = isBlobDeleted;
231
+ this.runtime = runtime;
232
+ this.closeContainer = closeContainer;
233
+
197
234
  this.mc = createChildMonitoringContext({
198
235
  logger: this.runtime.logger,
199
236
  namespace: "BlobManager",
@@ -202,39 +239,34 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
202
239
  this.redirectTable = this.load(snapshot);
203
240
 
204
241
  // Begin uploading stashed blobs from previous container instance
205
- Object.entries(stashedBlobs).forEach(([localId, entry]) => {
242
+ Object.entries(stashedBlobs ?? {}).forEach(([localId, entry]) => {
243
+ const { acked, storageId, minTTLInSeconds, uploadTime } = entry;
206
244
  const blob = stringToBuffer(entry.blob, "base64");
207
- const attached = entry.attached;
208
- const acked = entry.acked;
209
- const storageId = entry.storageId; // entry.storageId = response.id
210
- if (entry.minTTLInSeconds && entry.uploadTime) {
211
- const timeLapseSinceLocalUpload = (Date.now() - entry.uploadTime) / 1000;
245
+ const pendingEntry: PendingBlob = {
246
+ blob,
247
+ opsent: true,
248
+ handleP: new Deferred(),
249
+ storageId,
250
+ uploadP: undefined,
251
+ uploadTime,
252
+ minTTLInSeconds,
253
+ attached: true,
254
+ acked,
255
+ };
256
+ this.pendingBlobs.set(localId, pendingEntry);
257
+
258
+ if (storageId !== undefined && minTTLInSeconds && uploadTime) {
259
+ const timeLapseSinceLocalUpload = (Date.now() - uploadTime) / 1000;
212
260
  // stashed entries with more than half-life in storage will not be reuploaded
213
- if (entry.minTTLInSeconds - timeLapseSinceLocalUpload > entry.minTTLInSeconds / 2) {
214
- this.pendingBlobs.set(localId, {
215
- blob,
216
- uploading: false,
217
- opsent: true,
218
- handleP: new Deferred(),
219
- storageId,
220
- uploadP: undefined,
221
- uploadTime: entry.uploadTime,
222
- minTTLInSeconds: entry.minTTLInSeconds,
223
- attached,
224
- acked,
225
- });
261
+ if (minTTLInSeconds - timeLapseSinceLocalUpload > minTTLInSeconds / 2) {
226
262
  return;
227
263
  }
228
264
  }
265
+
229
266
  this.pendingBlobs.set(localId, {
230
- blob,
231
- uploading: true,
232
- handleP: new Deferred(),
267
+ ...pendingEntry,
268
+ ...stashedPendingBlobOverrides,
233
269
  uploadP: this.uploadBlob(localId, blob),
234
- attached,
235
- acked,
236
- opsent: true,
237
- pendingStashed: true,
238
270
  });
239
271
  });
240
272
 
@@ -296,16 +328,19 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
296
328
  });
297
329
  }
298
330
 
299
- public hasPendingStashedBlobs(): boolean {
300
- return Array.from(this.pendingBlobs.values()).some((e) => e.pendingStashed === true);
331
+ public hasPendingStashedUploads(): boolean {
332
+ return Array.from(this.pendingBlobs.values()).some((e) => e.stashedUpload === true);
301
333
  }
302
334
  /**
303
335
  * Upload blobs added while offline. This must be completed before connecting and resubmitting ops.
304
336
  */
305
- public async processStashedChanges() {
337
+ public async trackPendingStashedUploads(): Promise<void> {
306
338
  const pendingUploads = Array.from(this.pendingBlobs.values())
307
- .filter((e) => e.pendingStashed === true)
339
+ .filter((e) => e.stashedUpload === true)
308
340
  .map(async (e) => e.uploadP);
341
+ if (pendingUploads.length === 0) {
342
+ return;
343
+ }
309
344
  await PerformanceEvent.timedExecAsync(
310
345
  this.mc.logger,
311
346
  {
@@ -432,7 +467,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
432
467
  const localId = uuid();
433
468
  const pendingEntry: PendingBlob = {
434
469
  blob,
435
- uploading: true,
436
470
  handleP: new Deferred(),
437
471
  uploadP: this.uploadBlob(localId, blob),
438
472
  attached: false,
@@ -525,9 +559,10 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
525
559
  return;
526
560
  }
527
561
  assert(
528
- entry.uploading === true,
562
+ entry.storageId === undefined,
529
563
  0x386 /* Must have pending blob entry for uploaded blob */,
530
564
  );
565
+ entry.stashedUpload = undefined;
531
566
  entry.storageId = response.id;
532
567
  entry.uploadTime = Date.now();
533
568
  entry.minTTLInSeconds = response.minTTLInSeconds;
@@ -590,9 +625,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
590
625
  this.deletePendingBlob(localId);
591
626
  return;
592
627
  }
593
- if (pendingEntry?.pendingStashed) {
594
- pendingEntry.pendingStashed = false;
595
- }
596
628
  }
597
629
  assert(blobId !== undefined, 0x12a /* "Missing blob id on metadata" */);
598
630
 
@@ -930,7 +962,6 @@ export class BlobManager extends TypedEventEmitter<IBlobManagerEvents> {
930
962
  blobs[id] = {
931
963
  blob: bufferToString(entry.blob, "base64"),
932
964
  storageId: entry.storageId,
933
- attached: entry.attached,
934
965
  acked: entry.acked,
935
966
  minTTLInSeconds: entry.minTTLInSeconds,
936
967
  uploadTime: entry.uploadTime,
@@ -12,10 +12,16 @@ import {
12
12
  IResponse,
13
13
  ITelemetryBaseLogger,
14
14
  } from "@fluidframework/core-interfaces";
15
- import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils";
16
- import { FluidObjectHandle } from "@fluidframework/datastore";
17
- import { buildSnapshotTree } from "@fluidframework/driver-utils";
15
+ import { assert, Lazy, LazyPromise } from "@fluidframework/core-utils/internal";
16
+ import { FluidObjectHandle } from "@fluidframework/datastore/internal";
17
+ import { buildSnapshotTree } from "@fluidframework/driver-utils/internal";
18
18
  import { ISequencedDocumentMessage, ISnapshotTree } from "@fluidframework/protocol-definitions";
19
+ import {
20
+ IGarbageCollectionData,
21
+ IInboundSignalMessage,
22
+ ISummaryTreeWithStats,
23
+ ITelemetryContext,
24
+ } from "@fluidframework/runtime-definitions";
19
25
  import {
20
26
  AliasResult,
21
27
  CreateSummarizerNodeSource,
@@ -27,15 +33,11 @@ import {
27
33
  IFluidDataStoreFactory,
28
34
  IFluidDataStoreRegistry,
29
35
  IFluidParentContext,
30
- IGarbageCollectionData,
31
- IInboundSignalMessage,
32
36
  ISummarizeResult,
33
- ISummaryTreeWithStats,
34
- ITelemetryContext,
35
37
  InboundAttachMessage,
36
38
  NamedFluidDataStoreRegistryEntries,
37
39
  channelsTreeName,
38
- } from "@fluidframework/runtime-definitions";
40
+ } from "@fluidframework/runtime-definitions/internal";
39
41
  import {
40
42
  GCDataBuilder,
41
43
  RequestParser,
@@ -49,7 +51,7 @@ import {
49
51
  processAttachMessageGCData,
50
52
  responseToException,
51
53
  unpackChildNodesUsedRoutes,
52
- } from "@fluidframework/runtime-utils";
54
+ } from "@fluidframework/runtime-utils/internal";
53
55
  import {
54
56
  DataCorruptionError,
55
57
  DataProcessingError,
@@ -59,7 +61,8 @@ import {
59
61
  createChildMonitoringContext,
60
62
  extractSafePropertiesFromMessage,
61
63
  tagCodeArtifacts,
62
- } from "@fluidframework/telemetry-utils";
64
+ } from "@fluidframework/telemetry-utils/internal";
65
+
63
66
  import { RuntimeHeaderData, defaultRuntimeHeaderData } from "./containerRuntime.js";
64
67
  import {
65
68
  IDataStoreAliasMessage,
@@ -220,7 +223,7 @@ export function wrapContextForInnerChannel(
220
223
  );
221
224
  };
222
225
 
223
- context.submitSignal = (type: string, contents: any, targetClientId?: string) => {
226
+ context.submitSignal = (type: string, contents: unknown, targetClientId?: string) => {
224
227
  const envelope: IEnvelope = {
225
228
  address: id,
226
229
  contents,
@@ -267,6 +270,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
267
270
  >();
268
271
 
269
272
  protected readonly contexts: DataStoreContexts;
273
+ private readonly aliasedDataStores: Set<string>;
270
274
 
271
275
  constructor(
272
276
  protected readonly baseSnapshot: ISnapshotTree | undefined,
@@ -296,6 +300,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
296
300
  "",
297
301
  this.parentContext.IFluidHandleContext,
298
302
  );
303
+ this.aliasedDataStores = new Set(aliasMap.values());
299
304
 
300
305
  // Extract stores stored inside the snapshot
301
306
  const fluidDataStores = new Map<string, ISnapshotTree>();
@@ -520,6 +525,7 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
520
525
  this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
521
526
 
522
527
  this.aliasMap.set(alias, context.id);
528
+ this.aliasedDataStores.add(context.id);
523
529
  context.setInMemoryRoot();
524
530
  return true;
525
531
  }
@@ -1286,8 +1292,9 @@ export class ChannelCollection implements IFluidDataStoreChannel, IDisposable {
1286
1292
  */
1287
1293
  private async getOutboundRoutes(): Promise<string[]> {
1288
1294
  const outboundRoutes: string[] = [];
1295
+ // Getting this information is a performance optimization that reduces network calls for virtualized datastores
1289
1296
  for (const [contextId, context] of this.contexts) {
1290
- const isRootDataStore = await context.isRoot();
1297
+ const isRootDataStore = await context.isRoot(this.aliasedDataStores);
1291
1298
  if (isRootDataStore) {
1292
1299
  outboundRoutes.push(`/${contextId}`);
1293
1300
  }
@@ -5,22 +5,22 @@
5
5
 
6
6
  import { performance } from "@fluid-internal/client-utils";
7
7
  import { IDeltaManager } from "@fluidframework/container-definitions";
8
- import { IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions";
8
+ import { IContainerRuntimeEvents } from "@fluidframework/container-runtime-definitions/internal";
9
9
  import { IEventProvider } from "@fluidframework/core-interfaces";
10
- import { assert } from "@fluidframework/core-utils";
10
+ import { assert } from "@fluidframework/core-utils/internal";
11
11
  import {
12
12
  IDocumentMessage,
13
13
  ISequencedDocumentMessage,
14
14
  MessageType,
15
15
  } from "@fluidframework/protocol-definitions";
16
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
16
17
  import {
17
18
  IEventSampler,
18
19
  ISampledTelemetryLogger,
19
- ITelemetryLoggerExt,
20
20
  createChildLogger,
21
21
  createSampledLogger,
22
22
  formatTick,
23
- } from "@fluidframework/telemetry-utils";
23
+ } from "@fluidframework/telemetry-utils/internal";
24
24
 
25
25
  /**
26
26
  * We report various latency-related errors when waiting for op roundtrip takes longer than that amout of time.
@@ -5,7 +5,8 @@
5
5
 
6
6
  import { AttachState } from "@fluidframework/container-definitions";
7
7
  import { IFluidHandleContext, IRequest, IResponse } from "@fluidframework/core-interfaces";
8
- import { generateHandleContextPath } from "@fluidframework/runtime-utils";
8
+ import { generateHandleContextPath } from "@fluidframework/runtime-utils/internal";
9
+
9
10
  import { ContainerRuntime } from "./containerRuntime.js";
10
11
 
11
12
  export class ContainerFluidHandleContext implements IFluidHandleContext {