@fluidframework/container-runtime 2.0.0-dev-rc.5.0.0.268409 → 2.0.0-dev-rc.5.0.0.270401

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 (305) hide show
  1. package/api-report/container-runtime.alpha.api.md +3 -8
  2. package/api-report/container-runtime.beta.api.md +2 -2
  3. package/api-report/container-runtime.public.api.md +2 -2
  4. package/container-runtime.test-files.tar +0 -0
  5. package/dist/batchTracker.js +5 -1
  6. package/dist/batchTracker.js.map +1 -1
  7. package/dist/blobManager.d.ts +1 -18
  8. package/dist/blobManager.d.ts.map +1 -1
  9. package/dist/blobManager.js +39 -48
  10. package/dist/blobManager.js.map +1 -1
  11. package/dist/channelCollection.d.ts +2 -11
  12. package/dist/channelCollection.d.ts.map +1 -1
  13. package/dist/channelCollection.js +33 -48
  14. package/dist/channelCollection.js.map +1 -1
  15. package/dist/connectionTelemetry.d.ts +1 -2
  16. package/dist/connectionTelemetry.d.ts.map +1 -1
  17. package/dist/connectionTelemetry.js +32 -14
  18. package/dist/connectionTelemetry.js.map +1 -1
  19. package/dist/containerHandleContext.js +4 -0
  20. package/dist/containerHandleContext.js.map +1 -1
  21. package/dist/containerRuntime.d.ts +7 -18
  22. package/dist/containerRuntime.d.ts.map +1 -1
  23. package/dist/containerRuntime.js +145 -43
  24. package/dist/containerRuntime.js.map +1 -1
  25. package/dist/dataStore.js +9 -1
  26. package/dist/dataStore.js.map +1 -1
  27. package/dist/dataStoreContext.d.ts +2 -16
  28. package/dist/dataStoreContext.d.ts.map +1 -1
  29. package/dist/dataStoreContext.js +142 -120
  30. package/dist/dataStoreContext.js.map +1 -1
  31. package/dist/dataStoreContexts.js +29 -28
  32. package/dist/dataStoreContexts.js.map +1 -1
  33. package/dist/dataStoreRegistry.js +1 -0
  34. package/dist/dataStoreRegistry.js.map +1 -1
  35. package/dist/deltaManagerProxies.d.ts +4 -4
  36. package/dist/deltaManagerProxies.d.ts.map +1 -1
  37. package/dist/deltaManagerProxies.js +33 -28
  38. package/dist/deltaManagerProxies.js.map +1 -1
  39. package/dist/deltaScheduler.d.ts +1 -2
  40. package/dist/deltaScheduler.d.ts.map +1 -1
  41. package/dist/deltaScheduler.js +13 -9
  42. package/dist/deltaScheduler.js.map +1 -1
  43. package/dist/error.js +2 -1
  44. package/dist/error.js.map +1 -1
  45. package/dist/gc/garbageCollection.d.ts.map +1 -1
  46. package/dist/gc/garbageCollection.js +37 -17
  47. package/dist/gc/garbageCollection.js.map +1 -1
  48. package/dist/gc/gcDefinitions.d.ts +0 -4
  49. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  50. package/dist/gc/gcDefinitions.js +1 -3
  51. package/dist/gc/gcDefinitions.js.map +1 -1
  52. package/dist/gc/gcSummaryStateTracker.js +19 -14
  53. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  54. package/dist/gc/gcTelemetry.js +12 -5
  55. package/dist/gc/gcTelemetry.js.map +1 -1
  56. package/dist/gc/gcUnreferencedStateTracker.js +12 -1
  57. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  58. package/dist/gc/index.d.ts +1 -1
  59. package/dist/gc/index.d.ts.map +1 -1
  60. package/dist/gc/index.js +1 -2
  61. package/dist/gc/index.js.map +1 -1
  62. package/dist/messageTypes.d.ts +1 -1
  63. package/dist/messageTypes.d.ts.map +1 -1
  64. package/dist/messageTypes.js.map +1 -1
  65. package/dist/opLifecycle/batchManager.js +5 -3
  66. package/dist/opLifecycle/batchManager.js.map +1 -1
  67. package/dist/opLifecycle/opCompressor.js +1 -0
  68. package/dist/opLifecycle/opCompressor.js.map +1 -1
  69. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  70. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  71. package/dist/opLifecycle/opDecompressor.js +6 -4
  72. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  73. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  74. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  75. package/dist/opLifecycle/opGroupingManager.js +3 -1
  76. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  77. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  78. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  79. package/dist/opLifecycle/opSplitter.js +6 -0
  80. package/dist/opLifecycle/opSplitter.js.map +1 -1
  81. package/dist/opLifecycle/outbox.js +15 -10
  82. package/dist/opLifecycle/outbox.js.map +1 -1
  83. package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  84. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  85. package/dist/opLifecycle/remoteMessageProcessor.js +3 -0
  86. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  87. package/dist/opProperties.d.ts +1 -1
  88. package/dist/opProperties.d.ts.map +1 -1
  89. package/dist/opProperties.js.map +1 -1
  90. package/dist/packageVersion.d.ts +1 -1
  91. package/dist/packageVersion.js +1 -1
  92. package/dist/packageVersion.js.map +1 -1
  93. package/dist/pendingStateManager.d.ts.map +1 -1
  94. package/dist/pendingStateManager.js +34 -18
  95. package/dist/pendingStateManager.js.map +1 -1
  96. package/dist/scheduleManager.d.ts +1 -2
  97. package/dist/scheduleManager.d.ts.map +1 -1
  98. package/dist/scheduleManager.js +15 -4
  99. package/dist/scheduleManager.js.map +1 -1
  100. package/dist/storageServiceWithAttachBlobs.js +1 -0
  101. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  102. package/dist/summary/documentSchema.js +17 -1
  103. package/dist/summary/documentSchema.js.map +1 -1
  104. package/dist/summary/orderedClientElection.js +19 -11
  105. package/dist/summary/orderedClientElection.js.map +1 -1
  106. package/dist/summary/runWhileConnectedCoordinator.js +4 -2
  107. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  108. package/dist/summary/runningSummarizer.d.ts +1 -1
  109. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  110. package/dist/summary/runningSummarizer.js +56 -38
  111. package/dist/summary/runningSummarizer.js.map +1 -1
  112. package/dist/summary/summarizer.js +17 -8
  113. package/dist/summary/summarizer.js.map +1 -1
  114. package/dist/summary/summarizerClientElection.js +18 -7
  115. package/dist/summary/summarizerClientElection.js.map +1 -1
  116. package/dist/summary/summarizerHeuristics.js +30 -25
  117. package/dist/summary/summarizerHeuristics.js.map +1 -1
  118. package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
  119. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  120. package/dist/summary/summarizerNode/summarizerNode.js +12 -3
  121. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  122. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  123. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  124. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  125. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  126. package/dist/summary/summarizerTypes.d.ts +2 -2
  127. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  128. package/dist/summary/summarizerTypes.js.map +1 -1
  129. package/dist/summary/summaryCollection.d.ts +1 -2
  130. package/dist/summary/summaryCollection.d.ts.map +1 -1
  131. package/dist/summary/summaryCollection.js +23 -11
  132. package/dist/summary/summaryCollection.js.map +1 -1
  133. package/dist/summary/summaryFormat.d.ts +1 -2
  134. package/dist/summary/summaryFormat.d.ts.map +1 -1
  135. package/dist/summary/summaryFormat.js.map +1 -1
  136. package/dist/summary/summaryGenerator.js +12 -5
  137. package/dist/summary/summaryGenerator.js.map +1 -1
  138. package/dist/summary/summaryManager.js +58 -48
  139. package/dist/summary/summaryManager.js.map +1 -1
  140. package/dist/throttler.js +4 -1
  141. package/dist/throttler.js.map +1 -1
  142. package/lib/batchTracker.js +5 -1
  143. package/lib/batchTracker.js.map +1 -1
  144. package/lib/blobManager.d.ts +1 -18
  145. package/lib/blobManager.d.ts.map +1 -1
  146. package/lib/blobManager.js +39 -48
  147. package/lib/blobManager.js.map +1 -1
  148. package/lib/channelCollection.d.ts +2 -11
  149. package/lib/channelCollection.d.ts.map +1 -1
  150. package/lib/channelCollection.js +34 -49
  151. package/lib/channelCollection.js.map +1 -1
  152. package/lib/connectionTelemetry.d.ts +1 -2
  153. package/lib/connectionTelemetry.d.ts.map +1 -1
  154. package/lib/connectionTelemetry.js +33 -15
  155. package/lib/connectionTelemetry.js.map +1 -1
  156. package/lib/containerHandleContext.js +4 -0
  157. package/lib/containerHandleContext.js.map +1 -1
  158. package/lib/containerRuntime.d.ts +7 -18
  159. package/lib/containerRuntime.d.ts.map +1 -1
  160. package/lib/containerRuntime.js +145 -43
  161. package/lib/containerRuntime.js.map +1 -1
  162. package/lib/dataStore.js +9 -1
  163. package/lib/dataStore.js.map +1 -1
  164. package/lib/dataStoreContext.d.ts +2 -16
  165. package/lib/dataStoreContext.d.ts.map +1 -1
  166. package/lib/dataStoreContext.js +144 -122
  167. package/lib/dataStoreContext.js.map +1 -1
  168. package/lib/dataStoreContexts.js +29 -28
  169. package/lib/dataStoreContexts.js.map +1 -1
  170. package/lib/dataStoreRegistry.js +1 -0
  171. package/lib/dataStoreRegistry.js.map +1 -1
  172. package/lib/deltaManagerProxies.d.ts +4 -4
  173. package/lib/deltaManagerProxies.d.ts.map +1 -1
  174. package/lib/deltaManagerProxies.js +33 -28
  175. package/lib/deltaManagerProxies.js.map +1 -1
  176. package/lib/deltaScheduler.d.ts +1 -2
  177. package/lib/deltaScheduler.d.ts.map +1 -1
  178. package/lib/deltaScheduler.js +13 -9
  179. package/lib/deltaScheduler.js.map +1 -1
  180. package/lib/error.js +2 -1
  181. package/lib/error.js.map +1 -1
  182. package/lib/gc/garbageCollection.d.ts.map +1 -1
  183. package/lib/gc/garbageCollection.js +37 -17
  184. package/lib/gc/garbageCollection.js.map +1 -1
  185. package/lib/gc/gcDefinitions.d.ts +0 -4
  186. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  187. package/lib/gc/gcDefinitions.js +0 -2
  188. package/lib/gc/gcDefinitions.js.map +1 -1
  189. package/lib/gc/gcSummaryStateTracker.js +19 -14
  190. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  191. package/lib/gc/gcTelemetry.js +12 -5
  192. package/lib/gc/gcTelemetry.js.map +1 -1
  193. package/lib/gc/gcUnreferencedStateTracker.js +12 -1
  194. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  195. package/lib/gc/index.d.ts +1 -1
  196. package/lib/gc/index.d.ts.map +1 -1
  197. package/lib/gc/index.js +1 -1
  198. package/lib/gc/index.js.map +1 -1
  199. package/lib/messageTypes.d.ts +1 -1
  200. package/lib/messageTypes.d.ts.map +1 -1
  201. package/lib/messageTypes.js.map +1 -1
  202. package/lib/opLifecycle/batchManager.js +5 -3
  203. package/lib/opLifecycle/batchManager.js.map +1 -1
  204. package/lib/opLifecycle/opCompressor.js +1 -0
  205. package/lib/opLifecycle/opCompressor.js.map +1 -1
  206. package/lib/opLifecycle/opDecompressor.d.ts +1 -1
  207. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  208. package/lib/opLifecycle/opDecompressor.js +6 -4
  209. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  210. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  211. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  212. package/lib/opLifecycle/opGroupingManager.js +3 -1
  213. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  214. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  215. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  216. package/lib/opLifecycle/opSplitter.js +6 -0
  217. package/lib/opLifecycle/opSplitter.js.map +1 -1
  218. package/lib/opLifecycle/outbox.js +15 -10
  219. package/lib/opLifecycle/outbox.js.map +1 -1
  220. package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  221. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  222. package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
  223. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  224. package/lib/opProperties.d.ts +1 -1
  225. package/lib/opProperties.d.ts.map +1 -1
  226. package/lib/opProperties.js.map +1 -1
  227. package/lib/packageVersion.d.ts +1 -1
  228. package/lib/packageVersion.js +1 -1
  229. package/lib/packageVersion.js.map +1 -1
  230. package/lib/pendingStateManager.d.ts.map +1 -1
  231. package/lib/pendingStateManager.js +34 -18
  232. package/lib/pendingStateManager.js.map +1 -1
  233. package/lib/scheduleManager.d.ts +1 -2
  234. package/lib/scheduleManager.d.ts.map +1 -1
  235. package/lib/scheduleManager.js +15 -4
  236. package/lib/scheduleManager.js.map +1 -1
  237. package/lib/storageServiceWithAttachBlobs.js +1 -0
  238. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  239. package/lib/summary/documentSchema.js +17 -1
  240. package/lib/summary/documentSchema.js.map +1 -1
  241. package/lib/summary/orderedClientElection.js +19 -11
  242. package/lib/summary/orderedClientElection.js.map +1 -1
  243. package/lib/summary/runWhileConnectedCoordinator.js +4 -2
  244. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  245. package/lib/summary/runningSummarizer.d.ts +1 -1
  246. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  247. package/lib/summary/runningSummarizer.js +57 -39
  248. package/lib/summary/runningSummarizer.js.map +1 -1
  249. package/lib/summary/summarizer.js +17 -8
  250. package/lib/summary/summarizer.js.map +1 -1
  251. package/lib/summary/summarizerClientElection.js +18 -7
  252. package/lib/summary/summarizerClientElection.js.map +1 -1
  253. package/lib/summary/summarizerHeuristics.js +30 -25
  254. package/lib/summary/summarizerHeuristics.js.map +1 -1
  255. package/lib/summary/summarizerNode/summarizerNode.d.ts +1 -2
  256. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  257. package/lib/summary/summarizerNode/summarizerNode.js +12 -3
  258. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  259. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  260. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  261. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  262. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  263. package/lib/summary/summarizerTypes.d.ts +2 -2
  264. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  265. package/lib/summary/summarizerTypes.js.map +1 -1
  266. package/lib/summary/summaryCollection.d.ts +1 -2
  267. package/lib/summary/summaryCollection.d.ts.map +1 -1
  268. package/lib/summary/summaryCollection.js +23 -11
  269. package/lib/summary/summaryCollection.js.map +1 -1
  270. package/lib/summary/summaryFormat.d.ts +1 -2
  271. package/lib/summary/summaryFormat.d.ts.map +1 -1
  272. package/lib/summary/summaryFormat.js.map +1 -1
  273. package/lib/summary/summaryGenerator.js +12 -5
  274. package/lib/summary/summaryGenerator.js.map +1 -1
  275. package/lib/summary/summaryManager.js +58 -48
  276. package/lib/summary/summaryManager.js.map +1 -1
  277. package/lib/throttler.js +4 -1
  278. package/lib/throttler.js.map +1 -1
  279. package/package.json +17 -17
  280. package/src/batchTracker.ts +1 -1
  281. package/src/blobManager.ts +1 -39
  282. package/src/channelCollection.ts +19 -72
  283. package/src/connectionTelemetry.ts +5 -2
  284. package/src/containerRuntime.ts +9 -32
  285. package/src/dataStoreContext.ts +4 -38
  286. package/src/deltaManagerProxies.ts +3 -5
  287. package/src/deltaScheduler.ts +4 -2
  288. package/src/gc/garbageCollection.ts +0 -2
  289. package/src/gc/gcDefinitions.ts +0 -4
  290. package/src/gc/index.ts +0 -1
  291. package/src/messageTypes.ts +1 -1
  292. package/src/opLifecycle/opDecompressor.ts +1 -1
  293. package/src/opLifecycle/opGroupingManager.ts +1 -1
  294. package/src/opLifecycle/opSplitter.ts +1 -1
  295. package/src/opLifecycle/remoteMessageProcessor.ts +4 -2
  296. package/src/opProperties.ts +4 -2
  297. package/src/packageVersion.ts +1 -1
  298. package/src/pendingStateManager.ts +16 -5
  299. package/src/scheduleManager.ts +4 -2
  300. package/src/summary/runningSummarizer.ts +5 -2
  301. package/src/summary/summarizerNode/summarizerNode.ts +5 -2
  302. package/src/summary/summarizerTypes.ts +5 -2
  303. package/src/summary/summaryCollection.ts +1 -1
  304. package/src/summary/summaryFormat.ts +2 -1
  305. package/tsconfig.json +2 -0
@@ -14,7 +14,7 @@ import { channelToDataStore, isDataStoreAliasMessage, } from "./dataStore.js";
14
14
  import { LocalDetachedFluidDataStoreContext, LocalFluidDataStoreContext, RemoteFluidDataStoreContext, createAttributesBlob, } from "./dataStoreContext.js";
15
15
  import { DataStoreContexts } from "./dataStoreContexts.js";
16
16
  import { FluidDataStoreRegistry } from "./dataStoreRegistry.js";
17
- import { GCNodeType, detectOutboundRoutesViaDDSKey, urlToGCNodePath, } from "./gc/index.js";
17
+ import { GCNodeType, urlToGCNodePath } from "./gc/index.js";
18
18
  import { ContainerMessageType } from "./messageTypes.js";
19
19
  import { StorageServiceWithAttachBlobs } from "./storageServiceWithAttachBlobs.js";
20
20
  import { nonDataStorePaths, rootHasIsolatedChannels, } from "./summary/index.js";
@@ -96,8 +96,8 @@ export function wrapContext(context) {
96
96
  uploadBlob: async (...args) => {
97
97
  return context.uploadBlob(...args);
98
98
  },
99
- addedGCOutboundReference: (...args) => {
100
- return context.addedGCOutboundReference?.(...args);
99
+ addedGCOutboundRoute: (...args) => {
100
+ return context.addedGCOutboundRoute(...args);
101
101
  },
102
102
  getCreateChildSummarizerNodeFn: (...args) => {
103
103
  return context.getCreateChildSummarizerNodeFn?.(...args);
@@ -146,27 +146,30 @@ export function wrapContextForInnerChannel(id, parentContext) {
146
146
  * @internal
147
147
  */
148
148
  export class ChannelCollection {
149
+ baseSnapshot;
150
+ parentContext;
151
+ gcNodeUpdated;
152
+ isDataStoreDeleted;
153
+ aliasMap;
154
+ // Stores tracked by the Domain
155
+ pendingAttach = new Map();
156
+ // 0.24 back-compat attachingBeforeSummary
157
+ attachOpFiredForDataStore = new Set();
158
+ mc;
159
+ disposeOnce = new Lazy(() => this.contexts.dispose());
160
+ entryPoint;
161
+ containerLoadStats;
162
+ pendingAliasMap = new Map();
163
+ contexts;
164
+ aliasedDataStores;
149
165
  constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {
150
166
  this.baseSnapshot = baseSnapshot;
151
167
  this.parentContext = parentContext;
152
168
  this.gcNodeUpdated = gcNodeUpdated;
153
169
  this.isDataStoreDeleted = isDataStoreDeleted;
154
170
  this.aliasMap = aliasMap;
155
- // Stores tracked by the Domain
156
- this.pendingAttach = new Map();
157
- // 0.24 back-compat attachingBeforeSummary
158
- this.attachOpFiredForDataStore = new Set();
159
- this.disposeOnce = new Lazy(() => this.contexts.dispose());
160
- // Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
161
- // root data stores that are added.
162
- this.dataStoresSinceLastGC = [];
163
- this.pendingAliasMap = new Map();
164
- /** For sampling. Only log once per container */
165
- this.shouldSendAttachLog = true;
166
- this.dispose = () => this.disposeOnce.value;
167
171
  this.mc = createChildMonitoringContext({ logger: baseLogger });
168
172
  this.contexts = new DataStoreContexts(baseLogger);
169
- this.containerRuntimeHandle = new FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
170
173
  this.entryPoint = new FluidObjectHandle(new LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
171
174
  this.aliasedDataStores = new Set(aliasMap.values());
172
175
  // Extract stores stored inside the snapshot
@@ -241,6 +244,8 @@ export class ChannelCollection {
241
244
  const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
242
245
  return pendingAliasPromise ?? "Success";
243
246
  }
247
+ /** For sampling. Only log once per container */
248
+ shouldSendAttachLog = true;
244
249
  wrapContextForInnerChannel(id) {
245
250
  return wrapContextForInnerChannel(id, this.parentContext);
246
251
  }
@@ -254,12 +259,11 @@ export class ChannelCollection {
254
259
  }
255
260
  processAttachMessage(message, local) {
256
261
  const attachMessage = message.contents;
257
- this.dataStoresSinceLastGC.push(attachMessage.id);
258
262
  // We need to process the GC Data for both local and remote attach messages
259
263
  const foundGCData = processAttachMessageGCData(attachMessage.snapshot, (nodeId, toPath) => {
260
264
  // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
261
265
  const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
262
- this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
266
+ this.parentContext.addedGCOutboundRoute(fromPath, toPath);
263
267
  });
264
268
  // Only log once per container to avoid noise/cost.
265
269
  // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
@@ -353,8 +357,7 @@ export class ChannelCollection {
353
357
  });
354
358
  return false;
355
359
  }
356
- const handle = new FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
357
- this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
360
+ this.parentContext.addedGCOutboundRoute("/", `/${internalId}`);
358
361
  this.aliasMap.set(alias, context.id);
359
362
  this.aliasedDataStores.add(context.id);
360
363
  context.setInMemoryRoot();
@@ -462,6 +465,7 @@ export class ChannelCollection {
462
465
  get disposed() {
463
466
  return this.disposeOnce.evaluated;
464
467
  }
468
+ dispose = () => this.disposeOnce.value;
465
469
  reSubmit(type, content, localOpMetadata) {
466
470
  switch (type) {
467
471
  case ContainerMessageType.Attach:
@@ -566,7 +570,7 @@ export class ChannelCollection {
566
570
  this.pendingAttach.set(message.id, message);
567
571
  }
568
572
  }
569
- process(message, local, localMessageMetadata, addedOutboundReference) {
573
+ process(message, local, localMessageMetadata) {
570
574
  switch (message.type) {
571
575
  case ContainerMessageType.Attach:
572
576
  this.processAttachMessage(message, local);
@@ -583,13 +587,8 @@ export class ChannelCollection {
583
587
  contents: innerContents.content,
584
588
  };
585
589
  this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
586
- // By default, we use the new behavior of detecting outbound routes here.
587
- // If this setting is true, then DataStoreContext would be notifying GC instead.
588
- if (this.mc.config.getBoolean(detectOutboundRoutesViaDDSKey) !== true &&
589
- addedOutboundReference !== undefined) {
590
- // Notify GC of any outbound references that were added by this op.
591
- detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
592
- }
590
+ // Notify GC of any outbound references that were added by this op.
591
+ detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath));
593
592
  break;
594
593
  }
595
594
  default:
@@ -674,9 +673,9 @@ export class ChannelCollection {
674
673
  ? urlToGCNodePath(originalRequest.url)
675
674
  : dataStoreNodePath;
676
675
  // Log the package details asynchronously since getInitialSnapshotDetails is async
677
- const recentelyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
678
- if (recentelyDeletedContext !== undefined) {
679
- recentelyDeletedContext
676
+ const recentlyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
677
+ if (recentlyDeletedContext !== undefined) {
678
+ recentlyDeletedContext
680
679
  .getInitialSnapshotDetails()
681
680
  .then((details) => {
682
681
  return details.pkg.join("/");
@@ -820,23 +819,6 @@ export class ChannelCollection {
820
819
  } while (notBoundContextsLength !== this.contexts.notBoundLength());
821
820
  return builder.getSummaryTree();
822
821
  }
823
- /**
824
- * Before GC runs, called by the garbage collector to update any pending GC state.
825
- * The garbage collector needs to know all outbound references that are added. Since root data stores are not
826
- * explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
827
- */
828
- async updateStateBeforeGC() {
829
- for (const id of this.dataStoresSinceLastGC) {
830
- const context = this.contexts.get(id);
831
- assert(context !== undefined, 0x2b6 /* Missing data store context */);
832
- if (await context.isRoot()) {
833
- // A root data store is basically a reference from the container runtime to the data store.
834
- const handle = new FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
835
- this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
836
- }
837
- }
838
- this.dataStoresSinceLastGC = [];
839
- }
840
822
  /**
841
823
  * Generates data used for garbage collection. It does the following:
842
824
  *
@@ -1113,12 +1095,15 @@ export function detectOutboundReferences(address, contents, addedOutboundReferen
1113
1095
  }
1114
1096
  /** @internal */
1115
1097
  export class ChannelCollectionFactory {
1098
+ provideEntryPoint;
1099
+ ctor;
1100
+ type = "ChannelCollectionChannel";
1101
+ IFluidDataStoreRegistry;
1116
1102
  constructor(registryEntries,
1117
1103
  // ADO:7302 We need a better type here
1118
1104
  provideEntryPoint, ctor) {
1119
1105
  this.provideEntryPoint = provideEntryPoint;
1120
1106
  this.ctor = ctor;
1121
- this.type = "ChannelCollectionChannel";
1122
1107
  this.IFluidDataStoreRegistry = new FluidDataStoreRegistry(registryEntries);
1123
1108
  }
1124
1109
  get IFluidDataStoreFactory() {