@fluidframework/container-runtime 0.58.1001 → 0.58.2001
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/dist/batchTracker.d.ts +1 -1
- package/dist/batchTracker.d.ts.map +1 -1
- package/dist/batchTracker.js.map +1 -1
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +8 -3
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStore.js.map +1 -1
- package/dist/dataStoreContext.d.ts +17 -14
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +41 -31
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +4 -2
- package/dist/dataStores.js.map +1 -1
- package/dist/garbageCollection.d.ts +1 -1
- package/dist/garbageCollection.d.ts.map +1 -1
- package/dist/garbageCollection.js +3 -4
- package/dist/garbageCollection.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/runningSummarizer.d.ts.map +1 -1
- package/dist/runningSummarizer.js +1 -1
- package/dist/runningSummarizer.js.map +1 -1
- package/dist/summarizerClientElection.d.ts.map +1 -1
- package/dist/summarizerClientElection.js +1 -0
- package/dist/summarizerClientElection.js.map +1 -1
- package/dist/summarizerTypes.d.ts +13 -1
- package/dist/summarizerTypes.d.ts.map +1 -1
- package/dist/summarizerTypes.js.map +1 -1
- package/dist/summaryGenerator.d.ts +3 -3
- package/dist/summaryGenerator.d.ts.map +1 -1
- package/dist/summaryGenerator.js +1 -0
- package/dist/summaryGenerator.js.map +1 -1
- package/dist/summaryManager.d.ts.map +1 -1
- package/dist/summaryManager.js.map +1 -1
- package/lib/batchTracker.d.ts +1 -1
- package/lib/batchTracker.d.ts.map +1 -1
- package/lib/batchTracker.js.map +1 -1
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +8 -3
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStore.js.map +1 -1
- package/lib/dataStoreContext.d.ts +17 -14
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +41 -31
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +4 -2
- package/lib/dataStores.js.map +1 -1
- package/lib/garbageCollection.d.ts +1 -1
- package/lib/garbageCollection.d.ts.map +1 -1
- package/lib/garbageCollection.js +1 -2
- package/lib/garbageCollection.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/runningSummarizer.d.ts.map +1 -1
- package/lib/runningSummarizer.js +1 -1
- package/lib/runningSummarizer.js.map +1 -1
- package/lib/summarizerClientElection.d.ts.map +1 -1
- package/lib/summarizerClientElection.js +1 -0
- package/lib/summarizerClientElection.js.map +1 -1
- package/lib/summarizerTypes.d.ts +13 -1
- package/lib/summarizerTypes.d.ts.map +1 -1
- package/lib/summarizerTypes.js.map +1 -1
- package/lib/summaryGenerator.d.ts +3 -3
- package/lib/summaryGenerator.d.ts.map +1 -1
- package/lib/summaryGenerator.js +1 -0
- package/lib/summaryGenerator.js.map +1 -1
- package/lib/summaryManager.d.ts.map +1 -1
- package/lib/summaryManager.js.map +1 -1
- package/package.json +17 -13
- package/src/batchTracker.ts +2 -2
- package/src/containerRuntime.ts +4 -1
- package/src/dataStore.ts +1 -1
- package/src/dataStoreContext.ts +38 -36
- package/src/dataStores.ts +2 -1
- package/src/garbageCollection.ts +5 -6
- package/src/packageVersion.ts +1 -1
- package/src/runningSummarizer.ts +5 -4
- package/src/summarizerClientElection.ts +1 -0
- package/src/summarizerTypes.ts +18 -0
- package/src/summaryGenerator.ts +41 -5
- package/src/summaryManager.ts +0 -1
package/dist/dataStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAGH,+DAA+D;AAC/D,iFAAoE;AAGpE,qEAAmE;AAenE;;;;;GAKG;AACK,MAAM,uBAAuB,GAAG,CACpC,0BAA+B,EACqB,EAAE;IACtD,OAAO,QAAO,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,UAAU,CAAA,KAAK,QAAQ;WAC1D,QAAO,0BAA0B,aAA1B,0BAA0B,uBAA1B,0BAA0B,CAAE,KAAK,CAAA,KAAK,QAAQ,CAAC;AACjE,CAAC,CAAC;AALY,QAAA,uBAAuB,2BAKnC;AAEK,MAAM,kBAAkB,GAAG,CAC9B,qBAA6C,EAC7C,UAAkB,EAClB,OAAyB,EACzB,UAAsB,EACtB,MAAwB,EACd,EAAE,CAAC,IAAI,SAAS,CAAC,qBAAqB,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;AANlF,QAAA,kBAAkB,sBAMgE;AAE/F,IAAK,UAIJ;AAJD,WAAK,UAAU;IACX,iCAAmB,CAAA;IACnB,mCAAqB,CAAA;IACrB,2BAAa,CAAA;AACjB,CAAC,EAJI,UAAU,KAAV,UAAU,QAId;AAED,MAAM,SAAS;IAqEX,YACqB,qBAA6C,EAC7C,UAAkB,EAClB,OAAyB,
|
|
1
|
+
{"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"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","sourcesContent":["/*!\n * Copyright (c) Microsoft Corporation and contributors. All rights reserved.\n * Licensed under the MIT License.\n */\n\nimport { ITelemetryLogger } from \"@fluidframework/common-definitions\";\nimport { unreachableCase } from \"@fluidframework/common-utils\";\nimport { AttachState } from \"@fluidframework/container-definitions\";\nimport { IRequest, IResponse } from \"@fluidframework/core-interfaces\";\nimport { AliasResult, IDataStore, IFluidDataStoreChannel } from \"@fluidframework/runtime-definitions\";\nimport { TelemetryDataTag } from \"@fluidframework/telemetry-utils\";\nimport { ContainerRuntime } from \"./containerRuntime\";\nimport { DataStores } from \"./dataStores\";\n\n/**\n * Interface for an op to be used for assigning an\n * alias to a datastore\n */\nexport interface IDataStoreAliasMessage {\n /** The internal id of the datastore */\n readonly internalId: string;\n /** The alias name to be assigned to the datastore */\n readonly alias: string;\n}\n\n/**\n * Type guard that returns true if the given alias message is actually an instance of\n * a class which implements @see IDataStoreAliasMessage\n * @param maybeDataStoreAliasMessage - message object to be validated\n * @returns True if the @see IDataStoreAliasMessage is fully implemented, false otherwise\n */\n export const isDataStoreAliasMessage = (\n maybeDataStoreAliasMessage: any,\n): maybeDataStoreAliasMessage is IDataStoreAliasMessage => {\n return typeof maybeDataStoreAliasMessage?.internalId === \"string\"\n && typeof maybeDataStoreAliasMessage?.alias === \"string\";\n};\n\nexport const channelToDataStore = (\n fluidDataStoreChannel: IFluidDataStoreChannel,\n internalId: string,\n runtime: ContainerRuntime,\n datastores: DataStores,\n logger: ITelemetryLogger,\n): IDataStore => new DataStore(fluidDataStoreChannel, internalId, runtime, datastores, logger);\n\nenum AliasState {\n Aliased = \"Aliased\",\n Aliasing = \"Aliasing\",\n None = \"None\",\n}\n\nclass DataStore implements IDataStore {\n private aliasState: AliasState = AliasState.None;\n private alias: string | undefined;\n\n async trySetAlias(alias: string): Promise<AliasResult> {\n switch (this.aliasState) {\n // If we're already aliasing, throw an exception\n case AliasState.Aliasing:\n return \"Aliasing\";\n // If this datastore is already aliased, return true only if this\n // is a repeated call for the same alias\n case AliasState.Aliased:\n return this.alias === alias ? \"Success\" : \"AlreadyAliased\";\n // There is no current or past alias operation for this datastore,\n // it is safe to continue execution\n case AliasState.None: break;\n default: unreachableCase(this.aliasState);\n }\n\n this.aliasState = AliasState.Aliasing;\n const message: IDataStoreAliasMessage = {\n internalId: this.internalId,\n alias,\n };\n\n this.fluidDataStoreChannel.bindToContext();\n\n if (this.runtime.attachState === AttachState.Detached) {\n const localResult = this.datastores.processAliasMessageCore(message);\n // Explicitly Lock-out future attempts of aliasing,\n // regardless of result\n this.aliasState = AliasState.Aliased;\n return localResult ? \"Success\" : \"Conflict\";\n }\n\n const aliased = await this.ackBasedPromise<boolean>((resolve) => {\n this.runtime.submitDataStoreAliasOp(message, resolve);\n }).then((succeeded) => {\n // Explicitly Lock-out future attempts of aliasing,\n // regardless of result\n this.aliasState = AliasState.Aliased;\n if (succeeded) {\n this.alias = alias;\n }\n\n return succeeded;\n }).catch((error) => {\n this.logger.sendErrorEvent({\n eventName: \"AliasingException\",\n alias: {\n value: alias,\n tag: TelemetryDataTag.UserData,\n },\n internalId: {\n value: this.internalId,\n tag: TelemetryDataTag.PackageData,\n },\n }, error);\n this.aliasState = AliasState.None;\n return false;\n });\n\n return aliased ? \"Success\" : \"Conflict\";\n }\n\n async request(request: IRequest): Promise<IResponse> {\n return this.fluidDataStoreChannel.request(request);\n }\n\n constructor(\n private readonly fluidDataStoreChannel: IFluidDataStoreChannel,\n private readonly internalId: string,\n private readonly runtime: ContainerRuntime,\n private readonly datastores: DataStores,\n private readonly logger: ITelemetryLogger,\n ) { }\n public get IFluidRouter() { return this.fluidDataStoreChannel; }\n\n private async ackBasedPromise<T>(\n executor: (resolve: (value: T | PromiseLike<T>) => void,\n reject: (reason?: any) => void) => void,\n ): Promise<T> {\n let rejectBecauseDispose: () => void;\n return new Promise<T>((resolve, reject) => {\n rejectBecauseDispose =\n () => reject(new Error(\"ContainerRuntime disposed while this ack-based Promise was pending\"));\n\n if (this.runtime.disposed) {\n rejectBecauseDispose();\n return;\n }\n\n this.runtime.on(\"dispose\", rejectBecauseDispose);\n executor(resolve, reject);\n }).finally(() => {\n this.runtime.off(\"dispose\", rejectBecauseDispose);\n });\n }\n}\n"]}
|
|
@@ -14,6 +14,7 @@ import { ContainerRuntime } from "./containerRuntime";
|
|
|
14
14
|
export declare function createAttributesBlob(pkg: readonly string[], isRootDataStore: boolean, disableIsolatedChannels: boolean): ITreeEntry;
|
|
15
15
|
interface ISnapshotDetails {
|
|
16
16
|
pkg: readonly string[];
|
|
17
|
+
isRootDataStore: boolean;
|
|
17
18
|
snapshot?: ISnapshotTree;
|
|
18
19
|
}
|
|
19
20
|
/** Properties necessary for creating a FluidDataStoreContext */
|
|
@@ -65,7 +66,21 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
65
66
|
get disposed(): boolean;
|
|
66
67
|
get attachState(): AttachState;
|
|
67
68
|
get IFluidDataStoreRegistry(): IFluidDataStoreRegistry | undefined;
|
|
69
|
+
/**
|
|
70
|
+
* A datastore is considered as root if it
|
|
71
|
+
* 1. is root in memory - see isInMemoryRoot
|
|
72
|
+
* 2. is root as part of the base snapshot that the datastore loaded from
|
|
73
|
+
* @returns whether a datastore is root
|
|
74
|
+
*/
|
|
68
75
|
isRoot(): Promise<boolean>;
|
|
76
|
+
/**
|
|
77
|
+
* There are 3 states where isInMemoryRoot needs to be true
|
|
78
|
+
* 1. when a datastore becomes aliased. This can happen for both remote and local datastores
|
|
79
|
+
* 2. when a datastore is created locally as root
|
|
80
|
+
* 3. when a datastore is created locally as root and is rehydrated
|
|
81
|
+
* @returns whether a datastore is root in memory
|
|
82
|
+
*/
|
|
83
|
+
protected isInMemoryRoot(): boolean;
|
|
69
84
|
protected registry: IFluidDataStoreRegistry | undefined;
|
|
70
85
|
protected detachedRuntimeCreation: boolean;
|
|
71
86
|
readonly bindToContext: () => void;
|
|
@@ -75,7 +90,7 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
75
90
|
protected channelDeferred: Deferred<IFluidDataStoreChannel> | undefined;
|
|
76
91
|
private _baseSnapshot;
|
|
77
92
|
protected _attachState: AttachState;
|
|
78
|
-
|
|
93
|
+
private _isInMemoryRoot;
|
|
79
94
|
protected readonly summarizerNode: ISummarizerNodeWithGC;
|
|
80
95
|
private readonly subLogger;
|
|
81
96
|
private readonly thresholdOpsCounter;
|
|
@@ -182,7 +197,7 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
182
197
|
* This method should not be used outside of the aliasing context.
|
|
183
198
|
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
184
199
|
*/
|
|
185
|
-
|
|
200
|
+
setInMemoryRoot(): void;
|
|
186
201
|
/**
|
|
187
202
|
* @deprecated - Renamed to getBaseGCDetails().
|
|
188
203
|
*/
|
|
@@ -206,12 +221,6 @@ export declare class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
206
221
|
getInitialGCSummaryDetails(): Promise<IGarbageCollectionSummaryDetails>;
|
|
207
222
|
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
208
223
|
generateAttachMessage(): IAttachMessage;
|
|
209
|
-
/**
|
|
210
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
211
|
-
* This method should not be used outside of the aliasing context.
|
|
212
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
213
|
-
*/
|
|
214
|
-
setRoot(): void;
|
|
215
224
|
}
|
|
216
225
|
/**
|
|
217
226
|
* Base class for detached & attached context classes
|
|
@@ -231,12 +240,6 @@ export declare class LocalFluidDataStoreContextBase extends FluidDataStoreContex
|
|
|
231
240
|
*/
|
|
232
241
|
getInitialGCSummaryDetails(): Promise<IGarbageCollectionSummaryDetails>;
|
|
233
242
|
getBaseGCDetails(): Promise<IGarbageCollectionDetailsBase>;
|
|
234
|
-
/**
|
|
235
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
236
|
-
* This method should not be used outside of the aliasing context.
|
|
237
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
238
|
-
*/
|
|
239
|
-
setRoot(): void;
|
|
240
243
|
}
|
|
241
244
|
/**
|
|
242
245
|
* context implementation for "attached" data store runtime.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AACnF,OAAO,EACH,WAAW,EACX,QAAQ,EACR,SAAS,EACT,YAAY,EACf,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACH,SAAS,EACT,aAAa,EACb,SAAS,EACT,WAAW,EACX,cAAc,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAEH,QAAQ,EAER,iBAAiB,EACpB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAG7E,OAAO,EACH,cAAc,EACd,gBAAgB,EAChB,cAAc,EACd,yBAAyB,EACzB,aAAa,EACb,UAAU,EACb,MAAM,sCAAsC,CAAC;AAC9C,OAAO,EACH,iBAAiB,EACpB,MAAM,+CAA+C,CAAC;AACvD,OAAO,EAEH,2BAA2B,EAC3B,8BAA8B,EAG9B,cAAc,EACd,sBAAsB,EACtB,sBAAsB,EACtB,8BAA8B,EAC9B,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,6BAA6B,EAC7B,gCAAgC,EAChC,qBAAqB,EACrB,6BAA6B,EAE7B,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACtB,MAAM,qCAAqC,CAAC;AAU7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA2BtD,wBAAgB,oBAAoB,CAChC,GAAG,EAAE,SAAS,MAAM,EAAE,EACtB,eAAe,EAAE,OAAO,EACxB,uBAAuB,EAAE,OAAO,GACjC,UAAU,CAGZ;AAED,UAAU,gBAAgB;IACtB,GAAG,EAAE,SAAS,MAAM,EAAE,CAAC;IACvB,QAAQ,CAAC,EAAE,aAAa,CAAC;CAC5B;AAOD,gEAAgE;AAChE,MAAM,WAAW,2BAA2B;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;IAC5B,QAAQ,CAAC,sBAAsB,EAAE,2BAA2B,CAAC;IAC7D,QAAQ,CAAC,iBAAiB,EAAE,OAAO,CAAC;IACpC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;IAC1C,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;CACrC;AAED,sEAAsE;AACtE,MAAM,WAAW,gCAAiC,SAAQ,2BAA2B;IACjF,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,SAAS,CAAC;IAC7C,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,SAAS,CAAC;IACjD,QAAQ,CAAC,eAAe,EAAE,OAAO,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,aAAa,EAAE,CAAC,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;IAClE;;OAEG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;CAC9B;AAED,uEAAuE;AACvE,MAAM,WAAW,iCAAkC,SAAQ,2BAA2B;IAClF,QAAQ,CAAC,YAAY,EAAE,aAAa,GAAG,MAAM,GAAG,SAAS,CAAC;IAC1D,QAAQ,CAAC,gBAAgB,EAAE,MAAM,OAAO,CAAC,6BAA6B,GAAG,SAAS,CAAC,CAAC;CACvF;AAED;;GAEG;AACH,8BAAsB,qBAAsB,SAAQ,iBAAiB,CAAC,4BAA4B,CAAE,YAChG,sBAAsB,EACtB,WAAW;
|
|
1
|
+
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
|
package/dist/dataStoreContext.js
CHANGED
|
@@ -44,7 +44,7 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
44
44
|
this.detachedRuntimeCreation = false;
|
|
45
45
|
this.loaded = false;
|
|
46
46
|
this.pending = [];
|
|
47
|
-
this.
|
|
47
|
+
this._isInMemoryRoot = false;
|
|
48
48
|
this._containerRuntime = props.runtime;
|
|
49
49
|
this.id = props.id;
|
|
50
50
|
this.storage = props.storage;
|
|
@@ -110,11 +110,24 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
110
110
|
get IFluidDataStoreRegistry() {
|
|
111
111
|
return this.registry;
|
|
112
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* A datastore is considered as root if it
|
|
115
|
+
* 1. is root in memory - see isInMemoryRoot
|
|
116
|
+
* 2. is root as part of the base snapshot that the datastore loaded from
|
|
117
|
+
* @returns whether a datastore is root
|
|
118
|
+
*/
|
|
113
119
|
async isRoot() {
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
120
|
+
return this.isInMemoryRoot() || (await this.getInitialSnapshotDetails()).isRootDataStore;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* There are 3 states where isInMemoryRoot needs to be true
|
|
124
|
+
* 1. when a datastore becomes aliased. This can happen for both remote and local datastores
|
|
125
|
+
* 2. when a datastore is created locally as root
|
|
126
|
+
* 3. when a datastore is created locally as root and is rehydrated
|
|
127
|
+
* @returns whether a datastore is root in memory
|
|
128
|
+
*/
|
|
129
|
+
isInMemoryRoot() {
|
|
130
|
+
return this._isInMemoryRoot;
|
|
118
131
|
}
|
|
119
132
|
dispose() {
|
|
120
133
|
if (this._disposed) {
|
|
@@ -252,7 +265,8 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
252
265
|
}
|
|
253
266
|
// Add data store's attributes to the summary.
|
|
254
267
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
255
|
-
const
|
|
268
|
+
const isRoot = await this.isRoot();
|
|
269
|
+
const attributes = createAttributes(pkg, isRoot, this.disableIsolatedChannels);
|
|
256
270
|
runtime_utils_1.addBlobToSummary(summarizeResult, summaryFormat_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
257
271
|
// Add GC data to the summary if it's not written at the root.
|
|
258
272
|
if (!this.writeGCDataAtRoot) {
|
|
@@ -427,6 +441,14 @@ class FluidDataStoreContext extends common_utils_1.TypedEventEmitter {
|
|
|
427
441
|
}
|
|
428
442
|
return this._containerRuntime.getAbsoluteUrl(relativeUrl);
|
|
429
443
|
}
|
|
444
|
+
/**
|
|
445
|
+
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
446
|
+
* This method should not be used outside of the aliasing context.
|
|
447
|
+
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
448
|
+
*/
|
|
449
|
+
setInMemoryRoot() {
|
|
450
|
+
this._isInMemoryRoot = true;
|
|
451
|
+
}
|
|
430
452
|
reSubmit(contents, localOpMetadata) {
|
|
431
453
|
common_utils_1.assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
432
454
|
const innerContents = contents;
|
|
@@ -504,16 +526,16 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
504
526
|
* data stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
505
527
|
* roots in the document but they won't break.
|
|
506
528
|
*/
|
|
507
|
-
isRootDataStore =
|
|
529
|
+
isRootDataStore = (_b = attributes.isRootDataStore) !== null && _b !== void 0 ? _b : true;
|
|
508
530
|
if (summaryFormat_1.hasIsolatedChannels(attributes)) {
|
|
509
531
|
tree = tree.trees[runtime_definitions_1.channelsTreeName];
|
|
510
532
|
common_utils_1.assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
511
533
|
}
|
|
512
534
|
}
|
|
513
|
-
this.isRootDataStore = isRootDataStore;
|
|
514
535
|
return {
|
|
515
536
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
516
537
|
pkg: this.pkg,
|
|
538
|
+
isRootDataStore,
|
|
517
539
|
snapshot: tree,
|
|
518
540
|
};
|
|
519
541
|
});
|
|
@@ -538,14 +560,6 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
538
560
|
generateAttachMessage() {
|
|
539
561
|
throw new Error("Cannot attach remote store");
|
|
540
562
|
}
|
|
541
|
-
/**
|
|
542
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
543
|
-
* This method should not be used outside of the aliasing context.
|
|
544
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
545
|
-
*/
|
|
546
|
-
setRoot() {
|
|
547
|
-
this.isRootDataStore = true;
|
|
548
|
-
}
|
|
549
563
|
}
|
|
550
564
|
exports.RemoteFluidDataStoreContext = RemoteFluidDataStoreContext;
|
|
551
565
|
/**
|
|
@@ -553,10 +567,11 @@ exports.RemoteFluidDataStoreContext = RemoteFluidDataStoreContext;
|
|
|
553
567
|
*/
|
|
554
568
|
class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
555
569
|
constructor(props) {
|
|
556
|
-
var _a;
|
|
557
570
|
super(props, props.snapshotTree !== undefined ? true : false /* existing */, props.snapshotTree ? container_definitions_1.BindState.Bound : container_definitions_1.BindState.NotBound, true /* isLocalDataStore */, props.bindChannelFn);
|
|
558
571
|
this.snapshotTree = props.snapshotTree;
|
|
559
|
-
|
|
572
|
+
if (props.isRootDataStore === true) {
|
|
573
|
+
this.setInMemoryRoot();
|
|
574
|
+
}
|
|
560
575
|
this.createProps = props.createProps;
|
|
561
576
|
this.attachListeners();
|
|
562
577
|
}
|
|
@@ -573,14 +588,13 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
573
588
|
generateAttachMessage() {
|
|
574
589
|
common_utils_1.assert(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
|
|
575
590
|
common_utils_1.assert(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
576
|
-
common_utils_1.assert(this.isRootDataStore !== undefined, 0x151 /* "isRootDataStore should be available in local data store context" */);
|
|
577
591
|
const summarizeResult = this.channel.getAttachSummary();
|
|
578
592
|
if (!this.disableIsolatedChannels) {
|
|
579
593
|
// Wrap dds summaries in .channels subtree.
|
|
580
594
|
summaryFormat_1.wrapSummaryInChannelsTree(summarizeResult);
|
|
581
595
|
}
|
|
582
596
|
// Add data store's attributes to the summary.
|
|
583
|
-
const attributes = createAttributes(this.pkg, this.
|
|
597
|
+
const attributes = createAttributes(this.pkg, this.isInMemoryRoot(), this.disableIsolatedChannels);
|
|
584
598
|
runtime_utils_1.addBlobToSummary(summarizeResult, summaryFormat_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
585
599
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
586
600
|
const snapshot = runtime_utils_1.convertSummaryTreeToITree(summarizeResult.summary);
|
|
@@ -595,6 +609,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
595
609
|
var _a;
|
|
596
610
|
let snapshot = this.snapshotTree;
|
|
597
611
|
let attributes;
|
|
612
|
+
let isRootDataStore = false;
|
|
598
613
|
if (snapshot !== undefined) {
|
|
599
614
|
// Get the dataStore attributes.
|
|
600
615
|
// Note: storage can be undefined in special case while detached.
|
|
@@ -608,13 +623,16 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
608
623
|
// If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
|
|
609
624
|
// stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
610
625
|
// roots in the document but they won't break.
|
|
611
|
-
|
|
626
|
+
if ((_a = attributes.isRootDataStore) !== null && _a !== void 0 ? _a : true) {
|
|
627
|
+
isRootDataStore = true;
|
|
628
|
+
this.setInMemoryRoot();
|
|
629
|
+
}
|
|
612
630
|
}
|
|
613
631
|
}
|
|
614
632
|
common_utils_1.assert(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
|
|
615
|
-
common_utils_1.assert(this.isRootDataStore !== undefined, 0x153 /* "isRootDataStore should be available in local data store" */);
|
|
616
633
|
return {
|
|
617
634
|
pkg: this.pkg,
|
|
635
|
+
isRootDataStore,
|
|
618
636
|
snapshot,
|
|
619
637
|
};
|
|
620
638
|
}
|
|
@@ -629,14 +647,6 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
629
647
|
// Local data store does not have initial summary.
|
|
630
648
|
return {};
|
|
631
649
|
}
|
|
632
|
-
/**
|
|
633
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
634
|
-
* This method should not be used outside of the aliasing context.
|
|
635
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
636
|
-
*/
|
|
637
|
-
setRoot() {
|
|
638
|
-
this.isRootDataStore = true;
|
|
639
|
-
}
|
|
640
650
|
}
|
|
641
651
|
exports.LocalFluidDataStoreContextBase = LocalFluidDataStoreContextBase;
|
|
642
652
|
/**
|
|
@@ -673,7 +683,7 @@ class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreContextBase
|
|
|
673
683
|
this.detachedRuntimeCreation = false;
|
|
674
684
|
this.channelDeferred = new common_utils_1.Deferred();
|
|
675
685
|
super.bindRuntime(dataStoreRuntime);
|
|
676
|
-
if (this.
|
|
686
|
+
if (await this.isRoot()) {
|
|
677
687
|
dataStoreRuntime.bindToContext();
|
|
678
688
|
}
|
|
679
689
|
}
|