@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.
- package/api-report/container-runtime.alpha.api.md +3 -8
- package/api-report/container-runtime.beta.api.md +2 -2
- package/api-report/container-runtime.public.api.md +2 -2
- package/container-runtime.test-files.tar +0 -0
- package/dist/batchTracker.js +5 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/blobManager.d.ts +1 -18
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +39 -48
- package/dist/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +2 -11
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +33 -48
- package/dist/channelCollection.js.map +1 -1
- package/dist/connectionTelemetry.d.ts +1 -2
- package/dist/connectionTelemetry.d.ts.map +1 -1
- package/dist/connectionTelemetry.js +32 -14
- package/dist/connectionTelemetry.js.map +1 -1
- package/dist/containerHandleContext.js +4 -0
- package/dist/containerHandleContext.js.map +1 -1
- package/dist/containerRuntime.d.ts +7 -18
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +145 -43
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js +9 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +2 -16
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +142 -120
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStoreContexts.js +29 -28
- package/dist/dataStoreContexts.js.map +1 -1
- package/dist/dataStoreRegistry.js +1 -0
- package/dist/dataStoreRegistry.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +4 -4
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js +33 -28
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/deltaScheduler.d.ts +1 -2
- package/dist/deltaScheduler.d.ts.map +1 -1
- package/dist/deltaScheduler.js +13 -9
- package/dist/deltaScheduler.js.map +1 -1
- package/dist/error.js +2 -1
- package/dist/error.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +37 -17
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +0 -4
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcSummaryStateTracker.js +19 -14
- package/dist/gc/gcSummaryStateTracker.js.map +1 -1
- package/dist/gc/gcTelemetry.js +12 -5
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/gcUnreferencedStateTracker.js +12 -1
- package/dist/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +1 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/messageTypes.d.ts +1 -1
- package/dist/messageTypes.d.ts.map +1 -1
- package/dist/messageTypes.js.map +1 -1
- package/dist/opLifecycle/batchManager.js +5 -3
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/opCompressor.js +1 -0
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts +1 -1
- package/dist/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +6 -4
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +3 -1
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +6 -0
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.js +15 -10
- package/dist/opLifecycle/outbox.js.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/dist/opLifecycle/remoteMessageProcessor.js +3 -0
- package/dist/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/dist/opProperties.d.ts +1 -1
- package/dist/opProperties.d.ts.map +1 -1
- package/dist/opProperties.js.map +1 -1
- package/dist/packageVersion.d.ts +1 -1
- package/dist/packageVersion.js +1 -1
- package/dist/packageVersion.js.map +1 -1
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +34 -18
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/scheduleManager.d.ts +1 -2
- package/dist/scheduleManager.d.ts.map +1 -1
- package/dist/scheduleManager.js +15 -4
- package/dist/scheduleManager.js.map +1 -1
- package/dist/storageServiceWithAttachBlobs.js +1 -0
- package/dist/storageServiceWithAttachBlobs.js.map +1 -1
- package/dist/summary/documentSchema.js +17 -1
- package/dist/summary/documentSchema.js.map +1 -1
- package/dist/summary/orderedClientElection.js +19 -11
- package/dist/summary/orderedClientElection.js.map +1 -1
- package/dist/summary/runWhileConnectedCoordinator.js +4 -2
- package/dist/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/dist/summary/runningSummarizer.d.ts +1 -1
- package/dist/summary/runningSummarizer.d.ts.map +1 -1
- package/dist/summary/runningSummarizer.js +56 -38
- package/dist/summary/runningSummarizer.js.map +1 -1
- package/dist/summary/summarizer.js +17 -8
- package/dist/summary/summarizer.js.map +1 -1
- package/dist/summary/summarizerClientElection.js +18 -7
- package/dist/summary/summarizerClientElection.js.map +1 -1
- package/dist/summary/summarizerHeuristics.js +30 -25
- package/dist/summary/summarizerHeuristics.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.d.ts +1 -2
- package/dist/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/dist/summary/summarizerNode/summarizerNode.js +12 -3
- package/dist/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/dist/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/dist/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/dist/summary/summarizerTypes.d.ts +2 -2
- package/dist/summary/summarizerTypes.d.ts.map +1 -1
- package/dist/summary/summarizerTypes.js.map +1 -1
- package/dist/summary/summaryCollection.d.ts +1 -2
- package/dist/summary/summaryCollection.d.ts.map +1 -1
- package/dist/summary/summaryCollection.js +23 -11
- package/dist/summary/summaryCollection.js.map +1 -1
- package/dist/summary/summaryFormat.d.ts +1 -2
- package/dist/summary/summaryFormat.d.ts.map +1 -1
- package/dist/summary/summaryFormat.js.map +1 -1
- package/dist/summary/summaryGenerator.js +12 -5
- package/dist/summary/summaryGenerator.js.map +1 -1
- package/dist/summary/summaryManager.js +58 -48
- package/dist/summary/summaryManager.js.map +1 -1
- package/dist/throttler.js +4 -1
- package/dist/throttler.js.map +1 -1
- package/lib/batchTracker.js +5 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/blobManager.d.ts +1 -18
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +39 -48
- package/lib/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +2 -11
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +34 -49
- package/lib/channelCollection.js.map +1 -1
- package/lib/connectionTelemetry.d.ts +1 -2
- package/lib/connectionTelemetry.d.ts.map +1 -1
- package/lib/connectionTelemetry.js +33 -15
- package/lib/connectionTelemetry.js.map +1 -1
- package/lib/containerHandleContext.js +4 -0
- package/lib/containerHandleContext.js.map +1 -1
- package/lib/containerRuntime.d.ts +7 -18
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +145 -43
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js +9 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +2 -16
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +144 -122
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStoreContexts.js +29 -28
- package/lib/dataStoreContexts.js.map +1 -1
- package/lib/dataStoreRegistry.js +1 -0
- package/lib/dataStoreRegistry.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +4 -4
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js +33 -28
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/deltaScheduler.d.ts +1 -2
- package/lib/deltaScheduler.d.ts.map +1 -1
- package/lib/deltaScheduler.js +13 -9
- package/lib/deltaScheduler.js.map +1 -1
- package/lib/error.js +2 -1
- package/lib/error.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +37 -17
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +0 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -2
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcSummaryStateTracker.js +19 -14
- package/lib/gc/gcSummaryStateTracker.js.map +1 -1
- package/lib/gc/gcTelemetry.js +12 -5
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/gcUnreferencedStateTracker.js +12 -1
- package/lib/gc/gcUnreferencedStateTracker.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/messageTypes.d.ts +1 -1
- package/lib/messageTypes.d.ts.map +1 -1
- package/lib/messageTypes.js.map +1 -1
- package/lib/opLifecycle/batchManager.js +5 -3
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/opCompressor.js +1 -0
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts +1 -1
- package/lib/opLifecycle/opDecompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +6 -4
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +3 -1
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +6 -0
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.js +15 -10
- package/lib/opLifecycle/outbox.js.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.d.ts.map +1 -1
- package/lib/opLifecycle/remoteMessageProcessor.js +4 -1
- package/lib/opLifecycle/remoteMessageProcessor.js.map +1 -1
- package/lib/opProperties.d.ts +1 -1
- package/lib/opProperties.d.ts.map +1 -1
- package/lib/opProperties.js.map +1 -1
- package/lib/packageVersion.d.ts +1 -1
- package/lib/packageVersion.js +1 -1
- package/lib/packageVersion.js.map +1 -1
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +34 -18
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/scheduleManager.d.ts +1 -2
- package/lib/scheduleManager.d.ts.map +1 -1
- package/lib/scheduleManager.js +15 -4
- package/lib/scheduleManager.js.map +1 -1
- package/lib/storageServiceWithAttachBlobs.js +1 -0
- package/lib/storageServiceWithAttachBlobs.js.map +1 -1
- package/lib/summary/documentSchema.js +17 -1
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/summary/orderedClientElection.js +19 -11
- package/lib/summary/orderedClientElection.js.map +1 -1
- package/lib/summary/runWhileConnectedCoordinator.js +4 -2
- package/lib/summary/runWhileConnectedCoordinator.js.map +1 -1
- package/lib/summary/runningSummarizer.d.ts +1 -1
- package/lib/summary/runningSummarizer.d.ts.map +1 -1
- package/lib/summary/runningSummarizer.js +57 -39
- package/lib/summary/runningSummarizer.js.map +1 -1
- package/lib/summary/summarizer.js +17 -8
- package/lib/summary/summarizer.js.map +1 -1
- package/lib/summary/summarizerClientElection.js +18 -7
- package/lib/summary/summarizerClientElection.js.map +1 -1
- package/lib/summary/summarizerHeuristics.js +30 -25
- package/lib/summary/summarizerHeuristics.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.d.ts +1 -2
- package/lib/summary/summarizerNode/summarizerNode.d.ts.map +1 -1
- package/lib/summary/summarizerNode/summarizerNode.js +12 -3
- package/lib/summary/summarizerNode/summarizerNode.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeUtils.js +2 -0
- package/lib/summary/summarizerNode/summarizerNodeUtils.js.map +1 -1
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js +20 -6
- package/lib/summary/summarizerNode/summarizerNodeWithGc.js.map +1 -1
- package/lib/summary/summarizerTypes.d.ts +2 -2
- package/lib/summary/summarizerTypes.d.ts.map +1 -1
- package/lib/summary/summarizerTypes.js.map +1 -1
- package/lib/summary/summaryCollection.d.ts +1 -2
- package/lib/summary/summaryCollection.d.ts.map +1 -1
- package/lib/summary/summaryCollection.js +23 -11
- package/lib/summary/summaryCollection.js.map +1 -1
- package/lib/summary/summaryFormat.d.ts +1 -2
- package/lib/summary/summaryFormat.d.ts.map +1 -1
- package/lib/summary/summaryFormat.js.map +1 -1
- package/lib/summary/summaryGenerator.js +12 -5
- package/lib/summary/summaryGenerator.js.map +1 -1
- package/lib/summary/summaryManager.js +58 -48
- package/lib/summary/summaryManager.js.map +1 -1
- package/lib/throttler.js +4 -1
- package/lib/throttler.js.map +1 -1
- package/package.json +17 -17
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -39
- package/src/channelCollection.ts +19 -72
- package/src/connectionTelemetry.ts +5 -2
- package/src/containerRuntime.ts +9 -32
- package/src/dataStoreContext.ts +4 -38
- package/src/deltaManagerProxies.ts +3 -5
- package/src/deltaScheduler.ts +4 -2
- package/src/gc/garbageCollection.ts +0 -2
- package/src/gc/gcDefinitions.ts +0 -4
- package/src/gc/index.ts +0 -1
- package/src/messageTypes.ts +1 -1
- package/src/opLifecycle/opDecompressor.ts +1 -1
- package/src/opLifecycle/opGroupingManager.ts +1 -1
- package/src/opLifecycle/opSplitter.ts +1 -1
- package/src/opLifecycle/remoteMessageProcessor.ts +4 -2
- package/src/opProperties.ts +4 -2
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +16 -5
- package/src/scheduleManager.ts +4 -2
- package/src/summary/runningSummarizer.ts +5 -2
- package/src/summary/summarizerNode/summarizerNode.ts +5 -2
- package/src/summary/summarizerTypes.ts +5 -2
- package/src/summary/summaryCollection.ts +1 -1
- package/src/summary/summaryFormat.ts +2 -1
- package/tsconfig.json +2 -0
package/lib/channelCollection.js
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
100
|
-
return context.
|
|
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.
|
|
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
|
-
|
|
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
|
|
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
|
-
//
|
|
587
|
-
|
|
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
|
|
678
|
-
if (
|
|
679
|
-
|
|
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() {
|