@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.
- 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/biome.jsonc +4 -0
- 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 +8 -9
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +71 -51
- 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 +23 -37
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +159 -133
- 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 +8 -9
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +72 -53
- 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 +23 -37
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +162 -136
- 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 +23 -20
- package/src/batchTracker.ts +1 -1
- package/src/blobManager.ts +1 -39
- package/src/channelCollection.ts +63 -76
- package/src/connectionTelemetry.ts +5 -2
- package/src/containerRuntime.ts +9 -32
- package/src/dataStoreContext.ts +38 -79
- 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
|
@@ -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
|
|
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
|
-
*
|
|
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
|
-
|
|
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":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EACN,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGrF,OAAO,
|
|
1
|
+
{"version":3,"file":"channelCollection.d.ts","sourceRoot":"","sources":["../src/channelCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,EACN,WAAW,EACX,WAAW,EACX,QAAQ,EACR,SAAS,EACT,oBAAoB,EACpB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAGrF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EACN,aAAa,EACb,yBAAyB,EACzB,MAAM,6CAA6C,CAAC;AAMrD,OAAO,EACN,qBAAqB,EACrB,iBAAiB,EACjB,sBAAsB,EACtB,WAAW,EAGX,SAAS,EACT,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EAGnB,kCAAkC,EAElC,qBAAqB,EAErB,MAAM,8CAA8C,CAAC;AAgBtD,OAAO,EAIN,iBAAiB,EAKjB,MAAM,0CAA0C,CAAC;AAElD,OAAO,EAEN,iBAAiB,EAEjB,MAAM,uBAAuB,CAAC;AAM/B,OAAO,EAEN,8BAA8B,EAC9B,wCAAwC,EAExC,0BAA0B,EAG1B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAmB,MAAM,eAAe,CAAC;AAGjF,OAAO,EACN,yBAAyB,EAGzB,MAAM,oBAAoB,CAAC;AAE5B;;;GAGG;AACH,oBAAY,cAAc;IACzB,kFAAkF;IAClF,IAAI,SAAS;IACb,0DAA0D;IAC1D,SAAS,cAAc;CACvB;AAED;;GAEG;AACH,eAAO,MAAM,8BAA8B,mBAAmB,CAAC;AAC/D;;;GAGG;AACH,eAAO,MAAM,6BAA6B,kBAAkB,CAAC;AAS7D;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAoE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACzC,EAAE,EAAE,MAAM,EACV,aAAa,EAAE,mBAAmB,GAChC,mBAAmB,CA4BrB;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,0BAA0B,UAE/E;AAED;;;;GAIG;AACH,qBAAa,iBAAkB,YAAW,sBAAsB,EAAE,WAAW;IA4B3E,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS;aACtD,aAAa,EAAE,mBAAmB;IAElD,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,kBAAkB;IACnC,OAAO,CAAC,QAAQ,CAAC,QAAQ;IA/B1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqC;IAEnE,SAAgB,yBAAyB,cAAqB;IAE9D,SAAS,CAAC,QAAQ,CAAC,EAAE,EAAE,iBAAiB,CAAC;IAEzC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiD;IAE7E,SAAgB,UAAU,EAAE,oBAAoB,CAAC,WAAW,CAAC,CAAC;IAE9D,SAAgB,kBAAkB,EAAE;QAEnC,QAAQ,CAAC,2BAA2B,EAAE,MAAM,CAAC;QAE7C,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;KAC1C,CAAC;IAEF,OAAO,CAAC,QAAQ,CAAC,eAAe,CAG5B;IAEJ,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAc;gBAG5B,YAAY,EAAE,aAAa,GAAG,SAAS,GAAG,SAAS,EACtD,aAAa,EAAE,mBAAmB,EAClD,UAAU,EAAE,oBAAoB,EACf,aAAa,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,EACnD,kBAAkB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,EACjD,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9C,iBAAiB,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,OAAO,CAAC,WAAW,CAAC;IA2ExE,IAAW,OAAO,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAEhD;IAED,IAAW,cAAc,IAAI,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC,CAE7D;IAEY,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAKzE,gDAAgD;IAChD,OAAO,CAAC,mBAAmB,CAAQ;IAEnC,SAAS,CAAC,0BAA0B,CAAC,EAAE,EAAE,MAAM,GAAG,mBAAmB;IAIrE;;;;OAIG;IACI,yBAAyB;IAIhC,OAAO,CAAC,oBAAoB;IAsF5B,OAAO,CAAC,mBAAmB;IAsBpB,uBAAuB,CAAC,UAAU,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IA4B1E,OAAO,CAAC,gBAAgB;IAIxB,yEAAyE;IACzE,OAAO,CAAC,qBAAqB;IAkB7B;;;;OAIG;IACH,OAAO,CAAC,2BAA2B;IAiBnC,SAAS,CAAC,qBAAqB,CAAC,YAAY,EAAE,0BAA0B;IAOxE;;;;;;;;;;;;;;;OAeG;IACH,SAAS,CAAC,iBAAiB,IAAI,MAAM;IAiB9B,uBAAuB,CAC7B,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACvB,cAAc,CAAC,EAAE,MAAM,GACrB,8BAA8B;IAU1B,sBAAsB,CAC5B,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACvB,KAAK,CAAC,EAAE,GAAG,EACX,cAAc,CAAC,EAAE,MAAM,GACrB,8BAA8B;IAUjC,SAAS,CAAC,aAAa,CAAC,CAAC,SAAS,0BAA0B,EAC3D,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,EACvB,WAAW,EAAE,KAAK,KAAK,EAAE,wCAAwC,KAAK,CAAC,EACvE,WAAW,CAAC,EAAE,GAAG,EACjB,cAAc,CAAC,EAAE,MAAM;IA6BxB,IAAW,QAAQ,YAElB;IACD,SAAgB,OAAO,aAAgC;IAEhD,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAapE,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAkBzE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,EAAE,OAAO;IAmBvD,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;cAc/C,4BAA4B,CAAC,QAAQ,EAAE,SAAS;YAWlD,oBAAoB;IA8C3B,OAAO,CACb,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,OAAO;IAkC9B,SAAS,CAAC,gBAAgB,CACzB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,yBAAyB,EAClC,KAAK,EAAE,OAAO,EACd,oBAAoB,EAAE,OAAO;YAuChB,YAAY;IAkC1B;;OAEG;IACU,uBAAuB,CACnC,EAAE,EAAE,MAAM,EACV,iBAAiB,EAAE,iBAAiB,GAClC,OAAO,CAAC,8BAA8B,GAAG,SAAS,CAAC;IAqBtD;;;;;;;;;OASG;IACH,OAAO,CAAC,oBAAoB;IA6DrB,aAAa,CAAC,UAAU,EAAE,qBAAqB,EAAE,KAAK,EAAE,OAAO;IA0B/D,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM;IAuBxD,cAAc,CAAC,WAAW,EAAE,WAAW,CAAC,SAAS,GAAG,WAAW,CAAC,QAAQ,GAAG,IAAI;IAStF,IAAW,IAAI,IAAI,MAAM,CAExB;IAEY,SAAS,CACrB,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,EACnB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,qBAAqB,CAAC;IAiCjC;;OAEG;IACI,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,qBAAqB;IA2CpF;;OAEG;IACI,eAAe,CAAC,gBAAgB,CAAC,EAAE,iBAAiB,GAAG,sBAAsB;IA2BpF;;;;;;;;;;;;OAYG;IACU,SAAS,CAAC,MAAM,GAAE,OAAe,GAAG,OAAO,CAAC,sBAAsB,CAAC;IAiChF;;;OAGG;IACI,gBAAgB,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE;IAkB9C,WAAW,CAAC,WAAW,EAAE,MAAM;IAqBtC;;;;;OAKG;IACI,qBAAqB,CAAC,yBAAyB,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,MAAM,EAAE;IAgC7F;;;;;;;OAOG;IACI,sBAAsB,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE;IAmBjE;;;OAGG;YACW,iBAAiB;IAY/B;;OAEG;IACU,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAO9F;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAcvD,UAAU,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAIhC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,SAAS,CAAC;CAwD3D;AAED,wBAAgB,uBAAuB,CACtC,QAAQ,EAAE,aAAa,GAAG,SAAS,EACnC,QAAQ,CAAC,EAAE,yBAAyB,GAClC,aAAa,GAAG,SAAS,CAsB3B;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,OAAO,EACjB,sBAAsB,EAAE,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,IAAI,GACxE,IAAI,CA+BN;AAED,gBAAgB;AAChB,qBAAa,wBAAwB,CAAC,CAAC,SAAS,iBAAiB,GAAG,iBAAiB,CACpF,YAAW,sBAAsB;IAShC,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAGlC,OAAO,CAAC,QAAQ,CAAC,IAAI;IAVtB,SAAgB,IAAI,8BAA8B;IAE3C,uBAAuB,EAAE,uBAAuB,CAAC;gBAGvD,eAAe,EAAE,kCAAkC,EAElC,iBAAiB,EAAE,CACnC,OAAO,EAAE,sBAAsB,KAC3B,OAAO,CAAC,WAAW,CAAC,EACR,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,qBAAqB,CAAC,OAAO,iBAAiB,CAAC,KAAK,CAAC;IAKvF,IAAW,sBAAsB,SAEhC;IAEY,oBAAoB,CAChC,OAAO,EAAE,sBAAsB,EAC/B,SAAS,EAAE,OAAO,GAChB,OAAO,CAAC,sBAAsB,CAAC;CAalC"}
|
|
@@ -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
|
-
|
|
103
|
-
return context.
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
374
|
-
const
|
|
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
|
|
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
|
-
//
|
|
592
|
-
|
|
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
|
|
683
|
-
if (
|
|
684
|
-
|
|
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.
|
|
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
|
-
*
|
|
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
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
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() {
|