@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
@@ -3,16 +3,25 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert } from "@fluidframework/core-utils";
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
7
  import { ISnapshotTree } from "@fluidframework/protocol-definitions";
8
+ import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
8
9
  import {
9
- IGarbageCollectionData,
10
10
  IGarbageCollectionDetailsBase,
11
11
  gcBlobPrefix,
12
12
  gcDeletedBlobKey,
13
13
  gcTombstoneBlobKey,
14
- } from "@fluidframework/runtime-definitions";
15
- import { GCFeatureMatrix, GCVersion, IGCMetadata } from "./gcDefinitions.js";
14
+ } from "@fluidframework/runtime-definitions/internal";
15
+ import type { IConfigProvider } from "@fluidframework/telemetry-utils/internal";
16
+
17
+ import {
18
+ GCFeatureMatrix,
19
+ GCVersion,
20
+ IGCMetadata,
21
+ gcVersionUpgradeToV4Key,
22
+ nextGCVersion,
23
+ stableGCVersion,
24
+ } from "./gcDefinitions.js";
16
25
  import {
17
26
  IGarbageCollectionNodeData,
18
27
  IGarbageCollectionSnapshotData,
@@ -27,6 +36,14 @@ export function getGCVersion(metadata?: IGCMetadata): GCVersion {
27
36
  return metadata.gcFeature ?? 0;
28
37
  }
29
38
 
39
+ /** Indicates what GC version is in effect for new GC data being written in this session */
40
+ export function getGCVersionInEffect(configProvider: IConfigProvider): number {
41
+ // If version upgrade is not enabled, fall back to the stable GC version.
42
+ return configProvider.getBoolean(gcVersionUpgradeToV4Key) === true
43
+ ? nextGCVersion
44
+ : stableGCVersion;
45
+ }
46
+
30
47
  /**
31
48
  * Indicates whether Sweep is allowed for this document based on the persisted GC Feature Matrix and current gcGeneration.
32
49
  * This applies to the entire Sweep Phase the same - both Tombstone Enforcement (i.e. should loading a Tombstone fail?) and Deletion.
@@ -4,16 +4,18 @@
4
4
  */
5
5
 
6
6
  import { SummaryType } from "@fluidframework/protocol-definitions";
7
+ import { ISummaryTreeWithStats } from "@fluidframework/runtime-definitions";
7
8
  import {
8
9
  ISummarizeResult,
9
- ISummaryTreeWithStats,
10
10
  gcBlobPrefix,
11
11
  gcDeletedBlobKey,
12
12
  gcTombstoneBlobKey,
13
13
  gcTreeKey,
14
- } from "@fluidframework/runtime-definitions";
15
- import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils";
14
+ } from "@fluidframework/runtime-definitions/internal";
15
+ import { SummaryTreeBuilder, mergeStats } from "@fluidframework/runtime-utils/internal";
16
+
16
17
  import { IRefreshSummaryResult } from "../summary/index.js";
18
+
17
19
  import { GCVersion, IGCStats, IGarbageCollectorConfigs } from "./gcDefinitions.js";
18
20
  import { generateSortedGCState } from "./gcHelpers.js";
19
21
  import { IGarbageCollectionSnapshotData, IGarbageCollectionState } from "./gcSummaryDefinitions.js";
@@ -7,12 +7,16 @@ import { IGarbageCollectionData } from "@fluidframework/runtime-definitions";
7
7
  import {
8
8
  type ITelemetryGenericEventExt,
9
9
  ITelemetryLoggerExt,
10
+ } from "@fluidframework/telemetry-utils";
11
+ import {
10
12
  MonitoringContext,
11
13
  generateStack,
12
14
  tagCodeArtifacts,
13
- } from "@fluidframework/telemetry-utils";
15
+ } from "@fluidframework/telemetry-utils/internal";
16
+
14
17
  import { RuntimeHeaderData } from "../containerRuntime.js";
15
18
  import { ICreateContainerMetadata } from "../summary/index.js";
19
+
16
20
  import {
17
21
  GCFeatureMatrix,
18
22
  GCNodeType,
@@ -23,6 +27,7 @@ import {
23
27
  throwOnTombstoneLoadOverrideKey,
24
28
  throwOnTombstoneUsageKey,
25
29
  } from "./gcDefinitions.js";
30
+ import { getGCVersionInEffect } from "./gcHelpers.js";
26
31
  import { UnreferencedStateTracker } from "./gcUnreferencedStateTracker.js";
27
32
 
28
33
  type NodeUsageType = "Changed" | "Loaded" | "Revived";
@@ -429,6 +434,7 @@ export function sendGCUnexpectedUsageEvent(
429
434
  event.sweepFlags = JSON.stringify({
430
435
  EnableSweepFlag: mc.config.getBoolean(runSweepKey),
431
436
  });
437
+ event.gcVersion = getGCVersionInEffect(mc.config);
432
438
 
433
439
  mc.logger.sendTelemetryEvent(event, error);
434
440
  }
@@ -3,8 +3,9 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Timer } from "@fluidframework/core-utils";
7
- import { validatePrecondition } from "@fluidframework/telemetry-utils";
6
+ import { assert, Timer } from "@fluidframework/core-utils/internal";
7
+ import { validatePrecondition } from "@fluidframework/telemetry-utils/internal";
8
+
8
9
  import { UnreferencedState } from "./gcDefinitions.js";
9
10
 
10
11
  /** A wrapper around common-utils Timer that requires the timeout when calling start/restart */
package/src/gc/index.ts CHANGED
@@ -45,6 +45,7 @@ export {
45
45
  export {
46
46
  cloneGCData,
47
47
  concatGarbageCollectionStates,
48
+ getGCVersionInEffect,
48
49
  trimLeadingAndTrailingSlashes,
49
50
  unpackChildNodesGCDetails,
50
51
  } from "./gcHelpers.js";
@@ -3,13 +3,14 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import type { IdCreationRange } from "@fluidframework/id-compressor";
6
+ import type { IdCreationRange } from "@fluidframework/id-compressor/internal";
7
7
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
8
8
  import {
9
9
  IAttachMessage,
10
10
  IEnvelope,
11
11
  InboundAttachMessage,
12
- } from "@fluidframework/runtime-definitions";
12
+ } from "@fluidframework/runtime-definitions/internal";
13
+
13
14
  import { IDataStoreAliasMessage } from "./dataStore.js";
14
15
  import { GarbageCollectionMessage } from "./gc/index.js";
15
16
  import { IChunkedOp } from "./opLifecycle/index.js";
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ICompressionRuntimeOptions } from "../containerRuntime.js";
7
+
7
8
  import { BatchMessage, IBatch, IBatchCheckpoint } from "./definitions.js";
8
9
 
9
10
  export interface IBatchManagerOptions {
@@ -3,7 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IBatchMessage } from "@fluidframework/container-definitions";
6
+ import { IBatchMessage } from "@fluidframework/container-definitions/internal";
7
+
7
8
  import { CompressionAlgorithms } from "../containerRuntime.js";
8
9
 
9
10
  /**
@@ -5,10 +5,12 @@
5
5
 
6
6
  import { IsoBuffer } from "@fluid-internal/client-utils";
7
7
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { assert } from "@fluidframework/core-utils";
9
- import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils";
8
+ import { assert } from "@fluidframework/core-utils/internal";
9
+ import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils/internal";
10
10
  import { compress } from "lz4js";
11
+
11
12
  import { CompressionAlgorithms } from "../containerRuntime.js";
13
+
12
14
  import { estimateSocketSize } from "./batchManager.js";
13
15
  import { BatchMessage, IBatch } from "./definitions.js";
14
16
 
@@ -5,10 +5,11 @@
5
5
 
6
6
  import { IsoBuffer, Uint8ArrayToString } from "@fluid-internal/client-utils";
7
7
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { assert } from "@fluidframework/core-utils";
8
+ import { assert } from "@fluidframework/core-utils/internal";
9
9
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
10
- import { createChildLogger } from "@fluidframework/telemetry-utils";
10
+ import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
11
11
  import { decompress } from "lz4js";
12
+
12
13
  import { CompressionAlgorithms } from "../containerRuntime.js";
13
14
  import { IBatchMetadata } from "../metadata.js";
14
15
 
@@ -4,9 +4,10 @@
4
4
  */
5
5
 
6
6
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
- import { assert } from "@fluidframework/core-utils";
7
+ import { assert } from "@fluidframework/core-utils/internal";
8
8
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
9
- import { createChildLogger } from "@fluidframework/telemetry-utils";
9
+ import { createChildLogger } from "@fluidframework/telemetry-utils/internal";
10
+
10
11
  import { IBatch } from "./definitions.js";
11
12
 
12
13
  /**
@@ -3,16 +3,18 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IBatchMessage } from "@fluidframework/container-definitions";
6
+ import { IBatchMessage } from "@fluidframework/container-definitions/internal";
7
7
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { assert } from "@fluidframework/core-utils";
8
+ import { assert } from "@fluidframework/core-utils/internal";
9
9
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
10
10
  import {
11
11
  DataCorruptionError,
12
12
  createChildLogger,
13
13
  extractSafePropertiesFromMessage,
14
- } from "@fluidframework/telemetry-utils";
14
+ } from "@fluidframework/telemetry-utils/internal";
15
+
15
16
  import { ContainerMessageType, ContainerRuntimeChunkedOpMessage } from "../messageTypes.js";
17
+
16
18
  import { estimateSocketSize } from "./batchManager.js";
17
19
  import { BatchMessage, IBatch, IChunkedOp } from "./definitions.js";
18
20
 
@@ -3,17 +3,20 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { IBatchMessage, ICriticalContainerError } from "@fluidframework/container-definitions";
6
+ import { ICriticalContainerError } from "@fluidframework/container-definitions";
7
+ import { IBatchMessage } from "@fluidframework/container-definitions/internal";
7
8
  import { ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { assert } from "@fluidframework/core-utils";
9
+ import { assert } from "@fluidframework/core-utils/internal";
9
10
  import {
10
11
  GenericError,
11
12
  MonitoringContext,
12
13
  UsageError,
13
14
  createChildMonitoringContext,
14
- } from "@fluidframework/telemetry-utils";
15
+ } from "@fluidframework/telemetry-utils/internal";
16
+
15
17
  import { ICompressionRuntimeOptions } from "../containerRuntime.js";
16
18
  import { IPendingBatchMessage, PendingStateManager } from "../pendingStateManager.js";
19
+
17
20
  import {
18
21
  BatchManager,
19
22
  BatchSequenceNumbers,
@@ -4,6 +4,7 @@
4
4
  */
5
5
 
6
6
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
7
+
7
8
  import {
8
9
  ContainerMessageType,
9
10
  type InboundContainerRuntimeMessage,
@@ -11,6 +12,7 @@ import {
11
12
  type InboundSequencedContainerRuntimeMessageOrSystemMessage,
12
13
  type InboundSequencedRecentlyAddedContainerRuntimeMessage,
13
14
  } from "../messageTypes.js";
15
+
14
16
  import { OpDecompressor } from "./opDecompressor.js";
15
17
  import { OpGroupingManager, isGroupedBatch } from "./opGroupingManager.js";
16
18
  import { OpSplitter, isChunkedMessage } from "./opSplitter.js";
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-dev-rc.3.0.0.250606";
9
+ export const pkgVersion = "2.0.0-dev-rc.3.0.0.254274";
@@ -3,13 +3,13 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import Deque from "double-ended-queue";
7
-
8
6
  import { ICriticalContainerError } from "@fluidframework/container-definitions";
9
7
  import { IDisposable } from "@fluidframework/core-interfaces";
10
- import { assert, Lazy } from "@fluidframework/core-utils";
8
+ import { assert, Lazy } from "@fluidframework/core-utils/internal";
11
9
  import { ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
12
- import { DataProcessingError, ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
10
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
11
+ import { DataProcessingError } from "@fluidframework/telemetry-utils/internal";
12
+ import Deque from "double-ended-queue";
13
13
 
14
14
  import { InboundSequencedContainerRuntimeMessage } from "./messageTypes.js";
15
15
  import { IBatchMetadata } from "./metadata.js";
@@ -6,16 +6,17 @@
6
6
  import type { EventEmitter } from "@fluid-internal/client-utils";
7
7
  import { performance } from "@fluid-internal/client-utils";
8
8
  import { IDeltaManager } from "@fluidframework/container-definitions";
9
- import { assert } from "@fluidframework/core-utils";
10
- import { isRuntimeMessage } from "@fluidframework/driver-utils";
9
+ import { assert } from "@fluidframework/core-utils/internal";
10
+ import { isRuntimeMessage } from "@fluidframework/driver-utils/internal";
11
11
  import { IDocumentMessage, ISequencedDocumentMessage } from "@fluidframework/protocol-definitions";
12
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
12
13
  import {
13
14
  DataCorruptionError,
14
15
  DataProcessingError,
15
- ITelemetryLoggerExt,
16
16
  createChildLogger,
17
17
  extractSafePropertiesFromMessage,
18
- } from "@fluidframework/telemetry-utils";
18
+ } from "@fluidframework/telemetry-utils/internal";
19
+
19
20
  import { DeltaScheduler } from "./deltaScheduler.js";
20
21
  import { IBatchMetadata } from "./metadata.js";
21
22
  import { pkgVersion } from "./packageVersion.js";
@@ -6,8 +6,8 @@
6
6
  import {
7
7
  IDocumentStorageService,
8
8
  IDocumentStorageServicePolicies,
9
- } from "@fluidframework/driver-definitions";
10
- import { DocumentStorageServiceProxy } from "@fluidframework/driver-utils";
9
+ } from "@fluidframework/driver-definitions/internal";
10
+ import { DocumentStorageServiceProxy } from "@fluidframework/driver-utils/internal";
11
11
 
12
12
  /**
13
13
  * IDocumentStorageService proxy which intercepts requests if they can be satisfied by the blobs received in the
@@ -2,8 +2,11 @@
2
2
  * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
3
  * Licensed under the MIT License.
4
4
  */
5
- import { assert } from "@fluidframework/core-utils";
6
- import { DataProcessingError } from "@fluidframework/telemetry-utils";
5
+
6
+ import { assert } from "@fluidframework/core-utils/internal";
7
+ import { DataProcessingError } from "@fluidframework/telemetry-utils/internal";
8
+
9
+ import { pkgVersion } from "../packageVersion.js";
7
10
 
8
11
  /**
9
12
  * Descripe allowed type for properties in document schema.
@@ -12,7 +15,7 @@ import { DataProcessingError } from "@fluidframework/telemetry-utils";
12
15
  * we want them to continue to collaborate alongside clients who support that capability, but such capability is shipping dark for now.
13
16
  * @alpha
14
17
  */
15
- export type DocumentSchemaValueType = string | true | number | undefined;
18
+ export type DocumentSchemaValueType = string | string[] | true | number | undefined;
16
19
 
17
20
  /**
18
21
  * ID Compressor mode.
@@ -92,6 +95,18 @@ export interface IDocumentSchemaFeatures {
92
95
  compressionLz4: boolean;
93
96
  idCompressorMode: IdCompressorMode;
94
97
  opGroupingEnabled: boolean;
98
+
99
+ /**
100
+ * List of disallowed versions of the runtime.
101
+ * This option is sticky. Once a version of runtime is added to this list (when supplied to DocumentsSchemaController's constructor)
102
+ * it will be added to the list of disallowed versions and stored in document metadata.
103
+ * Each runtime checks if its version is in this list on container open. If it is, it immediately exits with error message
104
+ * indicating to the user that this version is no longer supported.
105
+ * Currently there is no mechanism to remove version from this list. I.e. If it was once added to the list,
106
+ * it gets added to any document metadata (documents that gets open by this runtime) and there is no way to clear it from document's
107
+ * metadata.
108
+ */
109
+ disallowedVersions: string[];
95
110
  }
96
111
 
97
112
  /**
@@ -181,6 +196,22 @@ class IdCompressorProperty extends MultiChoice {
181
196
  }
182
197
  }
183
198
 
199
+ class CheckVersions implements IProperty<string[] | undefined> {
200
+ public or(currentDocSchema: string[] = [], desiredDocSchema: string[] = []) {
201
+ const set = new Set<string>([...currentDocSchema, ...desiredDocSchema]);
202
+ return arrayToProp([...set.values()]);
203
+ }
204
+
205
+ // Once version is there, it stays there forever.
206
+ public and(currentDocSchema: string[] = [], desiredDocSchema: string[] = []) {
207
+ return this.or(currentDocSchema, desiredDocSchema);
208
+ }
209
+
210
+ public validate(t: unknown) {
211
+ return t === undefined || (Array.isArray(t) && !t.includes(pkgVersion));
212
+ }
213
+ }
214
+
184
215
  /**
185
216
  * Helper structure to valida if a schema is compatible with existing code.
186
217
  */
@@ -189,6 +220,7 @@ const documentSchemaSupportedConfigs = {
189
220
  idCompressorMode: new IdCompressorProperty(["delayed", "on"]),
190
221
  opGroupingEnabled: new TrueOrUndefined(),
191
222
  compressionLz4: new TrueOrUndefined(),
223
+ disallowedVersions: new CheckVersions(),
192
224
  };
193
225
 
194
226
  /**
@@ -208,7 +240,7 @@ function checkRuntimeCompatibility(documentSchema?: IDocumentSchema) {
208
240
  if (documentSchema.version !== currentDocumentVersionSchema) {
209
241
  throw DataProcessingError.create(
210
242
  msg,
211
- "checkRuntimeCompat",
243
+ "checkRuntimeCompat1",
212
244
  undefined, // message
213
245
  {
214
246
  runtimeSchemaVersion: documentSchema.version,
@@ -238,7 +270,7 @@ function checkRuntimeCompatibility(documentSchema?: IDocumentSchema) {
238
270
  const value = documentSchema[unknownProperty];
239
271
  throw DataProcessingError.create(
240
272
  msg,
241
- "checkRuntimeCompat",
273
+ "checkRuntimeCompat2",
242
274
  undefined, // message
243
275
  {
244
276
  codeVersion: currentDocumentVersionSchema,
@@ -314,6 +346,10 @@ function boolToProp(b: boolean) {
314
346
  return b ? true : undefined;
315
347
  }
316
348
 
349
+ function arrayToProp(arr: string[]) {
350
+ return arr.length === 0 ? undefined : arr;
351
+ }
352
+
317
353
  /* eslint-disable jsdoc/check-indentation */
318
354
 
319
355
  /**
@@ -345,6 +381,18 @@ function boolToProp(b: boolean) {
345
381
  * clients who do not understand such feature will continue to fail to open such documents, as such documents very
346
382
  * likely contain data in a new format.
347
383
  *
384
+ * Controller operates with 4 schemas:
385
+ * - document schema: whatever we loaded from summary metadata + ops. It follows eventuall consistency rules (i.e. like DDS).
386
+ * - desired schema - what client is asking for to have (i.e. all the desired settings, based on runtime options / feature gates).
387
+ * - session schema - current session schema. It's "and" of the above two schemas.
388
+ * - future schema - "or" of document and desires schemas.
389
+ *
390
+ * "or" & "and" operators are defined individually for each property. For Boolean properties it's literally &&, || operators.
391
+ * But for other properties it's more nuanced.
392
+ *
393
+ * Whenver document schema does not match future schema, controller will send an op that attempts to changs documents schema to
394
+ * future schema.
395
+ *
348
396
  * Users of this class need to use DocumentsSchemaController.sessionSchema to determine what features can be used.
349
397
  *
350
398
  * There are two modes this class can operate:
@@ -392,12 +440,10 @@ export class DocumentsSchemaController {
392
440
 
393
441
  /**
394
442
  * Constructs DocumentsSchemaController that controls current schema and processes around it, including changes in schema.
395
- * @param explicitSchemaControl - Tells if schema changes are done implicitly (without ops - legacy behavior), or go through formal schema change ops process.
396
443
  * @param existing - Is the document existing document, or a new doc.
397
444
  * @param documentMetadataSchema - current document's schema, if present.
398
- * @param compressionAlgorithm - desired compression algorith to use
399
- * @param idCompressorModeArg - desired ID compressor mode to use
400
- * @param opGroupingEnabled - true if it's desired to use op grouping.
445
+ * @param features - features of the document schema that current session wants to see enabled.
446
+ * @param onSchemaChange - callback that is called whenever schema is changed (not called on creation / load, only when processing document schema change ops)
401
447
  */
402
448
  constructor(
403
449
  existing: boolean,
@@ -407,6 +453,12 @@ export class DocumentsSchemaController {
407
453
  ) {
408
454
  checkRuntimeCompatibility(documentMetadataSchema);
409
455
 
456
+ // For simplicity, let's only support new schema features for explicit schema control mode
457
+ assert(
458
+ features.disallowedVersions.length === 0 || features.explicitSchemaControl,
459
+ "not supported",
460
+ );
461
+
410
462
  this.documentSchema =
411
463
  (documentMetadataSchema as IDocumentSchemaCurrent) ??
412
464
  ({
@@ -434,6 +486,7 @@ export class DocumentsSchemaController {
434
486
  compressionLz4: boolToProp(features.compressionLz4),
435
487
  idCompressorMode: features.idCompressorMode,
436
488
  opGroupingEnabled: boolToProp(features.opGroupingEnabled),
489
+ disallowedVersions: arrayToProp(features.disallowedVersions),
437
490
  },
438
491
  };
439
492
 
@@ -479,23 +532,29 @@ export class DocumentsSchemaController {
479
532
  return schema;
480
533
  }
481
534
 
482
- public onMessageSent(send: (content: IDocumentSchemaChangeMessage) => void) {
535
+ /**
536
+ * Called by Container runtime whenever it is about to send some op.
537
+ * It gives opportunity for controller to issue its own ops - we do not want to send ops if there are no local changes in document.
538
+ * @returns Optional message to send.
539
+ */
540
+ public maybeSendSchemaMessage(): IDocumentSchemaChangeMessage | undefined {
483
541
  if (this.sendOp && this.futureSchema !== undefined) {
484
542
  assert(
485
543
  this.explicitSchemaControl &&
486
544
  this.futureSchema.runtime.explicitSchemaControl === true,
487
545
  "not legacy",
488
546
  );
489
- send({
547
+ return {
490
548
  ...this.futureSchema,
491
549
  refSeq: this.documentSchema.refSeq,
492
- });
550
+ };
493
551
  }
494
552
  this.sendOp = false;
495
553
  }
496
554
 
497
555
  /**
498
556
  * Process document schema change message
557
+ * Called by ContainerRuntime whenever it sees document schema messages.
499
558
  * @param content - content of the message
500
559
  * @param local - whether op is local
501
560
  * @param sequenceNumber - sequence number of the op
@@ -8,13 +8,11 @@
8
8
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
9
9
  import { IDeltaManager } from "@fluidframework/container-definitions";
10
10
  import { IEvent, IEventProvider, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
11
- import { assert } from "@fluidframework/core-utils";
11
+ import { assert } from "@fluidframework/core-utils/internal";
12
12
  import { IClient, IQuorumClients, ISequencedClient } from "@fluidframework/protocol-definitions";
13
- import {
14
- ITelemetryLoggerExt,
15
- UsageError,
16
- createChildLogger,
17
- } from "@fluidframework/telemetry-utils";
13
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
14
+ import { UsageError, createChildLogger } from "@fluidframework/telemetry-utils/internal";
15
+
18
16
  import { summarizerClientType } from "./summarizerClientElection.js";
19
17
 
20
18
  // helper types for recursive readonly.
@@ -3,7 +3,8 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { assert, Deferred } from "@fluidframework/core-utils";
6
+ import { assert, Deferred } from "@fluidframework/core-utils/internal";
7
+
7
8
  import {
8
9
  IConnectableRuntime,
9
10
  ISummaryCancellationToken,
@@ -5,7 +5,7 @@
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IDisposable, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
8
- import { assert, Deferred, PromiseTimer, delay } from "@fluidframework/core-utils";
8
+ import { assert, Deferred, PromiseTimer, delay } from "@fluidframework/core-utils/internal";
9
9
  import { DriverErrorTypes } from "@fluidframework/driver-definitions";
10
10
  import { ISequencedDocumentMessage, MessageType } from "@fluidframework/protocol-definitions";
11
11
  import {
@@ -14,9 +14,11 @@ import {
14
14
  createChildLogger,
15
15
  createChildMonitoringContext,
16
16
  isFluidError,
17
- } from "@fluidframework/telemetry-utils";
17
+ } from "@fluidframework/telemetry-utils/internal";
18
+
18
19
  import { ISummaryConfiguration } from "../containerRuntime.js";
19
20
  import { opSize } from "../opProperties.js";
21
+
20
22
  import { SummarizeHeuristicRunner } from "./summarizerHeuristics.js";
21
23
  import {
22
24
  EnqueueSummarizeResult,
@@ -5,16 +5,18 @@
5
5
 
6
6
  import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IFluidHandleContext } from "@fluidframework/core-interfaces";
8
- import { Deferred } from "@fluidframework/core-utils";
8
+ import { Deferred } from "@fluidframework/core-utils/internal";
9
+ import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
9
10
  import {
10
11
  IFluidErrorBase,
11
- ITelemetryLoggerExt,
12
12
  LoggingError,
13
13
  UsageError,
14
14
  createChildLogger,
15
15
  wrapErrorAndLog,
16
- } from "@fluidframework/telemetry-utils";
16
+ } from "@fluidframework/telemetry-utils/internal";
17
+
17
18
  import { ISummaryConfiguration } from "../containerRuntime.js";
19
+
18
20
  import { ICancellableSummarizerController } from "./runWhileConnectedCoordinator.js";
19
21
  import { RunningSummarizer } from "./runningSummarizer.js";
20
22
  import { SummarizeHeuristicData } from "./summarizerHeuristics.js";
@@ -7,6 +7,7 @@ import { TypedEventEmitter } from "@fluid-internal/client-utils";
7
7
  import { IEvent, IEventProvider } from "@fluidframework/core-interfaces";
8
8
  import { IClientDetails, MessageType } from "@fluidframework/protocol-definitions";
9
9
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
10
+
10
11
  import {
11
12
  IOrderedClientElection,
12
13
  ISerializedElection,
@@ -3,9 +3,11 @@
3
3
  * Licensed under the MIT License.
4
4
  */
5
5
 
6
- import { Timer } from "@fluidframework/core-utils";
6
+ import { Timer } from "@fluidframework/core-utils/internal";
7
7
  import { ITelemetryLoggerExt } from "@fluidframework/telemetry-utils";
8
+
8
9
  import { ISummaryConfigurationHeuristics } from "../containerRuntime.js";
10
+
9
11
  import {
10
12
  ISummarizeAttempt,
11
13
  ISummarizeHeuristicData,