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

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 +34 -33
  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 +3 -2
  10. package/dist/channelCollection.d.ts.map +1 -1
  11. package/dist/channelCollection.js +71 -71
  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 +66 -38
  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 +177 -150
  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 +8 -8
  33. package/dist/dataStoreContext.d.ts.map +1 -1
  34. package/dist/dataStoreContext.js +60 -60
  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 +3 -2
  182. package/lib/channelCollection.d.ts.map +1 -1
  183. package/lib/channelCollection.js +6 -6
  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 +66 -38
  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 +56 -27
  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 +8 -8
  205. package/lib/dataStoreContext.d.ts.map +1 -1
  206. package/lib/dataStoreContext.js +6 -6
  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 +18 -30
  348. package/src/batchTracker.ts +3 -2
  349. package/src/blobManager.ts +87 -56
  350. package/src/channelCollection.ts +14 -11
  351. package/src/connectionTelemetry.ts +4 -4
  352. package/src/containerHandleContext.ts +2 -1
  353. package/src/containerRuntime.ts +90 -58
  354. package/src/dataStore.ts +5 -3
  355. package/src/dataStoreContext.ts +16 -13
  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
@@ -1,689 +0,0 @@
1
- /*!
2
- * Copyright (c) Microsoft Corporation and contributors. All rights reserved.
3
- * Licensed under the MIT License.
4
- */
5
- import { strict as assert } from "assert";
6
- import { MockLogger, createChildLogger, mixinMonitoringContext, } from "@fluidframework/telemetry-utils";
7
- import { useFakeTimers } from "sinon";
8
- import { GCNodeType, GarbageCollector, defaultInactiveTimeoutMs, defaultSessionExpiryDurationMs, defaultSweepGracePeriodMs, disableDatastoreSweepKey, gcDisableDataStoreSweepOptionName, gcDisableThrowOnTombstoneLoadOptionName, gcGenerationOptionName, gcTestModeKey, gcVersionUpgradeToV4Key, nextGCVersion, oneDayMs, runGCKey, runSessionExpiryKey, runSweepKey, stableGCVersion, throwOnTombstoneLoadOverrideKey, } from "../../gc/index.js";
9
- import { pkgVersion } from "../../packageVersion.js";
10
- import { createTestConfigProvider } from "./gcUnitTestHelpers.js";
11
- describe("Garbage Collection configurations", () => {
12
- const testPkgPath = ["testPkg"];
13
- const configProvider = createTestConfigProvider();
14
- let mockLogger;
15
- let mc;
16
- let clock;
17
- // The default GC data returned by `getGCData` on which GC is run. Update this to update the referenced graph.
18
- let defaultGCData = { gcNodes: {} };
19
- const customSessionExpiryDurationMs = defaultSessionExpiryDurationMs + 1;
20
- const testOverrideInactiveTimeoutKey = "Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs";
21
- const testOverrideTombstoneTimeoutKey = "Fluid.GarbageCollection.TestOverride.TombstoneTimeoutMs";
22
- const testOverrideSessionExpiryMsKey = "Fluid.GarbageCollection.TestOverride.SessionExpiryMs";
23
- let gc;
24
- const createGcWithPrivateMembers = (gcMetadata, gcOptions, isSummarizerClient) => {
25
- const metadata = gcMetadata && {
26
- summaryFormatVersion: 1,
27
- message: undefined,
28
- ...gcMetadata,
29
- };
30
- return createGarbageCollector({ metadata, gcOptions }, undefined /* gcBlobsMap */, undefined /* closeFn */, isSummarizerClient);
31
- };
32
- function createGarbageCollector(createParams = {}, gcBlobsMap = new Map(), closeFn = () => { }, isSummarizerClient = true) {
33
- const getNodeType = (nodePath) => {
34
- if (nodePath.split("/").length !== 2) {
35
- return GCNodeType.Other;
36
- }
37
- return GCNodeType.DataStore;
38
- };
39
- // The runtime to be passed to the garbage collector.
40
- const gcRuntime = {
41
- updateStateBeforeGC: async () => { },
42
- getGCData: async (fullGC) => defaultGCData,
43
- updateUsedRoutes: (usedRoutes) => {
44
- return { totalNodeCount: 0, unusedNodeCount: 0 };
45
- },
46
- deleteSweepReadyNodes: (sweepReadyRoutes) => {
47
- return [];
48
- },
49
- updateTombstonedRoutes: (tombstoneRoutes) => { },
50
- getNodeType,
51
- getCurrentReferenceTimestampMs: () => Date.now(),
52
- closeFn,
53
- };
54
- return GarbageCollector.create({
55
- ...createParams,
56
- runtime: gcRuntime,
57
- gcOptions: createParams.gcOptions ?? {},
58
- baseSnapshot: createParams.baseSnapshot,
59
- baseLogger: createChildLogger({ logger: mc.logger }),
60
- existing: createParams.metadata !== undefined /* existing */,
61
- metadata: createParams.metadata,
62
- createContainerMetadata: {
63
- createContainerRuntimeVersion: pkgVersion,
64
- createContainerTimestamp: Date.now(),
65
- },
66
- isSummarizerClient,
67
- readAndParseBlob: async (id) => gcBlobsMap.get(id),
68
- getNodePackagePath: async (nodeId) => testPkgPath,
69
- getLastSummaryTimestampMs: () => Date.now(),
70
- submitMessage: (message) => { },
71
- });
72
- }
73
- before(() => {
74
- clock = useFakeTimers();
75
- });
76
- beforeEach(() => {
77
- gc = undefined;
78
- mockLogger = new MockLogger();
79
- // To ensure inactive timeout is less than tombstone timeout.
80
- configProvider.set(testOverrideInactiveTimeoutKey, 1);
81
- mc = mixinMonitoringContext(mockLogger, configProvider);
82
- });
83
- afterEach(() => {
84
- clock.reset();
85
- configProvider.clear();
86
- defaultGCData = { gcNodes: {} };
87
- gc?.dispose();
88
- });
89
- after(() => {
90
- clock.restore();
91
- });
92
- describe("Existing container", () => {
93
- it("No metadata", () => {
94
- gc = createGcWithPrivateMembers({});
95
- assert(!gc.configs.gcEnabled, "gcEnabled incorrect");
96
- assert(!gc.configs.shouldRunGC, "shouldRunGC incorrect");
97
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
98
- assert.equal(gc.configs.shouldRunSweep, "NO", "shouldRunSweep incorrect");
99
- assert(gc.configs.sessionExpiryTimeoutMs === undefined, "sessionExpiryTimeoutMs incorrect");
100
- assert(gc.configs.tombstoneTimeoutMs === undefined, "tombstoneTimeoutMs incorrect");
101
- assert.equal(gc.summaryStateTracker.latestSummaryGCVersion, 0, "latestSummaryGCVersion incorrect");
102
- });
103
- it("gcFeature 0", () => {
104
- gc = createGcWithPrivateMembers({ gcFeature: 0 });
105
- assert(!gc.configs.gcEnabled, "gcEnabled incorrect");
106
- assert.equal(gc.summaryStateTracker.latestSummaryGCVersion, 0, "latestSummaryGCVersion incorrect");
107
- });
108
- it("gcFeature 0, Sweep enabled via gcGeneration", () => {
109
- gc = createGcWithPrivateMembers({ gcFeature: 0, gcFeatureMatrix: { gcGeneration: 0 } }, { [gcGenerationOptionName]: 0 });
110
- assert(!gc.configs.gcEnabled, "gcEnabled incorrect");
111
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
112
- assert.equal(gc.summaryStateTracker.latestSummaryGCVersion, 0, "latestSummaryGCVersion incorrect");
113
- });
114
- it("gcFeature 1", () => {
115
- gc = createGcWithPrivateMembers({ gcFeature: 1 });
116
- assert(gc.configs.gcEnabled, "gcEnabled incorrect");
117
- assert.equal(gc.summaryStateTracker.latestSummaryGCVersion, 1, "latestSummaryGCVersion incorrect");
118
- });
119
- it("sweepEnabled value ignored", () => {
120
- gc = createGcWithPrivateMembers({ sweepEnabled: true }, { [gcGenerationOptionName]: 1 });
121
- assert(!gc.configs.sweepEnabled, "sweepEnabled incorrect");
122
- });
123
- it("sessionExpiryTimeoutMs set (tombstoneTimeoutMs unset)", () => {
124
- gc = createGcWithPrivateMembers({
125
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
126
- });
127
- assert.equal(gc.configs.sessionExpiryTimeoutMs, customSessionExpiryDurationMs, "sessionExpiryTimeoutMs incorrect");
128
- assert.equal(gc.configs.tombstoneTimeoutMs, customSessionExpiryDurationMs + 6 * oneDayMs, "tombstoneTimeoutMs incorrect");
129
- });
130
- it("tombstoneTimeoutMs set", () => {
131
- gc = createGcWithPrivateMembers({ tombstoneTimeoutMs: 123 });
132
- assert.equal(gc.configs.tombstoneTimeoutMs, 123, "tombstoneTimeoutMs incorrect");
133
- });
134
- it("Metadata Roundtrip", () => {
135
- const inputMetadata = {
136
- sweepEnabled: true,
137
- gcFeature: 1,
138
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
139
- tombstoneTimeoutMs: 123,
140
- gcFeatureMatrix: { gcGeneration: 1 },
141
- };
142
- gc = createGcWithPrivateMembers(inputMetadata, {
143
- [gcGenerationOptionName]: 2, // 2 should not replace already-persisted value of 1
144
- });
145
- const outputMetadata = gc.getMetadata();
146
- const expectedOutputMetadata = {
147
- ...inputMetadata,
148
- sweepEnabled: false,
149
- gcFeature: stableGCVersion,
150
- };
151
- assert.deepEqual(outputMetadata, expectedOutputMetadata, "getMetadata returned different metadata than loaded from");
152
- });
153
- it("Metadata Roundtrip - old file with tombstoneGeneration", () => {
154
- const inputMetadata = {
155
- sweepEnabled: true,
156
- gcFeature: 1,
157
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
158
- tombstoneTimeoutMs: 123,
159
- gcFeatureMatrix: { tombstoneGeneration: 1 }, // legacy file before gcGeneration
160
- };
161
- gc = createGcWithPrivateMembers(inputMetadata, {
162
- [gcGenerationOptionName]: 2, // Will not be persisted - legacy file will only ever be stamped with tombstoneGeneration
163
- });
164
- const outputMetadata = gc.getMetadata();
165
- const expectedOutputMetadata = {
166
- ...inputMetadata,
167
- sweepEnabled: false,
168
- gcFeature: stableGCVersion,
169
- };
170
- assert.deepEqual(outputMetadata, expectedOutputMetadata, "getMetadata returned different metadata than loaded from");
171
- });
172
- it("Metadata Roundtrip transition to gcGeneration from tombstoneGeneration", () => {
173
- const inputMetadata = {
174
- sweepEnabled: true,
175
- gcFeature: 1,
176
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
177
- tombstoneTimeoutMs: 123,
178
- gcFeatureMatrix: { gcGeneration: 1 },
179
- };
180
- // An app may write both Generation options to ease the transition. Only gcGeneration will be persisted
181
- // (and previous to the change introducing gcGeneration, only tombstoneGeneration would have been persisted).
182
- gc = createGcWithPrivateMembers(inputMetadata, {
183
- [gcGenerationOptionName]: 1,
184
- gcTombstoneGeneration: 1, // Legacy - will not be persisted but is ok to pass in
185
- });
186
- const outputMetadata = gc.getMetadata();
187
- const expectedOutputMetadata = {
188
- ...inputMetadata,
189
- sweepEnabled: false,
190
- gcFeature: stableGCVersion,
191
- };
192
- assert.deepEqual(outputMetadata, expectedOutputMetadata, "getMetadata returned different metadata than loaded from");
193
- });
194
- it("Metadata Roundtrip with GC version upgrade to v4 enabled", () => {
195
- configProvider.set(gcVersionUpgradeToV4Key, true);
196
- const inputMetadata = {
197
- sweepEnabled: true,
198
- gcFeature: 1,
199
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
200
- tombstoneTimeoutMs: 123,
201
- gcFeatureMatrix: { gcGeneration: 1 },
202
- };
203
- gc = createGcWithPrivateMembers(inputMetadata);
204
- const outputMetadata = gc.getMetadata();
205
- const expectedOutputMetadata = {
206
- ...inputMetadata,
207
- sweepEnabled: false,
208
- gcFeature: nextGCVersion,
209
- };
210
- assert.deepEqual(outputMetadata, expectedOutputMetadata, "getMetadata returned different metadata than loaded from");
211
- });
212
- it("Metadata Roundtrip with GC version upgrade to v4 disabled", () => {
213
- configProvider.set(gcVersionUpgradeToV4Key, false);
214
- const inputMetadata = {
215
- sweepEnabled: true,
216
- gcFeature: 1,
217
- sessionExpiryTimeoutMs: customSessionExpiryDurationMs,
218
- tombstoneTimeoutMs: 123,
219
- gcFeatureMatrix: { gcGeneration: 1 },
220
- };
221
- gc = createGcWithPrivateMembers(inputMetadata);
222
- const outputMetadata = gc.getMetadata();
223
- const expectedOutputMetadata = {
224
- ...inputMetadata,
225
- sweepEnabled: false,
226
- gcFeature: stableGCVersion,
227
- };
228
- assert.deepEqual(outputMetadata, expectedOutputMetadata, "getMetadata returned different metadata than loaded from");
229
- });
230
- });
231
- describe("New Container", () => {
232
- it("No options", () => {
233
- gc = createGcWithPrivateMembers(undefined /* metadata */, {});
234
- assert(gc.configs.gcEnabled, "gcEnabled incorrect");
235
- assert(gc.configs.shouldRunGC, "shouldRunGC incorrect");
236
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect"); // Sweep is always allowed for a new container
237
- assert.equal(gc.configs.shouldRunSweep, "NO", "shouldRunSweep incorrect");
238
- assert(gc.configs.sessionExpiryTimeoutMs !== undefined, "sessionExpiryTimeoutMs incorrect");
239
- assert(gc.configs.tombstoneTimeoutMs !== undefined, "tombstoneTimeoutMs incorrect");
240
- assert.equal(gc.summaryStateTracker.latestSummaryGCVersion, stableGCVersion, "latestSummaryGCVersion incorrect");
241
- });
242
- it("gcAllowed true", () => {
243
- gc = createGcWithPrivateMembers(undefined /* metadata */, { gcAllowed: true });
244
- assert(gc.configs.gcEnabled, "gcEnabled incorrect");
245
- });
246
- it("gcAllowed false", () => {
247
- gc = createGcWithPrivateMembers(undefined /* metadata */, { gcAllowed: false });
248
- assert(!gc.configs.gcEnabled, "gcEnabled incorrect");
249
- });
250
- it("Sweep enabled via gcGeneration, gcAllowed true", () => {
251
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
252
- gcAllowed: true,
253
- [gcGenerationOptionName]: 1,
254
- });
255
- assert(gc.configs.gcEnabled, "gcEnabled incorrect");
256
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
257
- assert(gc.configs.tombstoneTimeoutMs !== undefined, "tombstoneTimeoutMs incorrect");
258
- assert(gc.configs.sessionExpiryTimeoutMs !== undefined, "sessionExpiryTimeoutMs incorrect");
259
- });
260
- it("Sweep enabled via gcGeneration, gcAllowed true, sessionExpiry off", () => {
261
- configProvider.set(runSessionExpiryKey, false);
262
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
263
- gcAllowed: true,
264
- [gcGenerationOptionName]: 1,
265
- });
266
- assert(gc.configs.gcEnabled, "gcEnabled incorrect");
267
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
268
- assert(gc.configs.sessionExpiryTimeoutMs === undefined, "sessionExpiryTimeoutMs incorrect");
269
- assert(gc.configs.tombstoneTimeoutMs === undefined, "tombstoneTimeoutMs incorrect");
270
- });
271
- it("TestOverride.TombstoneTimeoutMs set, sessionExpiry on", () => {
272
- configProvider.set(testOverrideTombstoneTimeoutKey, 123);
273
- gc = createGcWithPrivateMembers(undefined /* metadata */, {});
274
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
275
- assert(gc.configs.sessionExpiryTimeoutMs === defaultSessionExpiryDurationMs, "sessionExpiryTimeoutMs incorrect");
276
- assert(gc.configs.tombstoneTimeoutMs === 123, "tombstoneTimeoutMs incorrect");
277
- });
278
- it("TestOverride.TombstoneTimeoutMs set, sessionExpiry off", () => {
279
- configProvider.set(testOverrideTombstoneTimeoutKey, 123);
280
- configProvider.set(runSessionExpiryKey, false);
281
- gc = createGcWithPrivateMembers(undefined /* metadata */, {});
282
- assert(gc.configs.sweepEnabled, "sweepEnabled incorrect");
283
- assert(gc.configs.sessionExpiryTimeoutMs === undefined, "sessionExpiryTimeoutMs incorrect");
284
- assert(gc.configs.tombstoneTimeoutMs === 123, "tombstoneTimeoutMs incorrect");
285
- });
286
- it("Metadata Roundtrip", () => {
287
- const expectedMetadata = {
288
- sweepEnabled: false,
289
- gcFeature: stableGCVersion,
290
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
291
- tombstoneTimeoutMs: defaultSessionExpiryDurationMs + 6 * oneDayMs,
292
- gcFeatureMatrix: { gcGeneration: 2 },
293
- };
294
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
295
- [gcGenerationOptionName]: 2,
296
- });
297
- const outputMetadata = gc.getMetadata();
298
- assert.deepEqual(outputMetadata, expectedMetadata, "getMetadata returned different metadata than expected");
299
- });
300
- it("Metadata Roundtrip with GC version upgrade to v4 enabled", () => {
301
- configProvider.set(gcVersionUpgradeToV4Key, true);
302
- const expectedMetadata = {
303
- sweepEnabled: false,
304
- gcFeature: nextGCVersion,
305
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
306
- tombstoneTimeoutMs: defaultSessionExpiryDurationMs + 6 * oneDayMs,
307
- gcFeatureMatrix: undefined,
308
- };
309
- gc = createGcWithPrivateMembers(undefined /* metadata */, {});
310
- const outputMetadata = gc.getMetadata();
311
- assert.deepEqual(outputMetadata, expectedMetadata, "getMetadata returned different metadata than expected");
312
- });
313
- it("Metadata Roundtrip transition to gcGeneration from tombstoneGeneration", () => {
314
- const expectedMetadata = {
315
- sweepEnabled: false,
316
- gcFeature: stableGCVersion,
317
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
318
- tombstoneTimeoutMs: defaultSessionExpiryDurationMs + 6 * oneDayMs,
319
- gcFeatureMatrix: {
320
- gcGeneration: 2,
321
- // tombstoneGeneration will not be persisted
322
- },
323
- };
324
- // An app may write both Generation options to ease the transition. Only gcGeneration will be persisted
325
- // (and previous to the change introducing gcGeneration, only tombstoneGeneration would have been persisted).
326
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
327
- [gcGenerationOptionName]: 2,
328
- gcTombstoneGeneration: 2, // Legacy - will not be persisted but is ok to pass in
329
- });
330
- const outputMetadata = gc.getMetadata();
331
- assert.deepEqual(outputMetadata, expectedMetadata, "getMetadata returned different metadata than expected");
332
- });
333
- });
334
- describe("Session Expiry and Tombstone Timeout", () => {
335
- beforeEach(() => {
336
- configProvider.set("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs", 1); // To ensure it's less than tombstone timeout
337
- });
338
- // Config sources for Session Expiry:
339
- // 1. defaultSessionExpiryDurationMs in code
340
- // 2. IGCRuntimeOptions.sessionExpiryTimeoutMs
341
- // 3. IGCMetadata.sessionExpiryTimeoutMs
342
- // 4. "Fluid.GarbageCollection.TestOverride.SessionExpiryMs" setting
343
- // Config sources for Tombstone Timeout:
344
- // 1. IGCMetadata.tombstoneTimeoutMs
345
- // 2. IGCMetadata_Deprecated.sweepTimeoutMs (backfill from before two-stage sweep)
346
- // 3. Computed from Session Expiry, fixed upper bound for Snapshot Expiry and a fixed buffer (on create, or to backfill existing)
347
- // 4. "Fluid.GarbageCollection.TestOverride.TombstoneTimeoutMs" setting (only applicable on create)
348
- it("defaultSessionExpiryDurationMs", () => {
349
- gc = createGcWithPrivateMembers();
350
- assert.equal(gc.configs.sessionExpiryTimeoutMs, defaultSessionExpiryDurationMs, "sessionExpiryTimeoutMs incorrect");
351
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, defaultSessionExpiryDurationMs, "sessionExpiryTimer incorrect");
352
- assert.equal(gc.configs.tombstoneTimeoutMs, defaultSessionExpiryDurationMs + 6 * oneDayMs, "tombstoneTimeoutMs incorrect");
353
- });
354
- it("defaultSessionExpiryDurationMs, TestOverride.TombstoneTimeoutMs set", () => {
355
- configProvider.set(testOverrideTombstoneTimeoutKey, 7890);
356
- gc = createGcWithPrivateMembers();
357
- assert.equal(gc.configs.sessionExpiryTimeoutMs, defaultSessionExpiryDurationMs, "sessionExpiryTimeoutMs incorrect");
358
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, defaultSessionExpiryDurationMs, "sessionExpiryTimer incorrect");
359
- assert.equal(gc.configs.tombstoneTimeoutMs, 7890, "tombstoneTimeoutMs incorrect");
360
- });
361
- it("gcAllowed off, session expiry off", () => {
362
- gc = gc = createGcWithPrivateMembers(undefined /* metadata */, {
363
- gcAllowed: false,
364
- });
365
- assert.equal(gc.configs.sessionExpiryTimeoutMs, undefined, "sessionExpiryTimeoutMs incorrect");
366
- assert.equal(gc.sessionExpiryTimer, undefined, "sessionExpiryTimer incorrect");
367
- assert.equal(gc.configs.tombstoneTimeoutMs, undefined, "tombstoneTimeoutMs incorrect");
368
- });
369
- it("IGCRuntimeOptions.sessionExpiryTimeoutMs", () => {
370
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
371
- sessionExpiryTimeoutMs: 123,
372
- });
373
- assert.equal(gc.configs.sessionExpiryTimeoutMs, 123, "sessionExpiryTimeoutMs incorrect");
374
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, 123, "sessionExpiryTimer incorrect");
375
- assert.equal(gc.configs.tombstoneTimeoutMs, 123 + 6 * oneDayMs, "tombstoneTimeoutMs incorrect");
376
- });
377
- it("IGCMetadata.sessionExpiryTimeoutMs, backfill tombstoneTimeoutMs", () => {
378
- configProvider.set(testOverrideTombstoneTimeoutKey, 1337); // Should be ignored
379
- gc = createGcWithPrivateMembers({ sessionExpiryTimeoutMs: 456 } /* metadata */);
380
- assert.equal(gc.configs.sessionExpiryTimeoutMs, 456, "sessionExpiryTimeoutMs incorrect");
381
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, 456, "sessionExpiryTimer incorrect");
382
- assert.equal(gc.configs.tombstoneTimeoutMs, 456 + 6 * oneDayMs, "tombstoneTimeoutMs incorrect");
383
- });
384
- it("IGCMetadata.sessionExpiryTimeoutMs and IGCMetadata.tombstoneTimeoutMs", () => {
385
- configProvider.set(testOverrideTombstoneTimeoutKey, 1337); // Should be ignored
386
- gc = createGcWithPrivateMembers({ sessionExpiryTimeoutMs: 456, tombstoneTimeoutMs: 789 } /* metadata */);
387
- assert.equal(gc.configs.sessionExpiryTimeoutMs, 456, "sessionExpiryTimeoutMs incorrect");
388
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, 456, "sessionExpiryTimer incorrect");
389
- assert.equal(gc.configs.tombstoneTimeoutMs, 789, "tombstoneTimeoutMs incorrect");
390
- });
391
- it("IGCMetadata.tombstoneTimeoutMs only", () => {
392
- configProvider.set(testOverrideTombstoneTimeoutKey, 1337); // Should be ignored
393
- // This could happen if you used TestOverride.TombstoneTimeoutMs but had SessionExpiry disabled, then loaded that container.
394
- gc = createGcWithPrivateMembers({ tombstoneTimeoutMs: 789 } /* metadata */);
395
- assert.equal(gc.configs.sessionExpiryTimeoutMs, undefined, "sessionExpiryTimeoutMs incorrect");
396
- assert.equal(gc.sessionExpiryTimer, undefined, "sessionExpiryTimer incorrect");
397
- assert.equal(gc.configs.tombstoneTimeoutMs, 789, "tombstoneTimeoutMs incorrect");
398
- });
399
- it("IGCMetadata.tombstoneTimeoutMs - backfill from sweepTimeoutMs", () => {
400
- configProvider.set(testOverrideTombstoneTimeoutKey, 1337); // Should be ignored
401
- const metadata = {
402
- sweepTimeoutMs: 789, // Snapshot was generated by code built before the rename
403
- };
404
- gc = createGcWithPrivateMembers(metadata);
405
- assert.equal(gc.configs.sessionExpiryTimeoutMs, undefined, "sessionExpiryTimeoutMs incorrect");
406
- assert.equal(gc.sessionExpiryTimer, undefined, "sessionExpiryTimer incorrect");
407
- assert.equal(gc.configs.tombstoneTimeoutMs, 789, "tombstoneTimeoutMs incorrect");
408
- });
409
- it("RunSessionExpiry setting turned off", () => {
410
- configProvider.set(runSessionExpiryKey, false);
411
- configProvider.set(testOverrideSessionExpiryMsKey, 123); // This override should be ignored
412
- gc = createGcWithPrivateMembers();
413
- assert.equal(gc.configs.sessionExpiryTimeoutMs, undefined, "sessionExpiryTimeoutMs should be undefined if runSessionExpiryKey setting is false");
414
- assert.equal(gc.sessionExpiryTimer, undefined, "sessionExpiryTimer should be undefined if it's disabled");
415
- assert.equal(gc.configs.tombstoneTimeoutMs, undefined, "tombstoneTimeoutMs incorrect");
416
- });
417
- it("RunSessionExpiry setting turned off, TestOverride.TombstoneTimeoutMs set", () => {
418
- configProvider.set(runSessionExpiryKey, false);
419
- configProvider.set(testOverrideTombstoneTimeoutKey, 7890);
420
- configProvider.set(testOverrideSessionExpiryMsKey, 123); // This override should be ignored
421
- gc = createGcWithPrivateMembers();
422
- assert.equal(gc.configs.sessionExpiryTimeoutMs, undefined, "sessionExpiryTimeoutMs should be undefined if runSessionExpiryKey setting is false");
423
- assert.equal(gc.sessionExpiryTimer, undefined, "sessionExpiryTimer should be undefined if it's disabled");
424
- assert.equal(gc.configs.tombstoneTimeoutMs, 7890, "tombstoneTimeoutMs incorrect");
425
- });
426
- function testSessionExpiryMsOverride() {
427
- const expectedTombstoneTimeoutMs = defaultSessionExpiryDurationMs + 6 * oneDayMs;
428
- assert(!!gc, "PRECONDITION: gc must be set before calling this helper");
429
- assert.equal(gc.configs.sessionExpiryTimeoutMs, defaultSessionExpiryDurationMs, "sessionExpiryTimeoutMs incorrect");
430
- assert.equal(gc.sessionExpiryTimer.defaultTimeout, 789, "sessionExpiry used for timer should be the override value");
431
- assert.equal(gc.configs.tombstoneTimeoutMs, expectedTombstoneTimeoutMs, "tombstoneTimeoutMs incorrect");
432
- const expectedMetadata = {
433
- sweepEnabled: false,
434
- gcFeature: stableGCVersion,
435
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
436
- tombstoneTimeoutMs: expectedTombstoneTimeoutMs,
437
- gcFeatureMatrix: undefined,
438
- };
439
- const outputMetadata = gc.getMetadata();
440
- assert.deepEqual(outputMetadata, expectedMetadata, "getMetadata returned different metadata than expected");
441
- }
442
- it("TestOverride.SessionExpiryMs setting applied to timeout but not written to file - New Container", () => {
443
- configProvider.set(testOverrideSessionExpiryMsKey, 789);
444
- gc = createGcWithPrivateMembers();
445
- testSessionExpiryMsOverride();
446
- });
447
- it("TestOverride.SessionExpiryMs setting applied to timeout but not written to file - Existing Container", () => {
448
- configProvider.set(testOverrideSessionExpiryMsKey, 789);
449
- gc = createGcWithPrivateMembers({
450
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
451
- gcFeature: 1,
452
- } /* metadata */);
453
- testSessionExpiryMsOverride();
454
- });
455
- });
456
- describe("Session Behavior (e.g. 'shouldRun' fields)", () => {
457
- beforeEach(() => {
458
- configProvider.set("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs", 1); // To ensure it's less than tombstone timeout
459
- });
460
- describe("shouldRunGC", () => {
461
- const testCases = [
462
- { gcEnabled: false, disableGC: true, runGC: true, expectedResult: true },
463
- { gcEnabled: true, disableGC: false, runGC: false, expectedResult: false },
464
- { gcEnabled: true, disableGC: true, expectedResult: false },
465
- { gcEnabled: true, disableGC: false, expectedResult: true },
466
- { gcEnabled: true, expectedResult: true },
467
- { gcEnabled: false, expectedResult: false },
468
- ];
469
- testCases.forEach((testCase) => {
470
- it(`Test Case ${JSON.stringify(testCase)}`, () => {
471
- configProvider.set(runGCKey, testCase.runGC);
472
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
473
- gcAllowed: testCase.gcEnabled,
474
- disableGC: testCase.disableGC,
475
- });
476
- assert.equal(gc.configs.gcEnabled, testCase.gcEnabled, "PRECONDITION: gcEnabled set incorrectly");
477
- assert.equal(gc.configs.shouldRunGC, testCase.expectedResult, "shouldRunGC not set as expected");
478
- });
479
- });
480
- it("shouldRunGC should be true when gcVersionInEffect is newer than gcVersionInBaseSnapshot", () => {
481
- const gcVersionInBaseSnapshot = stableGCVersion - 1;
482
- gc = createGcWithPrivateMembers({ gcFeature: gcVersionInBaseSnapshot });
483
- assert.equal(gc.configs.gcEnabled, true, "PRECONDITION: gcEnabled set incorrectly");
484
- assert.equal(gc.configs.shouldRunGC, true, "shouldRunGC should be true");
485
- assert.equal(gc.configs.gcVersionInBaseSnapshot, gcVersionInBaseSnapshot, "gcVersionInBaseSnapshot set incorrectly");
486
- });
487
- it("shouldRunGC should be false when gcVersionInEffect is older than gcVersionInBaseSnapshot", () => {
488
- const gcVersionInBaseSnapshot = nextGCVersion + 1;
489
- gc = createGcWithPrivateMembers({ gcFeature: gcVersionInBaseSnapshot });
490
- assert.equal(gc.configs.gcEnabled, true, "PRECONDITION: gcEnabled set incorrectly");
491
- assert.equal(gc.configs.shouldRunGC, false, "shouldRunGC should be false");
492
- assert.equal(gc.configs.gcVersionInBaseSnapshot, gcVersionInBaseSnapshot, "gcVersionInBaseSnapshot set incorrectly");
493
- });
494
- });
495
- describe("shouldRunSweep", () => {
496
- const testCases = [
497
- {
498
- shouldRunGC: false,
499
- sweepEnabled_doc: true,
500
- sweepEnabled_session: true,
501
- disableDataStoreSweep: "viaGCOption",
502
- shouldRunSweep: true,
503
- expectedShouldRunSweep: "NO",
504
- },
505
- {
506
- shouldRunGC: true,
507
- sweepEnabled_doc: false,
508
- sweepEnabled_session: true,
509
- disableDataStoreSweep: "viaGCOption",
510
- expectedShouldRunSweep: "NO",
511
- },
512
- {
513
- shouldRunGC: true,
514
- sweepEnabled_doc: true,
515
- sweepEnabled_session: false,
516
- disableDataStoreSweep: "viaGCOption",
517
- expectedShouldRunSweep: "NO",
518
- },
519
- {
520
- shouldRunGC: true,
521
- sweepEnabled_doc: true,
522
- sweepEnabled_session: true,
523
- shouldRunSweep: false,
524
- disableDataStoreSweep: "viaGCOption",
525
- expectedShouldRunSweep: "NO",
526
- },
527
- {
528
- shouldRunGC: true,
529
- sweepEnabled_doc: true,
530
- sweepEnabled_session: false,
531
- shouldRunSweep: true,
532
- expectedShouldRunSweep: "YES",
533
- },
534
- {
535
- shouldRunGC: true,
536
- sweepEnabled_doc: true,
537
- sweepEnabled_session: true,
538
- expectedShouldRunSweep: "YES",
539
- },
540
- {
541
- shouldRunGC: true,
542
- sweepEnabled_doc: true,
543
- sweepEnabled_session: true,
544
- disableDataStoreSweep: "viaGCOption",
545
- expectedShouldRunSweep: "ONLY_BLOBS",
546
- },
547
- {
548
- shouldRunGC: true,
549
- sweepEnabled_doc: true,
550
- sweepEnabled_session: true,
551
- disableDataStoreSweep: "viaConfigProvider",
552
- expectedShouldRunSweep: "ONLY_BLOBS",
553
- },
554
- {
555
- shouldRunGC: true,
556
- sweepEnabled_doc: true,
557
- sweepEnabled_session: true,
558
- shouldRunSweep: true,
559
- disableDataStoreSweep: "viaGCOption",
560
- expectedShouldRunSweep: "ONLY_BLOBS",
561
- },
562
- ];
563
- testCases.forEach((testCase, index) => {
564
- it(`Test Case ${JSON.stringify(testCase)}`, () => {
565
- configProvider.set(runGCKey, testCase.shouldRunGC);
566
- configProvider.set(runSweepKey, testCase.shouldRunSweep);
567
- configProvider.set(disableDatastoreSweepKey, testCase.disableDataStoreSweep === "viaConfigProvider");
568
- gc = createGcWithPrivateMembers({
569
- gcFeatureMatrix: { gcGeneration: 1 },
570
- sessionExpiryTimeoutMs: defaultSessionExpiryDurationMs,
571
- } /* metadata */, {
572
- [gcDisableDataStoreSweepOptionName]: testCase.disableDataStoreSweep === "viaGCOption",
573
- enableGCSweep: testCase.sweepEnabled_session ? true : undefined,
574
- [gcGenerationOptionName]: testCase.sweepEnabled_doc ? 1 : 2,
575
- } /* gcOptions */);
576
- assert.equal(gc.configs.shouldRunGC, testCase.shouldRunGC, "PRECONDITION: shouldRunGC set incorrectly");
577
- assert.equal(gc.configs.sweepEnabled, testCase.sweepEnabled_doc, "PRECONDITION: sweepEnabled set incorrectly");
578
- assert.equal(gc.configs.shouldRunSweep, testCase.expectedShouldRunSweep, `shouldRunSweep not set as expected`);
579
- });
580
- });
581
- });
582
- describe("inactiveTimeoutMs", () => {
583
- beforeEach(() => {
584
- // Remove setting added in outer describe block
585
- configProvider.set("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs", undefined);
586
- });
587
- const testCases = [
588
- { testOverride: 123, option: 456, expectedResult: 123 },
589
- { option: 456, expectedResult: 456 },
590
- { expectedResult: defaultInactiveTimeoutMs },
591
- ];
592
- testCases.forEach((testCase) => {
593
- it(`Test Case ${JSON.stringify(testCase)}`, () => {
594
- configProvider.set("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs", testCase.testOverride);
595
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
596
- inactiveTimeoutMs: testCase.option,
597
- });
598
- assert.equal(gc.configs.inactiveTimeoutMs, testCase.expectedResult, "inactiveTimeoutMs not set as expected");
599
- });
600
- });
601
- it("inactiveTimeout must not be greater than tombstoneTimeout", () => {
602
- configProvider.set("Fluid.GarbageCollection.TestOverride.InactiveTimeoutMs", Number.MAX_VALUE);
603
- assert.throws(() => {
604
- gc = createGcWithPrivateMembers();
605
- }, (e) => e.errorType === "usageError", "inactiveTimeout must not be greater than tombstoneTimeout");
606
- });
607
- });
608
- describe("sweepGracePeriodMs", () => {
609
- const testCases = [
610
- { option: 123, expectedResult: 123 },
611
- { option: 0, expectedResult: 0 },
612
- { option: undefined, expectedResult: defaultSweepGracePeriodMs },
613
- ];
614
- testCases.forEach((testCase) => {
615
- it(`Test Case ${JSON.stringify(testCase)}`, () => {
616
- gc = createGcWithPrivateMembers({} /* metadata */, {
617
- sweepGracePeriodMs: testCase.option,
618
- });
619
- assert.equal(gc.configs.sweepGracePeriodMs, testCase.expectedResult);
620
- });
621
- });
622
- it("sweepGracePeriodMs must be non-negative", () => {
623
- assert.throws(() => {
624
- gc = createGcWithPrivateMembers({} /* metadata */, {
625
- sweepGracePeriodMs: -1,
626
- });
627
- }, (e) => e.errorType === "usageError", "sweepGracePeriodMs must be non-negative");
628
- });
629
- });
630
- describe("testMode", () => {
631
- const testCases = [
632
- { setting: true, option: false, expectedResult: true },
633
- { setting: false, option: true, expectedResult: false },
634
- { option: true, expectedResult: true },
635
- { expectedResult: false },
636
- ];
637
- testCases.forEach((testCase) => {
638
- it(`Test Case ${JSON.stringify(testCase)}`, () => {
639
- configProvider.set(gcTestModeKey, testCase.setting);
640
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
641
- runGCInTestMode: testCase.option,
642
- });
643
- assert.equal(gc.configs.testMode, testCase.expectedResult, "testMode not set as expected");
644
- });
645
- });
646
- });
647
- });
648
- describe("throwOnTombstoneLoad (using new container)", () => {
649
- beforeEach(() => {
650
- configProvider.set(testOverrideSessionExpiryMsKey, defaultSessionExpiryDurationMs); // Required for sweep to be enabled
651
- });
652
- it("gcDisableThrowOnTombstoneLoad true", () => {
653
- gc = createGcWithPrivateMembers(undefined /* metadata */, { enableGCSweep: true, [gcDisableThrowOnTombstoneLoadOptionName]: true }, false /* isSummarizerClient */);
654
- assert.equal(gc.configs.throwOnTombstoneLoad, false, "throwOnTombstoneLoad incorrect");
655
- });
656
- it("gcDisableThrowOnTombstoneLoad false", () => {
657
- gc = createGcWithPrivateMembers(undefined /* metadata */, { enableGCSweep: true, [gcDisableThrowOnTombstoneLoadOptionName]: false }, false /* isSummarizerClient */);
658
- assert.equal(gc.configs.throwOnTombstoneLoad, true, "throwOnTombstoneLoad incorrect");
659
- });
660
- it("gcDisableThrowOnTombstoneLoad undefined", () => {
661
- gc = createGcWithPrivateMembers(undefined /* metadata */, {
662
- enableGCSweep: true,
663
- [gcDisableThrowOnTombstoneLoadOptionName]: undefined,
664
- }, false /* isSummarizerClient */);
665
- assert.equal(gc.configs.throwOnTombstoneLoad, true, "throwOnTombstoneLoad incorrect");
666
- });
667
- it("gcDisableThrowOnTombstoneLoad undefined - Sweep Disabled does not interfere", () => {
668
- configProvider.set(runSweepKey, false); // Disable Sweep
669
- gc = createGcWithPrivateMembers(undefined /* metadata */, { [gcDisableThrowOnTombstoneLoadOptionName]: undefined }, false /* isSummarizerClient */);
670
- assert.equal(gc.configs.throwOnTombstoneLoad, true, "throwOnTombstoneLoad incorrect");
671
- });
672
- it("Old 'enable' option false (ignored)", () => {
673
- const gcThrowOnTombstoneLoadOptionName_old = "gcThrowOnTombstoneLoad";
674
- gc = createGcWithPrivateMembers(undefined /* metadata */, { enableGCSweep: true, [gcThrowOnTombstoneLoadOptionName_old]: false }, false /* isSummarizerClient */);
675
- assert.equal(gc.configs.throwOnTombstoneLoad, true, "throwOnTombstoneLoad incorrect");
676
- });
677
- it("throwOnTombstoneLoad enabled via override", () => {
678
- configProvider.set(throwOnTombstoneLoadOverrideKey, true);
679
- gc = createGcWithPrivateMembers(undefined /* metadata */, { enableGCSweep: true, [gcDisableThrowOnTombstoneLoadOptionName]: true }, false /* isSummarizerClient */);
680
- assert.equal(gc.configs.throwOnTombstoneLoad, true, "throwOnTombstoneLoad incorrect");
681
- });
682
- it("throwOnTombstoneLoad disabled via override", () => {
683
- configProvider.set(throwOnTombstoneLoadOverrideKey, false);
684
- gc = createGcWithPrivateMembers(undefined /* metadata */, { enableGCSweep: true, [gcDisableThrowOnTombstoneLoadOptionName]: false }, false /* isSummarizerClient */);
685
- assert.equal(gc.configs.throwOnTombstoneLoad, false, "throwOnTombstoneLoad incorrect");
686
- });
687
- });
688
- });
689
- //# sourceMappingURL=gcConfigs.spec.js.map