@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
@@ -7,19 +7,21 @@ import { Trace, TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import {
8
8
  AttachState,
9
9
  IAudience,
10
- IBatchMessage,
11
- IContainerContext,
12
10
  ICriticalContainerError,
13
11
  IDeltaManager,
12
+ } from "@fluidframework/container-definitions";
13
+ import {
14
+ IBatchMessage,
15
+ IContainerContext,
14
16
  IGetPendingLocalStateProps,
15
17
  ILoader,
16
18
  IRuntime,
17
19
  LoaderHeader,
18
- } from "@fluidframework/container-definitions";
20
+ } from "@fluidframework/container-definitions/internal";
19
21
  import {
20
22
  IContainerRuntime,
21
23
  IContainerRuntimeEvents,
22
- } from "@fluidframework/container-runtime-definitions";
24
+ } from "@fluidframework/container-runtime-definitions/internal";
23
25
  import {
24
26
  FluidObject,
25
27
  IFluidHandle,
@@ -27,24 +29,30 @@ import {
27
29
  IProvideFluidHandleContext,
28
30
  IRequest,
29
31
  IResponse,
30
- ISignalEnvelope,
31
32
  ITelemetryBaseLogger,
32
33
  } from "@fluidframework/core-interfaces";
33
- import { assert, Deferred, LazyPromise, PromiseCache, delay } from "@fluidframework/core-utils";
34
+ import { ISignalEnvelope } from "@fluidframework/core-interfaces/internal";
35
+ import {
36
+ assert,
37
+ Deferred,
38
+ LazyPromise,
39
+ PromiseCache,
40
+ delay,
41
+ } from "@fluidframework/core-utils/internal";
34
42
  import {
35
43
  DriverHeader,
36
44
  FetchSource,
37
45
  IDocumentStorageService,
38
46
  type ISnapshot,
39
- } from "@fluidframework/driver-definitions";
40
- import { readAndParse } from "@fluidframework/driver-utils";
47
+ } from "@fluidframework/driver-definitions/internal";
48
+ import { readAndParse } from "@fluidframework/driver-utils/internal";
49
+ import type { IIdCompressor } from "@fluidframework/id-compressor";
41
50
  import type {
42
- IIdCompressor,
43
51
  IIdCompressorCore,
44
52
  IdCreationRange,
45
53
  SerializedIdCompressorWithNoSession,
46
54
  SerializedIdCompressorWithOngoingSession,
47
- } from "@fluidframework/id-compressor";
55
+ } from "@fluidframework/id-compressor/internal";
48
56
  import {
49
57
  IClientDetails,
50
58
  IDocumentMessage,
@@ -57,6 +65,12 @@ import {
57
65
  MessageType,
58
66
  SummaryType,
59
67
  } from "@fluidframework/protocol-definitions";
68
+ import {
69
+ IGarbageCollectionData,
70
+ IInboundSignalMessage,
71
+ ISummaryTreeWithStats,
72
+ ITelemetryContext,
73
+ } from "@fluidframework/runtime-definitions";
60
74
  import {
61
75
  CreateChildSummarizerNodeParam,
62
76
  FlushMode,
@@ -65,17 +79,13 @@ import {
65
79
  IEnvelope,
66
80
  IFluidDataStoreContextDetached,
67
81
  IFluidDataStoreRegistry,
68
- IGarbageCollectionData,
69
- IInboundSignalMessage,
70
82
  ISummarizeInternalResult,
71
- ISummaryTreeWithStats,
72
- ITelemetryContext,
73
83
  InboundAttachMessage,
74
84
  NamedFluidDataStoreRegistryEntries,
75
85
  SummarizeInternalFn,
76
86
  channelsTreeName,
77
87
  gcTreeKey,
78
- } from "@fluidframework/runtime-definitions";
88
+ } from "@fluidframework/runtime-definitions/internal";
79
89
  import {
80
90
  GCDataBuilder,
81
91
  ReadAndParseBlob,
@@ -88,17 +98,20 @@ import {
88
98
  exceptionToResponse,
89
99
  responseToException,
90
100
  seqFromTree,
91
- } from "@fluidframework/runtime-utils";
101
+ } from "@fluidframework/runtime-utils/internal";
102
+ import {
103
+ type ITelemetryGenericEventExt,
104
+ ITelemetryLoggerExt,
105
+ } from "@fluidframework/telemetry-utils";
92
106
  import {
93
107
  DataCorruptionError,
94
108
  DataProcessingError,
95
109
  GenericError,
96
110
  IEventSampler,
97
- type ITelemetryGenericEventExt,
98
- ITelemetryLoggerExt,
99
111
  LoggingError,
100
112
  MonitoringContext,
101
113
  PerformanceEvent,
114
+ // eslint-disable-next-line import/no-deprecated
102
115
  TaggedLoggerAdapter,
103
116
  UsageError,
104
117
  createChildLogger,
@@ -107,8 +120,9 @@ import {
107
120
  loggerToMonitoringContext,
108
121
  raiseConnectedEvent,
109
122
  wrapError,
110
- } from "@fluidframework/telemetry-utils";
123
+ } from "@fluidframework/telemetry-utils/internal";
111
124
  import { v4 as uuid } from "uuid";
125
+
112
126
  import { BindBatchTracker } from "./batchTracker.js";
113
127
  import { BlobManager, IBlobManagerLoadInfo, IPendingBlobs } from "./blobManager.js";
114
128
  import { ChannelCollection, getSummaryForDatastores, wrapContext } from "./channelCollection.js";
@@ -163,7 +177,6 @@ import {
163
177
  IConnectableRuntime,
164
178
  IContainerRuntimeMetadata,
165
179
  ICreateContainerMetadata,
166
- IDocumentSchemaChangeMessage,
167
180
  type IDocumentSchemaCurrent,
168
181
  IEnqueueSummarizeOptions,
169
182
  IGenerateSummaryTreeResult,
@@ -770,6 +783,7 @@ export class ContainerRuntime
770
783
  const backCompatContext: IContainerContext | OldContainerContextWithLogger = context;
771
784
  const passLogger =
772
785
  backCompatContext.taggedLogger ??
786
+ // eslint-disable-next-line import/no-deprecated
773
787
  new TaggedLoggerAdapter((backCompatContext as OldContainerContextWithLogger).logger);
774
788
  const logger = createChildLogger({
775
789
  logger: passLogger,
@@ -868,6 +882,19 @@ export class ContainerRuntime
868
882
  }
869
883
  }
870
884
 
885
+ let desiredIdCompressorMode: IdCompressorMode;
886
+ switch (mc.config.getBoolean("Fluid.ContainerRuntime.IdCompressorEnabled")) {
887
+ case true:
888
+ desiredIdCompressorMode = "on";
889
+ break;
890
+ case false:
891
+ desiredIdCompressorMode = undefined;
892
+ break;
893
+ default:
894
+ desiredIdCompressorMode = enableRuntimeIdCompressor;
895
+ break;
896
+ }
897
+
871
898
  // Enabling the IdCompressor is a one-way operation and we only want to
872
899
  // allow new containers to turn it on.
873
900
  let idCompressorMode: IdCompressorMode;
@@ -879,28 +906,24 @@ export class ContainerRuntime
879
906
  // 3) Same logic applies for "delayed" mode
880
907
  // Maybe in the future we will need to enabled (and figure how to do it safely) "delayed" -> "on" change.
881
908
  // We could do "off" -> "on" transition too, if all clients start loading compressor (but not using it initially) and
882
- // do so for a while - this will allow clients to eventually to disregard "off" setting (when it's safe so) and start
909
+ // do so for a while - this will allow clients to eventually disregard "off" setting (when it's safe so) and start
883
910
  // using compressor in future sessions.
884
911
  // Everyting is possible, but it needs to be designed and executed carefully, when such need arises.
885
912
  idCompressorMode = metadata?.documentSchema?.runtime
886
913
  ?.idCompressorMode as IdCompressorMode;
887
- } else {
888
- switch (mc.config.getBoolean("Fluid.ContainerRuntime.IdCompressorEnabled")) {
889
- case true:
890
- idCompressorMode = "on";
891
- break;
892
- case false:
893
- idCompressorMode = undefined;
894
- break;
895
- default:
896
- idCompressorMode = enableRuntimeIdCompressor;
897
- break;
914
+
915
+ // This is the only exception to the rule above - we have proper plumbing to load ID compressor on schema change
916
+ // event. It is loaded async (relative to op processing), so this conversion is only safe for off -> delayed conversion!
917
+ if (idCompressorMode === undefined && desiredIdCompressorMode === "delayed") {
918
+ idCompressorMode = desiredIdCompressorMode;
898
919
  }
920
+ } else {
921
+ idCompressorMode = desiredIdCompressorMode;
899
922
  }
900
923
 
901
924
  const createIdCompressorFn = async () => {
902
925
  const { createIdCompressor, deserializeIdCompressor, createSessionId } = await import(
903
- "@fluidframework/id-compressor"
926
+ "@fluidframework/id-compressor/internal"
904
927
  );
905
928
 
906
929
  /**
@@ -956,6 +979,7 @@ export class ContainerRuntime
956
979
  compressionLz4,
957
980
  idCompressorMode,
958
981
  opGroupingEnabled,
982
+ disallowedVersions: [],
959
983
  },
960
984
  (schema) => {
961
985
  runtime.onSchemaChange(schema);
@@ -1001,6 +1025,17 @@ export class ContainerRuntime
1001
1025
  undefined, // summaryConfiguration
1002
1026
  );
1003
1027
 
1028
+ runtime.blobManager.trackPendingStashedUploads().then(
1029
+ () => {
1030
+ // make sure we didn't reconnect before the promise resolved
1031
+ if (runtime.delayConnectClientId !== undefined && !runtime.disposed) {
1032
+ runtime.delayConnectClientId = undefined;
1033
+ runtime.setConnectionStateCore(true, runtime.delayConnectClientId);
1034
+ }
1035
+ },
1036
+ (error) => runtime.closeFn(error),
1037
+ );
1038
+
1004
1039
  // Apply stashed ops with a reference sequence number equal to the sequence number of the snapshot,
1005
1040
  // or zero. This must be done before Container replays saved ops.
1006
1041
  await runtime.pendingStateManager.applyStashedOpsAt(runtimeSequenceNumber ?? 0);
@@ -1581,7 +1616,7 @@ export class ContainerRuntime
1581
1616
  // Due to a mismatch between different layers in terms of
1582
1617
  // what is the interface of passing signals, we need the
1583
1618
  // downstream stores to wrap the signal.
1584
- parentContext.submitSignal = (type: string, content: any, targetClientId?: string) => {
1619
+ parentContext.submitSignal = (type: string, content: unknown, targetClientId?: string) => {
1585
1620
  const envelope1 = content as IEnvelope;
1586
1621
  const envelope2 = this.createNewSignalEnvelope(
1587
1622
  envelope1.address,
@@ -1616,11 +1651,11 @@ export class ContainerRuntime
1616
1651
  async (runtime: ChannelCollection) => provideEntryPoint,
1617
1652
  );
1618
1653
 
1619
- this.blobManager = new BlobManager(
1620
- this.handleContext,
1621
- blobManagerSnapshot,
1622
- () => this.storage,
1623
- (localId: string, blobId?: string) => {
1654
+ this.blobManager = new BlobManager({
1655
+ routeContext: this.handleContext,
1656
+ snapshot: blobManagerSnapshot,
1657
+ getStorage: () => this.storage,
1658
+ sendBlobAttachOp: (localId: string, blobId?: string) => {
1624
1659
  if (!this.disposed) {
1625
1660
  this.submit(
1626
1661
  { type: ContainerMessageType.BlobAttach, contents: undefined },
@@ -1632,12 +1667,13 @@ export class ContainerRuntime
1632
1667
  );
1633
1668
  }
1634
1669
  },
1635
- (blobPath: string) => this.garbageCollector.nodeUpdated(blobPath, "Loaded"),
1636
- (blobPath: string) => this.garbageCollector.isNodeDeleted(blobPath),
1637
- this,
1638
- pendingRuntimeState?.pendingAttachmentBlobs,
1639
- (error?: ICriticalContainerError) => this.closeFn(error),
1640
- );
1670
+ blobRequested: (blobPath: string) =>
1671
+ this.garbageCollector.nodeUpdated(blobPath, "Loaded"),
1672
+ isBlobDeleted: (blobPath: string) => this.garbageCollector.isNodeDeleted(blobPath),
1673
+ runtime: this,
1674
+ stashedBlobs: pendingRuntimeState?.pendingAttachmentBlobs,
1675
+ closeContainer: (error?: ICriticalContainerError) => this.closeFn(error),
1676
+ });
1641
1677
 
1642
1678
  this.scheduleManager = new ScheduleManager(
1643
1679
  this.innerDeltaManager,
@@ -2314,6 +2350,15 @@ export class ContainerRuntime
2314
2350
  case ContainerMessageType.Alias:
2315
2351
  return this.channelCollection.applyStashedOp(opContents);
2316
2352
  case ContainerMessageType.IdAllocation:
2353
+ // IDs allocation ops in stashed state are ignored because the tip state of the compressor
2354
+ // is serialized into the pending state. This is done because generation of new IDs during
2355
+ // stashed op application (or, later, resubmit) must generate new IDs and if the compressor
2356
+ // was loaded from a state serialized at the same time as the summary tree in the stashed state
2357
+ // then it would generate IDs that collide with any in later stashed ops.
2358
+ // In the future, IdCompressor could be extended to have an "applyStashedOp" or similar method
2359
+ // and the runtime could filter out all ID allocation ops from the stashed state and apply them
2360
+ // before applying the rest of the stashed ops. This would accomplish the same thing but with
2361
+ // better performance in future incremental stashed state creation.
2317
2362
  assert(
2318
2363
  this.idCompressorMode !== undefined,
2319
2364
  0x8f1 /* ID compressor should be in use */,
@@ -2365,6 +2410,7 @@ export class ContainerRuntime
2365
2410
  this._loadIdCompressor = this.createIdCompressor()
2366
2411
  .then((compressor) => {
2367
2412
  this._idCompressor = compressor;
2413
+ // Finalize any ranges we received while the compressor was turned off.
2368
2414
  for (const range of this.pendingIdCompressorOps) {
2369
2415
  this._idCompressor.finalizeCreationRange(range);
2370
2416
  }
@@ -2400,23 +2446,13 @@ export class ContainerRuntime
2400
2446
  // propagation of the "connected" event until we have uploaded them to
2401
2447
  // ensure we don't submit ops referencing a blob that has not been uploaded
2402
2448
  const connecting = connected && !this._connected;
2403
- if (connecting && this.blobManager.hasPendingStashedBlobs()) {
2449
+ if (connecting && this.blobManager.hasPendingStashedUploads()) {
2404
2450
  assert(
2405
2451
  !this.delayConnectClientId,
2406
2452
  0x791 /* Connect event delay must be canceled before subsequent connect event */,
2407
2453
  );
2408
2454
  assert(!!clientId, 0x792 /* Must have clientId when connecting */);
2409
2455
  this.delayConnectClientId = clientId;
2410
- this.blobManager.processStashedChanges().then(
2411
- () => {
2412
- // make sure we didn't reconnect before the promise resolved
2413
- if (this.delayConnectClientId === clientId && !this.disposed) {
2414
- this.delayConnectClientId = undefined;
2415
- this.setConnectionStateCore(connected, clientId);
2416
- }
2417
- },
2418
- (error) => this.closeFn(error),
2419
- );
2420
2456
  return;
2421
2457
  }
2422
2458
 
@@ -2612,7 +2648,13 @@ export class ContainerRuntime
2612
2648
  )
2613
2649
  ) {
2614
2650
  const range = messageWithContext.message.contents;
2651
+ // Some other client turned on the id compressor. If we have not turned it on,
2652
+ // put it in a pending queue and delay finalization.
2615
2653
  if (this._idCompressor === undefined) {
2654
+ assert(
2655
+ this.idCompressorMode !== undefined,
2656
+ "id compressor should be enabled",
2657
+ );
2616
2658
  this.pendingIdCompressorOps.push(range);
2617
2659
  } else {
2618
2660
  this._idCompressor.finalizeCreationRange(range);
@@ -2991,10 +3033,10 @@ export class ContainerRuntime
2991
3033
  /**
2992
3034
  * Submits the signal to be sent to other clients.
2993
3035
  * @param type - Type of the signal.
2994
- * @param content - Content of the signal.
3036
+ * @param content - Content of the signal. Should be a JSON serializable object or primitive.
2995
3037
  * @param targetClientId - When specified, the signal is only sent to the provided client id.
2996
3038
  */
2997
- public submitSignal(type: string, content: any, targetClientId?: string) {
3039
+ public submitSignal(type: string, content: unknown, targetClientId?: string) {
2998
3040
  this.verifyNotClosed();
2999
3041
  const envelope = this.createNewSignalEnvelope(undefined /* address */, type, content);
3000
3042
  return this.submitSignalFn(envelope, targetClientId);
@@ -3039,6 +3081,10 @@ export class ContainerRuntime
3039
3081
  // We can finalize any allocated IDs since we're the only client
3040
3082
  const idRange = this._idCompressor?.takeNextCreationRange();
3041
3083
  if (idRange !== undefined) {
3084
+ assert(
3085
+ idRange.ids === undefined || idRange.ids.firstGenCount === 1,
3086
+ "No other ranges should be taken while container is detached.",
3087
+ );
3042
3088
  this._idCompressor?.finalizeCreationRange(idRange);
3043
3089
  }
3044
3090
 
@@ -3866,18 +3912,17 @@ export class ContainerRuntime
3866
3912
  // Allow document schema controller to send a message if it needs to propose change in document schema.
3867
3913
  // If it needs to send a message, it will call provided callback with payload of such message and rely
3868
3914
  // on this callback to do actual sending.
3869
- this.documentsSchemaController.onMessageSent(
3870
- (contents: IDocumentSchemaChangeMessage) => {
3871
- const msg: ContainerRuntimeDocumentSchemaMessage = {
3872
- type: ContainerMessageType.DocumentSchemaChange,
3873
- contents,
3874
- };
3875
- this.outbox.submit({
3876
- contents: JSON.stringify(msg),
3877
- referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
3878
- });
3879
- },
3880
- );
3915
+ const contents = this.documentsSchemaController.maybeSendSchemaMessage();
3916
+ if (contents) {
3917
+ const msg: ContainerRuntimeDocumentSchemaMessage = {
3918
+ type: ContainerMessageType.DocumentSchemaChange,
3919
+ contents,
3920
+ };
3921
+ this.outbox.submit({
3922
+ contents: JSON.stringify(msg),
3923
+ referenceSequenceNumber: this.deltaManager.lastSequenceNumber,
3924
+ });
3925
+ }
3881
3926
 
3882
3927
  // If this is attach message for new data store, and we are in a batch, send this op out of order
3883
3928
  // Is it safe:
package/src/dataStore.ts CHANGED
@@ -5,13 +5,15 @@
5
5
 
6
6
  import { AttachState } from "@fluidframework/container-definitions";
7
7
  import { FluidObject, IFluidHandle } from "@fluidframework/core-interfaces";
8
- import { assert, unreachableCase } from "@fluidframework/core-utils";
8
+ import { assert, unreachableCase } from "@fluidframework/core-utils/internal";
9
9
  import {
10
10
  AliasResult,
11
11
  IDataStore,
12
12
  IFluidDataStoreChannel,
13
- } from "@fluidframework/runtime-definitions";
14
- import { ITelemetryLoggerExt, TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils";
13
+ } from "@fluidframework/runtime-definitions/internal";
14
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
15
+ import { TelemetryDataTag, UsageError } from "@fluidframework/telemetry-utils/internal";
16
+
15
17
  import { ChannelCollection } from "./channelCollection.js";
16
18
  import { ContainerMessageType } from "./messageTypes.js";
17
19
 
@@ -8,15 +8,15 @@ import { AttachState, IAudience, IDeltaManager } from "@fluidframework/container
8
8
  import {
9
9
  FluidObject,
10
10
  IDisposable,
11
+ IEvent,
11
12
  IFluidHandle,
12
13
  IRequest,
13
14
  IResponse,
14
15
  ITelemetryBaseProperties,
15
16
  } from "@fluidframework/core-interfaces";
16
- import { IEvent } from "@fluidframework/core-interfaces";
17
- import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils";
18
- import { IDocumentStorageService } from "@fluidframework/driver-definitions";
19
- import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils";
17
+ import { assert, LazyPromise, unreachableCase } from "@fluidframework/core-utils/internal";
18
+ import { IDocumentStorageService } from "@fluidframework/driver-definitions/internal";
19
+ import { BlobTreeEntry, readAndParse } from "@fluidframework/driver-utils/internal";
20
20
  import type { IIdCompressor } from "@fluidframework/id-compressor";
21
21
  import {
22
22
  IClientDetails,
@@ -26,6 +26,12 @@ import {
26
26
  ISnapshotTree,
27
27
  ITreeEntry,
28
28
  } from "@fluidframework/protocol-definitions";
29
+ import {
30
+ IGarbageCollectionData,
31
+ IInboundSignalMessage,
32
+ ISummaryTreeWithStats,
33
+ ITelemetryContext,
34
+ } from "@fluidframework/runtime-definitions";
29
35
  import {
30
36
  CreateChildSummarizerNodeFn,
31
37
  CreateChildSummarizerNodeParam,
@@ -37,20 +43,16 @@ import {
37
43
  IFluidDataStoreContextDetached,
38
44
  IFluidDataStoreRegistry,
39
45
  IFluidParentContext,
40
- IGarbageCollectionData,
41
46
  IGarbageCollectionDetailsBase,
42
- IInboundSignalMessage,
43
47
  IProvideFluidDataStoreFactory,
44
48
  ISummarizeInternalResult,
45
49
  ISummarizeResult,
46
50
  ISummarizerNodeWithGC,
47
- ISummaryTreeWithStats,
48
- ITelemetryContext,
49
51
  SummarizeInternalFn,
50
52
  channelsTreeName,
51
53
  gcDataBlobKey,
52
- } from "@fluidframework/runtime-definitions";
53
- import { addBlobToSummary } from "@fluidframework/runtime-utils";
54
+ } from "@fluidframework/runtime-definitions/internal";
55
+ import { addBlobToSummary } from "@fluidframework/runtime-utils/internal";
54
56
  import {
55
57
  DataCorruptionError,
56
58
  DataProcessingError,
@@ -61,7 +63,8 @@ import {
61
63
  extractSafePropertiesFromMessage,
62
64
  generateStack,
63
65
  tagCodeArtifacts,
64
- } from "@fluidframework/telemetry-utils";
66
+ } from "@fluidframework/telemetry-utils/internal";
67
+
65
68
  import { detectOutboundRoutesViaDDSKey, sendGCUnexpectedUsageEvent } from "./gc/index.js";
66
69
  import {
67
70
  ReadFluidDataStoreAttributes,
@@ -268,8 +271,20 @@ export abstract class FluidDataStoreContext
268
271
  * 2. is root as part of the base snapshot that the datastore loaded from
269
272
  * @returns whether a datastore is root
270
273
  */
271
- public async isRoot(): Promise<boolean> {
272
- return this.isInMemoryRoot() || (await this.getInitialSnapshotDetails()).isRootDataStore;
274
+ public async isRoot(aliasedDataStores?: Set<string>): Promise<boolean> {
275
+ if (this.isInMemoryRoot()) {
276
+ return true;
277
+ }
278
+
279
+ // This if is a performance optimization.
280
+ // We know that if the base snapshot is omitted, then the isRootDataStore flag is not set.
281
+ // That means we can skip the expensive call to getInitialSnapshotDetails for virtualized datastores,
282
+ // and get the information from the alias map directly.
283
+ if (aliasedDataStores !== undefined && this.baseSnapshot?.omitted === true) {
284
+ return aliasedDataStores.has(this.id);
285
+ }
286
+
287
+ return (await this.getInitialSnapshotDetails()).isRootDataStore;
273
288
  }
274
289
 
275
290
  /**
@@ -799,10 +814,10 @@ export abstract class FluidDataStoreContext
799
814
  /**
800
815
  * Submits the signal to be sent to other clients.
801
816
  * @param type - Type of the signal.
802
- * @param content - Content of the signal.
817
+ * @param content - Content of the signal. Should be a JSON serializable object or primitive.
803
818
  * @param targetClientId - When specified, the signal is only sent to the provided client id.
804
819
  */
805
- public submitSignal(type: string, content: any, targetClientId?: string) {
820
+ public submitSignal(type: string, content: unknown, targetClientId?: string) {
806
821
  this.verifyNotClosed("submitSignal");
807
822
 
808
823
  assert(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
@@ -4,8 +4,10 @@
4
4
  */
5
5
 
6
6
  import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
- import { assert, Deferred, Lazy } from "@fluidframework/core-utils";
8
- import { ITelemetryLoggerExt, createChildLogger } from "@fluidframework/telemetry-utils";
7
+ import { assert, Deferred, Lazy } from "@fluidframework/core-utils/internal";
8
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
9
+ import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
10
+
9
11
  import { FluidDataStoreContext, LocalFluidDataStoreContext } from "./dataStoreContext.js";
10
12
 
11
13
  /** @internal */
@@ -7,8 +7,8 @@ import {
7
7
  FluidDataStoreRegistryEntry,
8
8
  IFluidDataStoreRegistry,
9
9
  NamedFluidDataStoreRegistryEntries,
10
- } from "@fluidframework/runtime-definitions";
11
- import { UsageError } from "@fluidframework/telemetry-utils";
10
+ } from "@fluidframework/runtime-definitions/internal";
11
+ import { UsageError } from "@fluidframework/telemetry-utils/internal";
12
12
 
13
13
  /**
14
14
  * @internal
@@ -139,7 +139,7 @@ export class DeltaManagerSummarizerProxy
139
139
  this.deltaManager.off("readonly", this.onReadonly);
140
140
  }
141
141
 
142
- public submitSignal(content: any, targetClientId?: string): void {
142
+ public submitSignal(content: string, targetClientId?: string): void {
143
143
  return this.deltaManager.submitSignal(content, targetClientId);
144
144
  }
145
145
 
@@ -6,7 +6,8 @@
6
6
  import { performance } from "@fluid-internal/client-utils";
7
7
  import { IDeltaManager } from "@fluidframework/container-definitions";
8
8
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
- import { ITelemetryLoggerExt, formatTick } from "@fluidframework/telemetry-utils";
9
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
10
+ import { formatTick } from "@fluidframework/telemetry-utils/internal";
10
11
 
11
12
  /**
12
13
  * DeltaScheduler is responsible for the scheduling of inbound delta queue in cases where there
package/src/error.ts CHANGED
@@ -3,8 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { ContainerErrorTypes } from "@fluidframework/container-definitions";
7
- import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils";
6
+ import { ContainerErrorTypes } from "@fluidframework/container-definitions/internal";
7
+ import { IFluidErrorBase, LoggingError } from "@fluidframework/telemetry-utils/internal";
8
8
 
9
9
  /**
10
10
  * Error indicating that a client's session has reached its time limit and is closed.
@@ -4,24 +4,24 @@
4
4
  */
5
5
 
6
6
  import { IRequest } from "@fluidframework/core-interfaces";
7
- import { assert, LazyPromise, Timer } from "@fluidframework/core-utils";
7
+ import { assert, LazyPromise, Timer } from "@fluidframework/core-utils/internal";
8
+ import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
8
9
  import {
9
- IGarbageCollectionData,
10
10
  IGarbageCollectionDetailsBase,
11
11
  ISummarizeResult,
12
- ITelemetryContext,
13
12
  gcTreeKey,
14
- } from "@fluidframework/runtime-definitions";
15
- import { createResponseError, responseToException } from "@fluidframework/runtime-utils";
13
+ } from "@fluidframework/runtime-definitions/internal";
14
+ import { createResponseError, responseToException } from "@fluidframework/runtime-utils/internal";
15
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
16
16
  import {
17
17
  DataProcessingError,
18
- ITelemetryLoggerExt,
19
18
  MonitoringContext,
20
19
  PerformanceEvent,
21
20
  createChildLogger,
22
21
  createChildMonitoringContext,
23
22
  tagCodeArtifacts,
24
- } from "@fluidframework/telemetry-utils";
23
+ } from "@fluidframework/telemetry-utils/internal";
24
+
25
25
  import { BlobManager } from "../blobManager.js";
26
26
  import {
27
27
  InactiveResponseHeaderKey,
@@ -31,6 +31,7 @@ import {
31
31
  import { ClientSessionExpiredError } from "../error.js";
32
32
  import { ContainerMessageType, ContainerRuntimeGCMessage } from "../messageTypes.js";
33
33
  import { IRefreshSummaryResult } from "../summary/index.js";
34
+
34
35
  import { generateGCConfigs } from "./gcConfigs.js";
35
36
  import {
36
37
  GCNodeType,
@@ -7,8 +7,10 @@ import {
7
7
  MonitoringContext,
8
8
  UsageError,
9
9
  validatePrecondition,
10
- } from "@fluidframework/telemetry-utils";
10
+ } from "@fluidframework/telemetry-utils/internal";
11
+
11
12
  import { IContainerRuntimeMetadata } from "../summary/index.js";
13
+
12
14
  import {
13
15
  GCFeatureMatrix,
14
16
  GCVersion,
@@ -24,18 +26,15 @@ import {
24
26
  gcDisableThrowOnTombstoneLoadOptionName,
25
27
  gcGenerationOptionName,
26
28
  gcTestModeKey,
27
- gcVersionUpgradeToV4Key,
28
29
  maxSnapshotCacheExpiryMs,
29
- nextGCVersion,
30
30
  oneDayMs,
31
31
  runGCKey,
32
32
  runSessionExpiryKey,
33
33
  runSweepKey,
34
- stableGCVersion,
35
34
  throwOnTombstoneLoadOverrideKey,
36
35
  throwOnTombstoneUsageKey,
37
36
  } from "./gcDefinitions.js";
38
- import { getGCVersion, shouldAllowGcSweep } from "./gcHelpers.js";
37
+ import { getGCVersion, getGCVersionInEffect, shouldAllowGcSweep } from "./gcHelpers.js";
39
38
 
40
39
  /**
41
40
  * Generates configurations for the Garbage Collector that it uses to determine what to run and how.
@@ -113,9 +112,7 @@ export function generateGCConfigs(
113
112
  createParams.gcOptions[gcGenerationOptionName] /* currentGeneration */,
114
113
  );
115
114
 
116
- // If version upgrade is not enabled, fall back to the stable GC version.
117
- const gcVersionInEffect =
118
- mc.config.getBoolean(gcVersionUpgradeToV4Key) === true ? nextGCVersion : stableGCVersion;
115
+ const gcVersionInEffect = getGCVersionInEffect(mc.config);
119
116
 
120
117
  // The GC version is up-to-date if the GC version in effect is at least equal to the GC version in base snapshot.
121
118
  // If it is not up-to-date, there is a newer version of GC out there which is more reliable than this. So, GC
@@ -6,14 +6,14 @@
6
6
  import { ICriticalContainerError } from "@fluidframework/container-definitions";
7
7
  import { IRequest } from "@fluidframework/core-interfaces";
8
8
  import { ISnapshotTree } from "@fluidframework/protocol-definitions";
9
+ import { IGarbageCollectionData, ITelemetryContext } from "@fluidframework/runtime-definitions";
9
10
  import {
10
- IGarbageCollectionData,
11
11
  IGarbageCollectionDetailsBase,
12
12
  ISummarizeResult,
13
- ITelemetryContext,
14
- } from "@fluidframework/runtime-definitions";
15
- import { ReadAndParseBlob } from "@fluidframework/runtime-utils";
13
+ } from "@fluidframework/runtime-definitions/internal";
14
+ import { ReadAndParseBlob } from "@fluidframework/runtime-utils/internal";
16
15
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
16
+
17
17
  import { RuntimeHeaderData } from "../containerRuntime.js";
18
18
  import { ContainerRuntimeGCMessage } from "../messageTypes.js";
19
19
  import {