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

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 (306) 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/biome.jsonc +4 -0
  5. package/container-runtime.test-files.tar +0 -0
  6. package/dist/batchTracker.js +5 -1
  7. package/dist/batchTracker.js.map +1 -1
  8. package/dist/blobManager.d.ts +1 -18
  9. package/dist/blobManager.d.ts.map +1 -1
  10. package/dist/blobManager.js +39 -48
  11. package/dist/blobManager.js.map +1 -1
  12. package/dist/channelCollection.d.ts +8 -9
  13. package/dist/channelCollection.d.ts.map +1 -1
  14. package/dist/channelCollection.js +71 -51
  15. package/dist/channelCollection.js.map +1 -1
  16. package/dist/connectionTelemetry.d.ts +1 -2
  17. package/dist/connectionTelemetry.d.ts.map +1 -1
  18. package/dist/connectionTelemetry.js +32 -14
  19. package/dist/connectionTelemetry.js.map +1 -1
  20. package/dist/containerHandleContext.js +4 -0
  21. package/dist/containerHandleContext.js.map +1 -1
  22. package/dist/containerRuntime.d.ts +7 -18
  23. package/dist/containerRuntime.d.ts.map +1 -1
  24. package/dist/containerRuntime.js +145 -43
  25. package/dist/containerRuntime.js.map +1 -1
  26. package/dist/dataStore.js +9 -1
  27. package/dist/dataStore.js.map +1 -1
  28. package/dist/dataStoreContext.d.ts +23 -37
  29. package/dist/dataStoreContext.d.ts.map +1 -1
  30. package/dist/dataStoreContext.js +159 -133
  31. package/dist/dataStoreContext.js.map +1 -1
  32. package/dist/dataStoreContexts.js +29 -28
  33. package/dist/dataStoreContexts.js.map +1 -1
  34. package/dist/dataStoreRegistry.js +1 -0
  35. package/dist/dataStoreRegistry.js.map +1 -1
  36. package/dist/deltaManagerProxies.d.ts +4 -4
  37. package/dist/deltaManagerProxies.d.ts.map +1 -1
  38. package/dist/deltaManagerProxies.js +33 -28
  39. package/dist/deltaManagerProxies.js.map +1 -1
  40. package/dist/deltaScheduler.d.ts +1 -2
  41. package/dist/deltaScheduler.d.ts.map +1 -1
  42. package/dist/deltaScheduler.js +13 -9
  43. package/dist/deltaScheduler.js.map +1 -1
  44. package/dist/error.js +2 -1
  45. package/dist/error.js.map +1 -1
  46. package/dist/gc/garbageCollection.d.ts.map +1 -1
  47. package/dist/gc/garbageCollection.js +37 -17
  48. package/dist/gc/garbageCollection.js.map +1 -1
  49. package/dist/gc/gcDefinitions.d.ts +0 -4
  50. package/dist/gc/gcDefinitions.d.ts.map +1 -1
  51. package/dist/gc/gcDefinitions.js +1 -3
  52. package/dist/gc/gcDefinitions.js.map +1 -1
  53. package/dist/gc/gcSummaryStateTracker.js +19 -14
  54. package/dist/gc/gcSummaryStateTracker.js.map +1 -1
  55. package/dist/gc/gcTelemetry.js +12 -5
  56. package/dist/gc/gcTelemetry.js.map +1 -1
  57. package/dist/gc/gcUnreferencedStateTracker.js +12 -1
  58. package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
  59. package/dist/gc/index.d.ts +1 -1
  60. package/dist/gc/index.d.ts.map +1 -1
  61. package/dist/gc/index.js +1 -2
  62. package/dist/gc/index.js.map +1 -1
  63. package/dist/messageTypes.d.ts +1 -1
  64. package/dist/messageTypes.d.ts.map +1 -1
  65. package/dist/messageTypes.js.map +1 -1
  66. package/dist/opLifecycle/batchManager.js +5 -3
  67. package/dist/opLifecycle/batchManager.js.map +1 -1
  68. package/dist/opLifecycle/opCompressor.js +1 -0
  69. package/dist/opLifecycle/opCompressor.js.map +1 -1
  70. package/dist/opLifecycle/opDecompressor.d.ts +1 -1
  71. package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
  72. package/dist/opLifecycle/opDecompressor.js +6 -4
  73. package/dist/opLifecycle/opDecompressor.js.map +1 -1
  74. package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
  75. package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
  76. package/dist/opLifecycle/opGroupingManager.js +3 -1
  77. package/dist/opLifecycle/opGroupingManager.js.map +1 -1
  78. package/dist/opLifecycle/opSplitter.d.ts +1 -1
  79. package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
  80. package/dist/opLifecycle/opSplitter.js +6 -0
  81. package/dist/opLifecycle/opSplitter.js.map +1 -1
  82. package/dist/opLifecycle/outbox.js +15 -10
  83. package/dist/opLifecycle/outbox.js.map +1 -1
  84. package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  85. package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  86. package/dist/opLifecycle/remoteMessageProcessor.js +3 -0
  87. package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
  88. package/dist/opProperties.d.ts +1 -1
  89. package/dist/opProperties.d.ts.map +1 -1
  90. package/dist/opProperties.js.map +1 -1
  91. package/dist/packageVersion.d.ts +1 -1
  92. package/dist/packageVersion.js +1 -1
  93. package/dist/packageVersion.js.map +1 -1
  94. package/dist/pendingStateManager.d.ts.map +1 -1
  95. package/dist/pendingStateManager.js +34 -18
  96. package/dist/pendingStateManager.js.map +1 -1
  97. package/dist/scheduleManager.d.ts +1 -2
  98. package/dist/scheduleManager.d.ts.map +1 -1
  99. package/dist/scheduleManager.js +15 -4
  100. package/dist/scheduleManager.js.map +1 -1
  101. package/dist/storageServiceWithAttachBlobs.js +1 -0
  102. package/dist/storageServiceWithAttachBlobs.js.map +1 -1
  103. package/dist/summary/documentSchema.js +17 -1
  104. package/dist/summary/documentSchema.js.map +1 -1
  105. package/dist/summary/orderedClientElection.js +19 -11
  106. package/dist/summary/orderedClientElection.js.map +1 -1
  107. package/dist/summary/runWhileConnectedCoordinator.js +4 -2
  108. package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
  109. package/dist/summary/runningSummarizer.d.ts +1 -1
  110. package/dist/summary/runningSummarizer.d.ts.map +1 -1
  111. package/dist/summary/runningSummarizer.js +56 -38
  112. package/dist/summary/runningSummarizer.js.map +1 -1
  113. package/dist/summary/summarizer.js +17 -8
  114. package/dist/summary/summarizer.js.map +1 -1
  115. package/dist/summary/summarizerClientElection.js +18 -7
  116. package/dist/summary/summarizerClientElection.js.map +1 -1
  117. package/dist/summary/summarizerHeuristics.js +30 -25
  118. package/dist/summary/summarizerHeuristics.js.map +1 -1
  119. package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
  120. package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  121. package/dist/summary/summarizerNode/summarizerNode.js +12 -3
  122. package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
  123. package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  124. package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  125. package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  126. package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  127. package/dist/summary/summarizerTypes.d.ts +2 -2
  128. package/dist/summary/summarizerTypes.d.ts.map +1 -1
  129. package/dist/summary/summarizerTypes.js.map +1 -1
  130. package/dist/summary/summaryCollection.d.ts +1 -2
  131. package/dist/summary/summaryCollection.d.ts.map +1 -1
  132. package/dist/summary/summaryCollection.js +23 -11
  133. package/dist/summary/summaryCollection.js.map +1 -1
  134. package/dist/summary/summaryFormat.d.ts +1 -2
  135. package/dist/summary/summaryFormat.d.ts.map +1 -1
  136. package/dist/summary/summaryFormat.js.map +1 -1
  137. package/dist/summary/summaryGenerator.js +12 -5
  138. package/dist/summary/summaryGenerator.js.map +1 -1
  139. package/dist/summary/summaryManager.js +58 -48
  140. package/dist/summary/summaryManager.js.map +1 -1
  141. package/dist/throttler.js +4 -1
  142. package/dist/throttler.js.map +1 -1
  143. package/lib/batchTracker.js +5 -1
  144. package/lib/batchTracker.js.map +1 -1
  145. package/lib/blobManager.d.ts +1 -18
  146. package/lib/blobManager.d.ts.map +1 -1
  147. package/lib/blobManager.js +39 -48
  148. package/lib/blobManager.js.map +1 -1
  149. package/lib/channelCollection.d.ts +8 -9
  150. package/lib/channelCollection.d.ts.map +1 -1
  151. package/lib/channelCollection.js +72 -53
  152. package/lib/channelCollection.js.map +1 -1
  153. package/lib/connectionTelemetry.d.ts +1 -2
  154. package/lib/connectionTelemetry.d.ts.map +1 -1
  155. package/lib/connectionTelemetry.js +33 -15
  156. package/lib/connectionTelemetry.js.map +1 -1
  157. package/lib/containerHandleContext.js +4 -0
  158. package/lib/containerHandleContext.js.map +1 -1
  159. package/lib/containerRuntime.d.ts +7 -18
  160. package/lib/containerRuntime.d.ts.map +1 -1
  161. package/lib/containerRuntime.js +145 -43
  162. package/lib/containerRuntime.js.map +1 -1
  163. package/lib/dataStore.js +9 -1
  164. package/lib/dataStore.js.map +1 -1
  165. package/lib/dataStoreContext.d.ts +23 -37
  166. package/lib/dataStoreContext.d.ts.map +1 -1
  167. package/lib/dataStoreContext.js +162 -136
  168. package/lib/dataStoreContext.js.map +1 -1
  169. package/lib/dataStoreContexts.js +29 -28
  170. package/lib/dataStoreContexts.js.map +1 -1
  171. package/lib/dataStoreRegistry.js +1 -0
  172. package/lib/dataStoreRegistry.js.map +1 -1
  173. package/lib/deltaManagerProxies.d.ts +4 -4
  174. package/lib/deltaManagerProxies.d.ts.map +1 -1
  175. package/lib/deltaManagerProxies.js +33 -28
  176. package/lib/deltaManagerProxies.js.map +1 -1
  177. package/lib/deltaScheduler.d.ts +1 -2
  178. package/lib/deltaScheduler.d.ts.map +1 -1
  179. package/lib/deltaScheduler.js +13 -9
  180. package/lib/deltaScheduler.js.map +1 -1
  181. package/lib/error.js +2 -1
  182. package/lib/error.js.map +1 -1
  183. package/lib/gc/garbageCollection.d.ts.map +1 -1
  184. package/lib/gc/garbageCollection.js +37 -17
  185. package/lib/gc/garbageCollection.js.map +1 -1
  186. package/lib/gc/gcDefinitions.d.ts +0 -4
  187. package/lib/gc/gcDefinitions.d.ts.map +1 -1
  188. package/lib/gc/gcDefinitions.js +0 -2
  189. package/lib/gc/gcDefinitions.js.map +1 -1
  190. package/lib/gc/gcSummaryStateTracker.js +19 -14
  191. package/lib/gc/gcSummaryStateTracker.js.map +1 -1
  192. package/lib/gc/gcTelemetry.js +12 -5
  193. package/lib/gc/gcTelemetry.js.map +1 -1
  194. package/lib/gc/gcUnreferencedStateTracker.js +12 -1
  195. package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
  196. package/lib/gc/index.d.ts +1 -1
  197. package/lib/gc/index.d.ts.map +1 -1
  198. package/lib/gc/index.js +1 -1
  199. package/lib/gc/index.js.map +1 -1
  200. package/lib/messageTypes.d.ts +1 -1
  201. package/lib/messageTypes.d.ts.map +1 -1
  202. package/lib/messageTypes.js.map +1 -1
  203. package/lib/opLifecycle/batchManager.js +5 -3
  204. package/lib/opLifecycle/batchManager.js.map +1 -1
  205. package/lib/opLifecycle/opCompressor.js +1 -0
  206. package/lib/opLifecycle/opCompressor.js.map +1 -1
  207. package/lib/opLifecycle/opDecompressor.d.ts +1 -1
  208. package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
  209. package/lib/opLifecycle/opDecompressor.js +6 -4
  210. package/lib/opLifecycle/opDecompressor.js.map +1 -1
  211. package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
  212. package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
  213. package/lib/opLifecycle/opGroupingManager.js +3 -1
  214. package/lib/opLifecycle/opGroupingManager.js.map +1 -1
  215. package/lib/opLifecycle/opSplitter.d.ts +1 -1
  216. package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
  217. package/lib/opLifecycle/opSplitter.js +6 -0
  218. package/lib/opLifecycle/opSplitter.js.map +1 -1
  219. package/lib/opLifecycle/outbox.js +15 -10
  220. package/lib/opLifecycle/outbox.js.map +1 -1
  221. package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
  222. package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
  223. package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
  224. package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
  225. package/lib/opProperties.d.ts +1 -1
  226. package/lib/opProperties.d.ts.map +1 -1
  227. package/lib/opProperties.js.map +1 -1
  228. package/lib/packageVersion.d.ts +1 -1
  229. package/lib/packageVersion.js +1 -1
  230. package/lib/packageVersion.js.map +1 -1
  231. package/lib/pendingStateManager.d.ts.map +1 -1
  232. package/lib/pendingStateManager.js +34 -18
  233. package/lib/pendingStateManager.js.map +1 -1
  234. package/lib/scheduleManager.d.ts +1 -2
  235. package/lib/scheduleManager.d.ts.map +1 -1
  236. package/lib/scheduleManager.js +15 -4
  237. package/lib/scheduleManager.js.map +1 -1
  238. package/lib/storageServiceWithAttachBlobs.js +1 -0
  239. package/lib/storageServiceWithAttachBlobs.js.map +1 -1
  240. package/lib/summary/documentSchema.js +17 -1
  241. package/lib/summary/documentSchema.js.map +1 -1
  242. package/lib/summary/orderedClientElection.js +19 -11
  243. package/lib/summary/orderedClientElection.js.map +1 -1
  244. package/lib/summary/runWhileConnectedCoordinator.js +4 -2
  245. package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
  246. package/lib/summary/runningSummarizer.d.ts +1 -1
  247. package/lib/summary/runningSummarizer.d.ts.map +1 -1
  248. package/lib/summary/runningSummarizer.js +57 -39
  249. package/lib/summary/runningSummarizer.js.map +1 -1
  250. package/lib/summary/summarizer.js +17 -8
  251. package/lib/summary/summarizer.js.map +1 -1
  252. package/lib/summary/summarizerClientElection.js +18 -7
  253. package/lib/summary/summarizerClientElection.js.map +1 -1
  254. package/lib/summary/summarizerHeuristics.js +30 -25
  255. package/lib/summary/summarizerHeuristics.js.map +1 -1
  256. package/lib/summary/summarizerNode/summarizerNode.d.ts +1 -2
  257. package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
  258. package/lib/summary/summarizerNode/summarizerNode.js +12 -3
  259. package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
  260. package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
  261. package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
  262. package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
  263. package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
  264. package/lib/summary/summarizerTypes.d.ts +2 -2
  265. package/lib/summary/summarizerTypes.d.ts.map +1 -1
  266. package/lib/summary/summarizerTypes.js.map +1 -1
  267. package/lib/summary/summaryCollection.d.ts +1 -2
  268. package/lib/summary/summaryCollection.d.ts.map +1 -1
  269. package/lib/summary/summaryCollection.js +23 -11
  270. package/lib/summary/summaryCollection.js.map +1 -1
  271. package/lib/summary/summaryFormat.d.ts +1 -2
  272. package/lib/summary/summaryFormat.d.ts.map +1 -1
  273. package/lib/summary/summaryFormat.js.map +1 -1
  274. package/lib/summary/summaryGenerator.js +12 -5
  275. package/lib/summary/summaryGenerator.js.map +1 -1
  276. package/lib/summary/summaryManager.js +58 -48
  277. package/lib/summary/summaryManager.js.map +1 -1
  278. package/lib/throttler.js +4 -1
  279. package/lib/throttler.js.map +1 -1
  280. package/package.json +23 -20
  281. package/src/batchTracker.ts +1 -1
  282. package/src/blobManager.ts +1 -39
  283. package/src/channelCollection.ts +63 -76
  284. package/src/connectionTelemetry.ts +5 -2
  285. package/src/containerRuntime.ts +9 -32
  286. package/src/dataStoreContext.ts +38 -79
  287. package/src/deltaManagerProxies.ts +3 -5
  288. package/src/deltaScheduler.ts +4 -2
  289. package/src/gc/garbageCollection.ts +0 -2
  290. package/src/gc/gcDefinitions.ts +0 -4
  291. package/src/gc/index.ts +0 -1
  292. package/src/messageTypes.ts +1 -1
  293. package/src/opLifecycle/opDecompressor.ts +1 -1
  294. package/src/opLifecycle/opGroupingManager.ts +1 -1
  295. package/src/opLifecycle/opSplitter.ts +1 -1
  296. package/src/opLifecycle/remoteMessageProcessor.ts +4 -2
  297. package/src/opProperties.ts +4 -2
  298. package/src/packageVersion.ts +1 -1
  299. package/src/pendingStateManager.ts +16 -5
  300. package/src/scheduleManager.ts +4 -2
  301. package/src/summary/runningSummarizer.ts +5 -2
  302. package/src/summary/summarizerNode/summarizerNode.ts +5 -2
  303. package/src/summary/summarizerTypes.ts +5 -2
  304. package/src/summary/summaryCollection.ts +1 -1
  305. package/src/summary/summaryFormat.ts +2 -1
  306. package/tsconfig.json +2 -0
@@ -5,9 +5,8 @@
5
5
  import { AttachState } from "@fluidframework/container-definitions";
6
6
  import { FluidObject, IDisposable, IRequest, IResponse, ITelemetryBaseLogger } from "@fluidframework/core-interfaces";
7
7
  import type { IFluidHandleInternal } from "@fluidframework/core-interfaces/internal";
8
- import { ISequencedDocumentMessage } from "@fluidframework/driver-definitions";
9
8
  import type { ISnapshot } from "@fluidframework/driver-definitions/internal";
10
- import { ISnapshotTree } from "@fluidframework/driver-definitions/internal";
9
+ import { ISnapshotTree, ISequencedDocumentMessage } from "@fluidframework/driver-definitions/internal";
11
10
  import { ISummaryTreeWithStats, ITelemetryContext, IGarbageCollectionData, AliasResult, IEnvelope, IFluidDataStoreChannel, IFluidDataStoreContext, IFluidDataStoreContextDetached, IFluidDataStoreFactory, IFluidDataStoreRegistry, IFluidParentContext, NamedFluidDataStoreRegistryEntries, IInboundSignalMessage } from "@fluidframework/runtime-definitions/internal";
12
11
  import { MonitoringContext } from "@fluidframework/telemetry-utils/internal";
13
12
  import { RuntimeHeaderData } from "./containerRuntime.js";
@@ -47,6 +46,10 @@ export declare function wrapContext(context: IFluidParentContext): IFluidParentC
47
46
  * @returns A wrapped {@link IFluidParentContext}
48
47
  */
49
48
  export declare function wrapContextForInnerChannel(id: string, parentContext: IFluidParentContext): IFluidParentContext;
49
+ /**
50
+ * Returns the type of the given local data store from its package path.
51
+ */
52
+ export declare function getLocalDataStoreType(localDataStore: LocalFluidDataStoreContext): string;
50
53
  /**
51
54
  * This class encapsulates data store handling. Currently it is only used by the container runtime,
52
55
  * but eventually could be hosted on any channel once we formalize the channel api boundary.
@@ -67,8 +70,6 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
67
70
  readonly containerLoadDataStoreCount: number;
68
71
  readonly referencedDataStoreCount: number;
69
72
  };
70
- private dataStoresSinceLastGC;
71
- private readonly containerRuntimeHandle;
72
73
  private readonly pendingAliasMap;
73
74
  protected readonly contexts: DataStoreContexts;
74
75
  private readonly aliasedDataStores;
@@ -126,7 +127,7 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
126
127
  applyStashedOp(content: unknown): Promise<unknown>;
127
128
  protected applyStashedChannelChannelOp(envelope: IEnvelope): Promise<unknown>;
128
129
  private applyStashedAttachOp;
129
- process(message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown, addedOutboundReference?: (fromNodePath: string, toNodePath: string) => void): void;
130
+ process(message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown): void;
130
131
  protected processChannelOp(address: string, message: ISequencedDocumentMessage, local: boolean, localMessageMetadata: unknown): void;
131
132
  private getDataStore;
132
133
  /**
@@ -154,11 +155,9 @@ export declare class ChannelCollection implements IFluidDataStoreChannel, IDispo
154
155
  */
155
156
  getAttachSummary(telemetryContext?: ITelemetryContext): ISummaryTreeWithStats;
156
157
  /**
157
- * Before GC runs, called by the garbage collector to update any pending GC state.
158
- * The garbage collector needs to know all outbound references that are added. Since root data stores are not
159
- * explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
158
+ * Gets the GC data. Used when attaching or serializing a detached container.
160
159
  */
161
- updateStateBeforeGC(): Promise<void>;
160
+ getAttachGCData(telemetryContext?: ITelemetryContext): IGarbageCollectionData;
162
161
  /**
163
162
  * Generates data used for garbage collection. It does the following:
164
163
  *
@@ -1 +1 @@
1
- {"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Licensed under the MIT License.
5
5
  */
6
6
  Object.defineProperty(exports, "__esModule", { value: true });
7
- exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
7
+ exports.ChannelCollectionFactory = exports.detectOutboundReferences = exports.getSummaryForDatastores = exports.ChannelCollection = exports.getLocalDataStoreType = exports.wrapContextForInnerChannel = exports.wrapContext = exports.AllowInactiveRequestHeaderKey = exports.AllowTombstoneRequestHeaderKey = exports.RuntimeHeaders = void 0;
8
8
  const container_definitions_1 = require("@fluidframework/container-definitions");
9
9
  const internal_1 = require("@fluidframework/core-utils/internal");
10
10
  const internal_2 = require("@fluidframework/datastore/internal");
@@ -99,8 +99,8 @@ function wrapContext(context) {
99
99
  uploadBlob: async (...args) => {
100
100
  return context.uploadBlob(...args);
101
101
  },
102
- addedGCOutboundReference: (...args) => {
103
- return context.addedGCOutboundReference?.(...args);
102
+ addedGCOutboundRoute: (...args) => {
103
+ return context.addedGCOutboundRoute(...args);
104
104
  },
105
105
  getCreateChildSummarizerNodeFn: (...args) => {
106
106
  return context.getCreateChildSummarizerNodeFn?.(...args);
@@ -145,33 +145,43 @@ function wrapContextForInnerChannel(id, parentContext) {
145
145
  return context;
146
146
  }
147
147
  exports.wrapContextForInnerChannel = wrapContextForInnerChannel;
148
+ /**
149
+ * Returns the type of the given local data store from its package path.
150
+ */
151
+ function getLocalDataStoreType(localDataStore) {
152
+ return localDataStore.packagePath[localDataStore.packagePath.length - 1];
153
+ }
154
+ exports.getLocalDataStoreType = getLocalDataStoreType;
148
155
  /**
149
156
  * This class encapsulates data store handling. Currently it is only used by the container runtime,
150
157
  * but eventually could be hosted on any channel once we formalize the channel api boundary.
151
158
  * @internal
152
159
  */
153
160
  class ChannelCollection {
161
+ baseSnapshot;
162
+ parentContext;
163
+ gcNodeUpdated;
164
+ isDataStoreDeleted;
165
+ aliasMap;
166
+ // Stores tracked by the Domain
167
+ pendingAttach = new Map();
168
+ // 0.24 back-compat attachingBeforeSummary
169
+ attachOpFiredForDataStore = new Set();
170
+ mc;
171
+ disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
172
+ entryPoint;
173
+ containerLoadStats;
174
+ pendingAliasMap = new Map();
175
+ contexts;
176
+ aliasedDataStores;
154
177
  constructor(baseSnapshot, parentContext, baseLogger, gcNodeUpdated, isDataStoreDeleted, aliasMap, provideEntryPoint) {
155
178
  this.baseSnapshot = baseSnapshot;
156
179
  this.parentContext = parentContext;
157
180
  this.gcNodeUpdated = gcNodeUpdated;
158
181
  this.isDataStoreDeleted = isDataStoreDeleted;
159
182
  this.aliasMap = aliasMap;
160
- // Stores tracked by the Domain
161
- this.pendingAttach = new Map();
162
- // 0.24 back-compat attachingBeforeSummary
163
- this.attachOpFiredForDataStore = new Set();
164
- this.disposeOnce = new internal_1.Lazy(() => this.contexts.dispose());
165
- // Stores the ids of new data stores between two GC runs. This is used to notify the garbage collector of new
166
- // root data stores that are added.
167
- this.dataStoresSinceLastGC = [];
168
- this.pendingAliasMap = new Map();
169
- /** For sampling. Only log once per container */
170
- this.shouldSendAttachLog = true;
171
- this.dispose = () => this.disposeOnce.value;
172
183
  this.mc = (0, internal_6.createChildMonitoringContext)({ logger: baseLogger });
173
184
  this.contexts = new dataStoreContexts_js_1.DataStoreContexts(baseLogger);
174
- this.containerRuntimeHandle = new internal_2.FluidObjectHandle(this.parentContext, "/", this.parentContext.IFluidHandleContext);
175
185
  this.entryPoint = new internal_2.FluidObjectHandle(new internal_1.LazyPromise(async () => provideEntryPoint(this)), "", this.parentContext.IFluidHandleContext);
176
186
  this.aliasedDataStores = new Set(aliasMap.values());
177
187
  // Extract stores stored inside the snapshot
@@ -246,6 +256,8 @@ class ChannelCollection {
246
256
  const pendingAliasPromise = this.pendingAliases.get(maybeAlias);
247
257
  return pendingAliasPromise ?? "Success";
248
258
  }
259
+ /** For sampling. Only log once per container */
260
+ shouldSendAttachLog = true;
249
261
  wrapContextForInnerChannel(id) {
250
262
  return wrapContextForInnerChannel(id, this.parentContext);
251
263
  }
@@ -259,12 +271,11 @@ class ChannelCollection {
259
271
  }
260
272
  processAttachMessage(message, local) {
261
273
  const attachMessage = message.contents;
262
- this.dataStoresSinceLastGC.push(attachMessage.id);
263
274
  // We need to process the GC Data for both local and remote attach messages
264
275
  const foundGCData = (0, internal_5.processAttachMessageGCData)(attachMessage.snapshot, (nodeId, toPath) => {
265
276
  // nodeId is the relative path under the node being attached. Always starts with "/", but no trailing "/" after an id
266
277
  const fromPath = `/${attachMessage.id}${nodeId === "/" ? "" : nodeId}`;
267
- this.parentContext.addedGCOutboundReference?.({ absolutePath: fromPath }, { absolutePath: toPath });
278
+ this.parentContext.addedGCOutboundRoute(fromPath, toPath);
268
279
  });
269
280
  // Only log once per container to avoid noise/cost.
270
281
  // Allows longitudinal tracking of various state (e.g. foundGCData), and some sampled details
@@ -358,8 +369,7 @@ class ChannelCollection {
358
369
  });
359
370
  return false;
360
371
  }
361
- const handle = new internal_2.FluidObjectHandle(context, internalId, this.parentContext.IFluidHandleContext);
362
- this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
372
+ this.parentContext.addedGCOutboundRoute("/", `/${internalId}`);
363
373
  this.aliasMap.set(alias, context.id);
364
374
  this.aliasedDataStores.add(context.id);
365
375
  context.setInMemoryRoot();
@@ -370,14 +380,17 @@ class ChannelCollection {
370
380
  }
371
381
  /** Package up the context's attach summary etc into an IAttachMessage */
372
382
  generateAttachMessage(localContext) {
373
- const { attachSummary } = localContext.getAttachData(/* includeGCData: */ true);
374
- const type = localContext.packagePath[localContext.packagePath.length - 1];
383
+ // Get the attach summary.
384
+ const attachSummary = localContext.getAttachSummary();
385
+ // Get the GC data and add it to the attach summary.
386
+ const attachGCData = localContext.getAttachGCData();
387
+ (0, internal_5.addBlobToSummary)(attachSummary, internal_4.gcDataBlobKey, JSON.stringify(attachGCData));
375
388
  // Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
376
389
  const snapshot = (0, internal_5.convertSummaryTreeToITree)(attachSummary.summary);
377
390
  return {
378
391
  id: localContext.id,
379
392
  snapshot,
380
- type,
393
+ type: getLocalDataStoreType(localContext),
381
394
  };
382
395
  }
383
396
  /**
@@ -467,6 +480,7 @@ class ChannelCollection {
467
480
  get disposed() {
468
481
  return this.disposeOnce.evaluated;
469
482
  }
483
+ dispose = () => this.disposeOnce.value;
470
484
  reSubmit(type, content, localOpMetadata) {
471
485
  switch (type) {
472
486
  case messageTypes_js_1.ContainerMessageType.Attach:
@@ -571,7 +585,7 @@ class ChannelCollection {
571
585
  this.pendingAttach.set(message.id, message);
572
586
  }
573
587
  }
574
- process(message, local, localMessageMetadata, addedOutboundReference) {
588
+ process(message, local, localMessageMetadata) {
575
589
  switch (message.type) {
576
590
  case messageTypes_js_1.ContainerMessageType.Attach:
577
591
  this.processAttachMessage(message, local);
@@ -588,13 +602,8 @@ class ChannelCollection {
588
602
  contents: innerContents.content,
589
603
  };
590
604
  this.processChannelOp(envelope.address, transformed, local, localMessageMetadata);
591
- // By default, we use the new behavior of detecting outbound routes here.
592
- // If this setting is true, then DataStoreContext would be notifying GC instead.
593
- if (this.mc.config.getBoolean(index_js_1.detectOutboundRoutesViaDDSKey) !== true &&
594
- addedOutboundReference !== undefined) {
595
- // Notify GC of any outbound references that were added by this op.
596
- detectOutboundReferences(envelope.address, transformed.contents, addedOutboundReference);
597
- }
605
+ // Notify GC of any outbound references that were added by this op.
606
+ detectOutboundReferences(envelope.address, transformed.contents, (fromPath, toPath) => this.parentContext.addedGCOutboundRoute(fromPath, toPath));
598
607
  break;
599
608
  }
600
609
  default:
@@ -679,9 +688,9 @@ class ChannelCollection {
679
688
  ? (0, index_js_1.urlToGCNodePath)(originalRequest.url)
680
689
  : dataStoreNodePath;
681
690
  // Log the package details asynchronously since getInitialSnapshotDetails is async
682
- const recentelyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
683
- if (recentelyDeletedContext !== undefined) {
684
- recentelyDeletedContext
691
+ const recentlyDeletedContext = this.contexts.getRecentlyDeletedContext(id);
692
+ if (recentlyDeletedContext !== undefined) {
693
+ recentlyDeletedContext
685
694
  .getInitialSnapshotDetails()
686
695
  .then((details) => {
687
696
  return details.pkg.join("/");
@@ -811,8 +820,7 @@ class ChannelCollection {
811
820
  .map(([key, value]) => {
812
821
  let dataStoreSummary;
813
822
  if (value.isLoaded) {
814
- dataStoreSummary = value.getAttachData(
815
- /* includeGCCData: */ false, telemetryContext).attachSummary;
823
+ dataStoreSummary = value.getAttachSummary(telemetryContext);
816
824
  }
817
825
  else {
818
826
  // If this data store is not yet loaded, then there should be no changes in the snapshot from
@@ -826,21 +834,30 @@ class ChannelCollection {
826
834
  return builder.getSummaryTree();
827
835
  }
828
836
  /**
829
- * Before GC runs, called by the garbage collector to update any pending GC state.
830
- * The garbage collector needs to know all outbound references that are added. Since root data stores are not
831
- * explicitly marked as referenced, notify GC of new root data stores that were added since the last GC run.
837
+ * Gets the GC data. Used when attaching or serializing a detached container.
832
838
  */
833
- async updateStateBeforeGC() {
834
- for (const id of this.dataStoresSinceLastGC) {
835
- const context = this.contexts.get(id);
836
- (0, internal_1.assert)(context !== undefined, 0x2b6 /* Missing data store context */);
837
- if (await context.isRoot()) {
838
- // A root data store is basically a reference from the container runtime to the data store.
839
- const handle = new internal_2.FluidObjectHandle(context, id, this.parentContext.IFluidHandleContext);
840
- this.parentContext.addedGCOutboundReference?.(this.containerRuntimeHandle, handle);
841
- }
842
- }
843
- this.dataStoresSinceLastGC = [];
839
+ getAttachGCData(telemetryContext) {
840
+ const builder = new internal_5.GCDataBuilder();
841
+ // Attaching graph of some stores can cause other stores to get bound too.
842
+ // So keep taking summary until no new stores get bound.
843
+ let notBoundContextsLength;
844
+ do {
845
+ notBoundContextsLength = this.contexts.notBoundLength();
846
+ // Iterate over each data store and ask for its GC data.
847
+ Array.from(this.contexts)
848
+ .filter(([key, _]) =>
849
+ // Take GC data of bounded data stores only.
850
+ !this.contexts.isNotBound(key))
851
+ .map(([key, value]) => {
852
+ const contextGCData = value.getAttachGCData(telemetryContext);
853
+ // Prefix the child's id to the ids of its GC nodes so they can be identified as belonging to the child.
854
+ // This also gradually builds the id of each node to be a path from the root.
855
+ builder.prefixAndAddNodes(key, contextGCData.gcNodes);
856
+ });
857
+ } while (notBoundContextsLength !== this.contexts.notBoundLength());
858
+ // Get the outbound routes (aliased data stores) and add a GC node for this channel.
859
+ builder.addNode("/", Array.from(this.aliasedDataStores));
860
+ return builder.getGCData();
844
861
  }
845
862
  /**
846
863
  * Generates data used for garbage collection. It does the following:
@@ -1121,12 +1138,15 @@ function detectOutboundReferences(address, contents, addedOutboundReference) {
1121
1138
  exports.detectOutboundReferences = detectOutboundReferences;
1122
1139
  /** @internal */
1123
1140
  class ChannelCollectionFactory {
1141
+ provideEntryPoint;
1142
+ ctor;
1143
+ type = "ChannelCollectionChannel";
1144
+ IFluidDataStoreRegistry;
1124
1145
  constructor(registryEntries,
1125
1146
  // ADO:7302 We need a better type here
1126
1147
  provideEntryPoint, ctor) {
1127
1148
  this.provideEntryPoint = provideEntryPoint;
1128
1149
  this.ctor = ctor;
1129
- this.type = "ChannelCollectionChannel";
1130
1150
  this.IFluidDataStoreRegistry = new dataStoreRegistry_js_1.FluidDataStoreRegistry(registryEntries);
1131
1151
  }
1132
1152
  get IFluidDataStoreFactory() {