@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/lib/dataStore.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStore.js","sourceRoot":"","sources":["../src/dataStore.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,uCAAuC,CAAC;AAGpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAenE;;;;;GAKG;AACF,MAAM,CAAC,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;AAEF,MAAM,CAAC,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;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/lib/dataStoreContext.js
CHANGED
|
@@ -40,7 +40,7 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
40
40
|
this.detachedRuntimeCreation = false;
|
|
41
41
|
this.loaded = false;
|
|
42
42
|
this.pending = [];
|
|
43
|
-
this.
|
|
43
|
+
this._isInMemoryRoot = false;
|
|
44
44
|
this._containerRuntime = props.runtime;
|
|
45
45
|
this.id = props.id;
|
|
46
46
|
this.storage = props.storage;
|
|
@@ -106,11 +106,24 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
106
106
|
get IFluidDataStoreRegistry() {
|
|
107
107
|
return this.registry;
|
|
108
108
|
}
|
|
109
|
+
/**
|
|
110
|
+
* A datastore is considered as root if it
|
|
111
|
+
* 1. is root in memory - see isInMemoryRoot
|
|
112
|
+
* 2. is root as part of the base snapshot that the datastore loaded from
|
|
113
|
+
* @returns whether a datastore is root
|
|
114
|
+
*/
|
|
109
115
|
async isRoot() {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
116
|
+
return this.isInMemoryRoot() || (await this.getInitialSnapshotDetails()).isRootDataStore;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* There are 3 states where isInMemoryRoot needs to be true
|
|
120
|
+
* 1. when a datastore becomes aliased. This can happen for both remote and local datastores
|
|
121
|
+
* 2. when a datastore is created locally as root
|
|
122
|
+
* 3. when a datastore is created locally as root and is rehydrated
|
|
123
|
+
* @returns whether a datastore is root in memory
|
|
124
|
+
*/
|
|
125
|
+
isInMemoryRoot() {
|
|
126
|
+
return this._isInMemoryRoot;
|
|
114
127
|
}
|
|
115
128
|
dispose() {
|
|
116
129
|
if (this._disposed) {
|
|
@@ -248,7 +261,8 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
248
261
|
}
|
|
249
262
|
// Add data store's attributes to the summary.
|
|
250
263
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
251
|
-
const
|
|
264
|
+
const isRoot = await this.isRoot();
|
|
265
|
+
const attributes = createAttributes(pkg, isRoot, this.disableIsolatedChannels);
|
|
252
266
|
addBlobToSummary(summarizeResult, dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
253
267
|
// Add GC data to the summary if it's not written at the root.
|
|
254
268
|
if (!this.writeGCDataAtRoot) {
|
|
@@ -423,6 +437,14 @@ export class FluidDataStoreContext extends TypedEventEmitter {
|
|
|
423
437
|
}
|
|
424
438
|
return this._containerRuntime.getAbsoluteUrl(relativeUrl);
|
|
425
439
|
}
|
|
440
|
+
/**
|
|
441
|
+
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
442
|
+
* This method should not be used outside of the aliasing context.
|
|
443
|
+
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
444
|
+
*/
|
|
445
|
+
setInMemoryRoot() {
|
|
446
|
+
this._isInMemoryRoot = true;
|
|
447
|
+
}
|
|
426
448
|
reSubmit(contents, localOpMetadata) {
|
|
427
449
|
assert(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
428
450
|
const innerContents = contents;
|
|
@@ -499,16 +521,16 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
499
521
|
* data stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
500
522
|
* roots in the document but they won't break.
|
|
501
523
|
*/
|
|
502
|
-
isRootDataStore =
|
|
524
|
+
isRootDataStore = (_b = attributes.isRootDataStore) !== null && _b !== void 0 ? _b : true;
|
|
503
525
|
if (hasIsolatedChannels(attributes)) {
|
|
504
526
|
tree = tree.trees[channelsTreeName];
|
|
505
527
|
assert(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
506
528
|
}
|
|
507
529
|
}
|
|
508
|
-
this.isRootDataStore = isRootDataStore;
|
|
509
530
|
return {
|
|
510
531
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
511
532
|
pkg: this.pkg,
|
|
533
|
+
isRootDataStore,
|
|
512
534
|
snapshot: tree,
|
|
513
535
|
};
|
|
514
536
|
});
|
|
@@ -533,24 +555,17 @@ export class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
533
555
|
generateAttachMessage() {
|
|
534
556
|
throw new Error("Cannot attach remote store");
|
|
535
557
|
}
|
|
536
|
-
/**
|
|
537
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
538
|
-
* This method should not be used outside of the aliasing context.
|
|
539
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
540
|
-
*/
|
|
541
|
-
setRoot() {
|
|
542
|
-
this.isRootDataStore = true;
|
|
543
|
-
}
|
|
544
558
|
}
|
|
545
559
|
/**
|
|
546
560
|
* Base class for detached & attached context classes
|
|
547
561
|
*/
|
|
548
562
|
export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
549
563
|
constructor(props) {
|
|
550
|
-
var _a;
|
|
551
564
|
super(props, props.snapshotTree !== undefined ? true : false /* existing */, props.snapshotTree ? BindState.Bound : BindState.NotBound, true /* isLocalDataStore */, props.bindChannelFn);
|
|
552
565
|
this.snapshotTree = props.snapshotTree;
|
|
553
|
-
|
|
566
|
+
if (props.isRootDataStore === true) {
|
|
567
|
+
this.setInMemoryRoot();
|
|
568
|
+
}
|
|
554
569
|
this.createProps = props.createProps;
|
|
555
570
|
this.attachListeners();
|
|
556
571
|
}
|
|
@@ -567,14 +582,13 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
567
582
|
generateAttachMessage() {
|
|
568
583
|
assert(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
|
|
569
584
|
assert(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
570
|
-
assert(this.isRootDataStore !== undefined, 0x151 /* "isRootDataStore should be available in local data store context" */);
|
|
571
585
|
const summarizeResult = this.channel.getAttachSummary();
|
|
572
586
|
if (!this.disableIsolatedChannels) {
|
|
573
587
|
// Wrap dds summaries in .channels subtree.
|
|
574
588
|
wrapSummaryInChannelsTree(summarizeResult);
|
|
575
589
|
}
|
|
576
590
|
// Add data store's attributes to the summary.
|
|
577
|
-
const attributes = createAttributes(this.pkg, this.
|
|
591
|
+
const attributes = createAttributes(this.pkg, this.isInMemoryRoot(), this.disableIsolatedChannels);
|
|
578
592
|
addBlobToSummary(summarizeResult, dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
579
593
|
// Attach message needs the summary in ITree format. Convert the ISummaryTree into an ITree.
|
|
580
594
|
const snapshot = convertSummaryTreeToITree(summarizeResult.summary);
|
|
@@ -589,6 +603,7 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
589
603
|
var _a;
|
|
590
604
|
let snapshot = this.snapshotTree;
|
|
591
605
|
let attributes;
|
|
606
|
+
let isRootDataStore = false;
|
|
592
607
|
if (snapshot !== undefined) {
|
|
593
608
|
// Get the dataStore attributes.
|
|
594
609
|
// Note: storage can be undefined in special case while detached.
|
|
@@ -602,13 +617,16 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
602
617
|
// If there is no isRootDataStore in the attributes blob, set it to true. This ensures that data
|
|
603
618
|
// stores in older documents are not garbage collected incorrectly. This may lead to additional
|
|
604
619
|
// roots in the document but they won't break.
|
|
605
|
-
|
|
620
|
+
if ((_a = attributes.isRootDataStore) !== null && _a !== void 0 ? _a : true) {
|
|
621
|
+
isRootDataStore = true;
|
|
622
|
+
this.setInMemoryRoot();
|
|
623
|
+
}
|
|
606
624
|
}
|
|
607
625
|
}
|
|
608
626
|
assert(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
|
|
609
|
-
assert(this.isRootDataStore !== undefined, 0x153 /* "isRootDataStore should be available in local data store" */);
|
|
610
627
|
return {
|
|
611
628
|
pkg: this.pkg,
|
|
629
|
+
isRootDataStore,
|
|
612
630
|
snapshot,
|
|
613
631
|
};
|
|
614
632
|
}
|
|
@@ -623,14 +641,6 @@ export class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
623
641
|
// Local data store does not have initial summary.
|
|
624
642
|
return {};
|
|
625
643
|
}
|
|
626
|
-
/**
|
|
627
|
-
* @deprecated - Sets the datastore as root, for aliasing purposes: #7948
|
|
628
|
-
* This method should not be used outside of the aliasing context.
|
|
629
|
-
* It will be removed, as the source of truth for this flag will be the aliasing blob.
|
|
630
|
-
*/
|
|
631
|
-
setRoot() {
|
|
632
|
-
this.isRootDataStore = true;
|
|
633
|
-
}
|
|
634
644
|
}
|
|
635
645
|
/**
|
|
636
646
|
* context implementation for "attached" data store runtime.
|
|
@@ -665,7 +675,7 @@ export class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreConte
|
|
|
665
675
|
this.detachedRuntimeCreation = false;
|
|
666
676
|
this.channelDeferred = new Deferred();
|
|
667
677
|
super.bindRuntime(dataStoreRuntime);
|
|
668
|
-
if (this.
|
|
678
|
+
if (await this.isRoot()) {
|
|
669
679
|
dataStoreRuntime.bindToContext();
|
|
670
680
|
}
|
|
671
681
|
}
|