@fluidframework/container-runtime 2.32.0 → 2.33.0
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/CHANGELOG.md +4 -0
- package/api-report/container-runtime.legacy.alpha.api.md +71 -67
- package/container-runtime.test-files.tar +0 -0
- package/dist/blobManager/blobManager.d.ts +7 -4
- package/dist/blobManager/blobManager.d.ts.map +1 -1
- package/dist/blobManager/blobManager.js +38 -12
- package/dist/blobManager/blobManager.js.map +1 -1
- package/dist/channelCollection.d.ts +4 -0
- package/dist/channelCollection.d.ts.map +1 -1
- package/dist/channelCollection.js +24 -0
- package/dist/channelCollection.js.map +1 -1
- package/dist/compatUtils.d.ts +74 -0
- package/dist/compatUtils.d.ts.map +1 -0
- package/dist/compatUtils.js +151 -0
- package/dist/compatUtils.js.map +1 -0
- package/dist/compressionDefinitions.d.ts +39 -0
- package/dist/compressionDefinitions.d.ts.map +1 -0
- package/dist/compressionDefinitions.js +30 -0
- package/dist/compressionDefinitions.js.map +1 -0
- package/dist/containerRuntime.d.ts +78 -52
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +141 -54
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +3 -0
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +122 -66
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/deltaManagerProxies.d.ts +55 -12
- package/dist/deltaManagerProxies.d.ts.map +1 -1
- package/dist/deltaManagerProxies.js +63 -55
- package/dist/deltaManagerProxies.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +2 -0
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/legacy.d.ts +1 -0
- package/dist/opLifecycle/batchManager.d.ts +3 -15
- package/dist/opLifecycle/batchManager.d.ts.map +1 -1
- package/dist/opLifecycle/batchManager.js +5 -39
- package/dist/opLifecycle/batchManager.js.map +1 -1
- package/dist/opLifecycle/definitions.d.ts +44 -11
- package/dist/opLifecycle/definitions.d.ts.map +1 -1
- package/dist/opLifecycle/definitions.js.map +1 -1
- package/dist/opLifecycle/index.d.ts +3 -3
- package/dist/opLifecycle/index.d.ts.map +1 -1
- package/dist/opLifecycle/index.js +3 -2
- package/dist/opLifecycle/index.js.map +1 -1
- package/dist/opLifecycle/opCompressor.d.ts.map +1 -1
- package/dist/opLifecycle/opCompressor.js +4 -4
- package/dist/opLifecycle/opCompressor.js.map +1 -1
- package/dist/opLifecycle/opDecompressor.js +3 -3
- package/dist/opLifecycle/opDecompressor.js.map +1 -1
- package/dist/opLifecycle/opGroupingManager.d.ts +2 -2
- package/dist/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/dist/opLifecycle/opGroupingManager.js +1 -2
- package/dist/opLifecycle/opGroupingManager.js.map +1 -1
- package/dist/opLifecycle/opSerialization.d.ts +3 -1
- package/dist/opLifecycle/opSerialization.d.ts.map +1 -1
- package/dist/opLifecycle/opSerialization.js +4 -2
- package/dist/opLifecycle/opSerialization.js.map +1 -1
- package/dist/opLifecycle/opSplitter.d.ts.map +1 -1
- package/dist/opLifecycle/opSplitter.js +2 -2
- package/dist/opLifecycle/opSplitter.js.map +1 -1
- package/dist/opLifecycle/outbox.d.ts +25 -3
- package/dist/opLifecycle/outbox.d.ts.map +1 -1
- package/dist/opLifecycle/outbox.js +112 -61
- package/dist/opLifecycle/outbox.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 +36 -7
- package/dist/pendingStateManager.d.ts.map +1 -1
- package/dist/pendingStateManager.js +83 -16
- package/dist/pendingStateManager.js.map +1 -1
- package/dist/runtimeLayerCompatState.d.ts.map +1 -1
- package/dist/runtimeLayerCompatState.js +1 -1
- package/dist/runtimeLayerCompatState.js.map +1 -1
- package/dist/summary/documentSchema.d.ts +1 -0
- package/dist/summary/documentSchema.d.ts.map +1 -1
- package/dist/summary/documentSchema.js +2 -0
- package/dist/summary/documentSchema.js.map +1 -1
- package/lib/blobManager/blobManager.d.ts +7 -4
- package/lib/blobManager/blobManager.d.ts.map +1 -1
- package/lib/blobManager/blobManager.js +38 -12
- package/lib/blobManager/blobManager.js.map +1 -1
- package/lib/channelCollection.d.ts +4 -0
- package/lib/channelCollection.d.ts.map +1 -1
- package/lib/channelCollection.js +24 -0
- package/lib/channelCollection.js.map +1 -1
- package/lib/compatUtils.d.ts +74 -0
- package/lib/compatUtils.d.ts.map +1 -0
- package/lib/compatUtils.js +142 -0
- package/lib/compatUtils.js.map +1 -0
- package/lib/compressionDefinitions.d.ts +39 -0
- package/lib/compressionDefinitions.d.ts.map +1 -0
- package/lib/compressionDefinitions.js +27 -0
- package/lib/compressionDefinitions.js.map +1 -0
- package/lib/containerRuntime.d.ts +78 -52
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +143 -56
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +3 -0
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +57 -1
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/deltaManagerProxies.d.ts +55 -12
- package/lib/deltaManagerProxies.d.ts.map +1 -1
- package/lib/deltaManagerProxies.js +63 -55
- package/lib/deltaManagerProxies.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +2 -0
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/index.d.ts +4 -2
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/legacy.d.ts +1 -0
- package/lib/opLifecycle/batchManager.d.ts +3 -15
- package/lib/opLifecycle/batchManager.d.ts.map +1 -1
- package/lib/opLifecycle/batchManager.js +4 -37
- package/lib/opLifecycle/batchManager.js.map +1 -1
- package/lib/opLifecycle/definitions.d.ts +44 -11
- package/lib/opLifecycle/definitions.d.ts.map +1 -1
- package/lib/opLifecycle/definitions.js.map +1 -1
- package/lib/opLifecycle/index.d.ts +3 -3
- package/lib/opLifecycle/index.d.ts.map +1 -1
- package/lib/opLifecycle/index.js +2 -2
- package/lib/opLifecycle/index.js.map +1 -1
- package/lib/opLifecycle/opCompressor.d.ts.map +1 -1
- package/lib/opLifecycle/opCompressor.js +2 -2
- package/lib/opLifecycle/opCompressor.js.map +1 -1
- package/lib/opLifecycle/opDecompressor.js +1 -1
- package/lib/opLifecycle/opDecompressor.js.map +1 -1
- package/lib/opLifecycle/opGroupingManager.d.ts +2 -2
- package/lib/opLifecycle/opGroupingManager.d.ts.map +1 -1
- package/lib/opLifecycle/opGroupingManager.js +1 -2
- package/lib/opLifecycle/opGroupingManager.js.map +1 -1
- package/lib/opLifecycle/opSerialization.d.ts +3 -1
- package/lib/opLifecycle/opSerialization.d.ts.map +1 -1
- package/lib/opLifecycle/opSerialization.js +4 -2
- package/lib/opLifecycle/opSerialization.js.map +1 -1
- package/lib/opLifecycle/opSplitter.d.ts.map +1 -1
- package/lib/opLifecycle/opSplitter.js +1 -1
- package/lib/opLifecycle/opSplitter.js.map +1 -1
- package/lib/opLifecycle/outbox.d.ts +25 -3
- package/lib/opLifecycle/outbox.d.ts.map +1 -1
- package/lib/opLifecycle/outbox.js +110 -61
- package/lib/opLifecycle/outbox.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 +36 -7
- package/lib/pendingStateManager.d.ts.map +1 -1
- package/lib/pendingStateManager.js +84 -17
- package/lib/pendingStateManager.js.map +1 -1
- package/lib/runtimeLayerCompatState.d.ts.map +1 -1
- package/lib/runtimeLayerCompatState.js +2 -2
- package/lib/runtimeLayerCompatState.js.map +1 -1
- package/lib/summary/documentSchema.d.ts +1 -0
- package/lib/summary/documentSchema.d.ts.map +1 -1
- package/lib/summary/documentSchema.js +2 -0
- package/lib/summary/documentSchema.js.map +1 -1
- package/lib/tsdoc-metadata.json +1 -1
- package/package.json +21 -20
- package/src/blobManager/blobManager.ts +48 -15
- package/src/channelCollection.ts +27 -0
- package/src/compatUtils.ts +211 -0
- package/src/compressionDefinitions.ts +47 -0
- package/src/containerRuntime.ts +259 -108
- package/src/dataStoreContext.ts +82 -2
- package/src/deltaManagerProxies.ts +132 -70
- package/src/gc/gcDefinitions.ts +2 -0
- package/src/index.ts +5 -3
- package/src/opLifecycle/batchManager.ts +7 -52
- package/src/opLifecycle/definitions.ts +45 -11
- package/src/opLifecycle/index.ts +7 -2
- package/src/opLifecycle/opCompressor.ts +2 -2
- package/src/opLifecycle/opDecompressor.ts +1 -1
- package/src/opLifecycle/opGroupingManager.ts +7 -5
- package/src/opLifecycle/opSerialization.ts +6 -2
- package/src/opLifecycle/opSplitter.ts +1 -1
- package/src/opLifecycle/outbox.ts +154 -85
- package/src/packageVersion.ts +1 -1
- package/src/pendingStateManager.ts +135 -21
- package/src/runtimeLayerCompatState.ts +5 -2
- package/src/summary/documentSchema.ts +3 -0
|
@@ -90,7 +90,9 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
90
90
|
get clientId(): string | undefined;
|
|
91
91
|
get clientDetails(): IClientDetails;
|
|
92
92
|
get baseLogger(): ITelemetryBaseLogger;
|
|
93
|
+
private readonly _contextDeltaManagerProxy;
|
|
93
94
|
get deltaManager(): IDeltaManager<ISequencedDocumentMessage, IDocumentMessage>;
|
|
95
|
+
isReadOnly: () => boolean;
|
|
94
96
|
get connected(): boolean;
|
|
95
97
|
get IFluidHandleContext(): IFluidHandleContext;
|
|
96
98
|
get containerRuntime(): IContainerRuntimeBase;
|
|
@@ -196,6 +198,7 @@ export declare abstract class FluidDataStoreContext extends TypedEventEmitter<IF
|
|
|
196
198
|
* its new client ID when we are connecting or connected.
|
|
197
199
|
*/
|
|
198
200
|
setConnectionState(connected: boolean, clientId?: string): void;
|
|
201
|
+
notifyReadOnlyState(readonly: boolean): void;
|
|
199
202
|
/**
|
|
200
203
|
* Process messages for this data store. The messages here are contiguous messages for this data store in a batch.
|
|
201
204
|
* @param messageCollection - The collection of messages to process.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,iBAAiB,EAAE,KAAK,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAC3F,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,uCAAuC,CAAC;AAC/E,OAAO,
|
|
1
|
+
{"version":3,"file":"dataStoreContext.d.ts","sourceRoot":"","sources":["../src/dataStoreContext.ts"],"names":[],"mappings":"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"}
|
package/dist/dataStoreContext.js
CHANGED
|
@@ -7,11 +7,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
7
7
|
exports.LocalDetachedFluidDataStoreContext = exports.LocalFluidDataStoreContext = exports.LocalFluidDataStoreContextBase = exports.RemoteFluidDataStoreContext = exports.FluidDataStoreContext = exports.createAttributesBlob = void 0;
|
|
8
8
|
const client_utils_1 = require("@fluid-internal/client-utils");
|
|
9
9
|
const container_definitions_1 = require("@fluidframework/container-definitions");
|
|
10
|
-
const internal_1 = require("@fluidframework/
|
|
11
|
-
const internal_2 = require("@fluidframework/
|
|
12
|
-
const internal_3 = require("@fluidframework/
|
|
13
|
-
const internal_4 = require("@fluidframework/runtime-
|
|
14
|
-
const internal_5 = require("@fluidframework/
|
|
10
|
+
const internal_1 = require("@fluidframework/container-definitions/internal");
|
|
11
|
+
const internal_2 = require("@fluidframework/core-utils/internal");
|
|
12
|
+
const internal_3 = require("@fluidframework/driver-utils/internal");
|
|
13
|
+
const internal_4 = require("@fluidframework/runtime-definitions/internal");
|
|
14
|
+
const internal_5 = require("@fluidframework/runtime-utils/internal");
|
|
15
|
+
const internal_6 = require("@fluidframework/telemetry-utils/internal");
|
|
16
|
+
const deltaManagerProxies_js_1 = require("./deltaManagerProxies.js");
|
|
15
17
|
const runtimeLayerCompatState_js_1 = require("./runtimeLayerCompatState.js");
|
|
16
18
|
const index_js_1 = require("./summary/index.js");
|
|
17
19
|
function createAttributes(pkg, isRootDataStore) {
|
|
@@ -24,16 +26,61 @@ function createAttributes(pkg, isRootDataStore) {
|
|
|
24
26
|
}
|
|
25
27
|
function createAttributesBlob(pkg, isRootDataStore) {
|
|
26
28
|
const attributes = createAttributes(pkg, isRootDataStore);
|
|
27
|
-
return new
|
|
29
|
+
return new internal_3.BlobTreeEntry(index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
28
30
|
}
|
|
29
31
|
exports.createAttributesBlob = createAttributesBlob;
|
|
32
|
+
/**
|
|
33
|
+
* Eventually we should remove the delta manger from being exposed to Datastore runtimes via the context. However to remove that exposure we need to add new
|
|
34
|
+
* features, and those features themselves need forward and back compat. This proxy is here to enable that back compat. Each feature this proxy is used to
|
|
35
|
+
* support should be listed below, and as layer compat support goes away for those feature, we should also remove them from this proxy, with the eventual goal
|
|
36
|
+
* of completely removing this proxy.
|
|
37
|
+
*
|
|
38
|
+
* - Everything regarding readonly is to support older datastore runtimes which do not have the setReadonly function, so they must get their readonly state via the delta manager.
|
|
39
|
+
*
|
|
40
|
+
*/
|
|
41
|
+
class ContextDeltaManagerProxy extends deltaManagerProxies_js_1.BaseDeltaManagerProxy {
|
|
42
|
+
constructor(base, isReadOnly) {
|
|
43
|
+
super(base, {
|
|
44
|
+
onReadonly: () => {
|
|
45
|
+
/* readonly is controlled from the context which calls setReadonly */
|
|
46
|
+
},
|
|
47
|
+
});
|
|
48
|
+
this.isReadOnly = isReadOnly;
|
|
49
|
+
}
|
|
50
|
+
get readOnlyInfo() {
|
|
51
|
+
const readonly = this.isReadOnly();
|
|
52
|
+
if (readonly === this.deltaManager.readOnlyInfo.readonly) {
|
|
53
|
+
return this.deltaManager.readOnlyInfo;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
return readonly === true
|
|
57
|
+
? {
|
|
58
|
+
readonly,
|
|
59
|
+
forced: false,
|
|
60
|
+
permissions: undefined,
|
|
61
|
+
storageOnly: false,
|
|
62
|
+
}
|
|
63
|
+
: { readonly };
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Called by the owning datastore context to configure the readonly
|
|
68
|
+
* state of the delta manger that is project down to the datastore
|
|
69
|
+
* runtime. This state may not align with that of the true delta
|
|
70
|
+
* manager if the context wishes to control the read only state
|
|
71
|
+
* differently than the delta manager itself.
|
|
72
|
+
*/
|
|
73
|
+
setReadonly(readonly, readonlyConnectionReason) {
|
|
74
|
+
this.emit("readonly", readonly, readonlyConnectionReason);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
30
77
|
/**
|
|
31
78
|
* Represents the context for the store. This context is passed to the store runtime.
|
|
32
79
|
* @internal
|
|
33
80
|
*/
|
|
34
81
|
class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
35
82
|
get packagePath() {
|
|
36
|
-
(0,
|
|
83
|
+
(0, internal_2.assert)(this.pkg !== undefined, 0x139 /* "Undefined package path" */);
|
|
37
84
|
return this.pkg;
|
|
38
85
|
}
|
|
39
86
|
get options() {
|
|
@@ -49,7 +96,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
49
96
|
return this.parentContext.baseLogger;
|
|
50
97
|
}
|
|
51
98
|
get deltaManager() {
|
|
52
|
-
return this.
|
|
99
|
+
return this._contextDeltaManagerProxy;
|
|
53
100
|
}
|
|
54
101
|
get connected() {
|
|
55
102
|
return this.parentContext.connected;
|
|
@@ -130,6 +177,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
130
177
|
this.existing = existing;
|
|
131
178
|
this.isLocalDataStore = isLocalDataStore;
|
|
132
179
|
this.makeLocallyVisibleFn = makeLocallyVisibleFn;
|
|
180
|
+
this.isReadOnly = () => this.parentContext.isReadOnly?.() ?? false;
|
|
133
181
|
this._disposed = false;
|
|
134
182
|
/**
|
|
135
183
|
* A Tombstoned object has been unreferenced long enough that GC knows it won't be referenced again.
|
|
@@ -168,17 +216,17 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
168
216
|
this.loadingGroupId = props.loadingGroupId;
|
|
169
217
|
// URIs use slashes as delimiters. Handles use URIs.
|
|
170
218
|
// Thus having slashes in types almost guarantees trouble down the road!
|
|
171
|
-
(0,
|
|
219
|
+
(0, internal_2.assert)(!this.id.includes("/"), 0x13a /* Data store ID contains slash */);
|
|
172
220
|
this._attachState =
|
|
173
221
|
this.parentContext.attachState !== container_definitions_1.AttachState.Detached && this.existing
|
|
174
222
|
? this.parentContext.attachState
|
|
175
223
|
: container_definitions_1.AttachState.Detached;
|
|
176
224
|
this.summarizerNode = props.createSummarizerNodeFn(async (fullTree, trackState, telemetryContext) => this.summarizeInternal(fullTree, trackState, telemetryContext), async (fullGC) => this.getGCDataInternal(fullGC));
|
|
177
|
-
this.mc = (0,
|
|
225
|
+
this.mc = (0, internal_6.createChildMonitoringContext)({
|
|
178
226
|
logger: this.baseLogger,
|
|
179
227
|
namespace: "FluidDataStoreContext",
|
|
180
228
|
properties: {
|
|
181
|
-
all: (0,
|
|
229
|
+
all: (0, internal_6.tagCodeArtifacts)({
|
|
182
230
|
fluidDataStoreId: this.id,
|
|
183
231
|
// The package name is a getter because `this.pkg` may not be initialized during construction.
|
|
184
232
|
// For data stores loaded from summary, it is initialized during data store realization.
|
|
@@ -186,10 +234,12 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
186
234
|
}),
|
|
187
235
|
},
|
|
188
236
|
});
|
|
189
|
-
this.thresholdOpsCounter = new
|
|
237
|
+
this.thresholdOpsCounter = new internal_6.ThresholdCounter(FluidDataStoreContext.pendingOpsCountThreshold, this.mc.logger);
|
|
190
238
|
// By default, a data store can log maximum 10 local changes telemetry in summarizer.
|
|
191
239
|
this.localChangesTelemetryCount =
|
|
192
240
|
this.mc.config.getNumber("Fluid.Telemetry.LocalChangesTelemetryCount") ?? 10;
|
|
241
|
+
(0, internal_2.assert)((0, internal_1.isIDeltaManagerFull)(this.parentContext.deltaManager), 0xb83 /* Invalid delta manager */);
|
|
242
|
+
this._contextDeltaManagerProxy = new ContextDeltaManagerProxy(this.parentContext.deltaManager, () => this.isReadOnly());
|
|
193
243
|
}
|
|
194
244
|
dispose() {
|
|
195
245
|
if (this._disposed) {
|
|
@@ -205,6 +255,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
205
255
|
})
|
|
206
256
|
.catch((error) => { });
|
|
207
257
|
}
|
|
258
|
+
this._contextDeltaManagerProxy.dispose();
|
|
208
259
|
}
|
|
209
260
|
/**
|
|
210
261
|
* When delete is called, that means that the data store is permanently removed from the runtime, and will not show up in future summaries
|
|
@@ -221,17 +272,17 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
221
272
|
this._tombstoned = tombstone;
|
|
222
273
|
}
|
|
223
274
|
rejectDeferredRealize(reason, failedPkgPath, fullPackageName) {
|
|
224
|
-
throw new
|
|
275
|
+
throw new internal_6.LoggingError(reason, (0, internal_6.tagCodeArtifacts)({
|
|
225
276
|
failedPkgPath,
|
|
226
277
|
packagePath: fullPackageName?.join("/"),
|
|
227
278
|
}));
|
|
228
279
|
}
|
|
229
280
|
async realize() {
|
|
230
|
-
(0,
|
|
281
|
+
(0, internal_2.assert)(!this.detachedRuntimeCreation, 0x13d /* "Detached runtime creation on realize()" */);
|
|
231
282
|
if (!this.channelP) {
|
|
232
283
|
this.channelP = this.realizeCore(this.existing).catch((error) => {
|
|
233
|
-
const errorWrapped =
|
|
234
|
-
errorWrapped.addTelemetryProperties((0,
|
|
284
|
+
const errorWrapped = internal_6.DataProcessingError.wrapIfUnrecognized(error, "realizeFluidDataStoreContext");
|
|
285
|
+
errorWrapped.addTelemetryProperties((0, internal_6.tagCodeArtifacts)({
|
|
235
286
|
fullPackageName: this.pkg?.join("/"),
|
|
236
287
|
fluidDataStoreId: this.id,
|
|
237
288
|
}));
|
|
@@ -264,7 +315,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
264
315
|
if (factory === undefined) {
|
|
265
316
|
this.rejectDeferredRealize("Can't find factory for package", lastPkg, packages);
|
|
266
317
|
}
|
|
267
|
-
(0,
|
|
318
|
+
(0, internal_2.assert)(this.registry === undefined, 0x157 /* "datastore registry already attached" */);
|
|
268
319
|
this.registry = registry;
|
|
269
320
|
return factory;
|
|
270
321
|
}
|
|
@@ -273,10 +324,10 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
273
324
|
const isUndefined = maybe === undefined;
|
|
274
325
|
const diffInstance = maybe?.IFluidDataStoreFactory !== childFactory;
|
|
275
326
|
if (isUndefined || diffInstance) {
|
|
276
|
-
throw new
|
|
327
|
+
throw new internal_6.UsageError("The provided factory instance must be synchronously available as a child of this datastore", { isUndefined, diffInstance });
|
|
277
328
|
}
|
|
278
329
|
if (childFactory?.createDataStore === undefined) {
|
|
279
|
-
throw new
|
|
330
|
+
throw new internal_6.UsageError("createDataStore must exist on the provided factory", {
|
|
280
331
|
noCreateDataStore: true,
|
|
281
332
|
});
|
|
282
333
|
}
|
|
@@ -284,7 +335,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
284
335
|
...this.packagePath,
|
|
285
336
|
childFactory.type,
|
|
286
337
|
]);
|
|
287
|
-
(0,
|
|
338
|
+
(0, internal_2.assert)(context instanceof LocalDetachedFluidDataStoreContext, 0xa89 /* must be a LocalDetachedFluidDataStoreContext */);
|
|
288
339
|
const created = childFactory.createDataStore(context);
|
|
289
340
|
context.unsafe_AttachRuntimeSync(created.runtime);
|
|
290
341
|
return created;
|
|
@@ -296,10 +347,10 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
296
347
|
// that it is set here, before bindRuntime is called.
|
|
297
348
|
this._baseSnapshot = details.snapshot;
|
|
298
349
|
this.baseSnapshotSequenceNumber = details.sequenceNumber;
|
|
299
|
-
(0,
|
|
350
|
+
(0, internal_2.assert)(this.pkg === details.pkg, 0x13e /* "Unexpected package path" */);
|
|
300
351
|
const factory = await this.factoryFromPackagePath();
|
|
301
352
|
const channel = await factory.instantiateDataStore(this, existing);
|
|
302
|
-
(0,
|
|
353
|
+
(0, internal_2.assert)(channel !== undefined, 0x140 /* "undefined channel on datastore context" */);
|
|
303
354
|
await this.bindRuntime(channel, existing);
|
|
304
355
|
// This data store may have been disposed before the channel is created during realization. If so,
|
|
305
356
|
// dispose the channel now.
|
|
@@ -321,28 +372,33 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
321
372
|
if (!this.loaded) {
|
|
322
373
|
return;
|
|
323
374
|
}
|
|
324
|
-
(0,
|
|
375
|
+
(0, internal_2.assert)(this.connected === connected, 0x141 /* "Unexpected connected state" */);
|
|
325
376
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
326
377
|
this.channel.setConnectionState(connected, clientId);
|
|
327
378
|
}
|
|
379
|
+
notifyReadOnlyState(readonly) {
|
|
380
|
+
this.verifyNotClosed("notifyReadOnlyState", false /* checkTombstone */);
|
|
381
|
+
this.channel?.notifyReadOnlyState?.(readonly);
|
|
382
|
+
this._contextDeltaManagerProxy.setReadonly(readonly);
|
|
383
|
+
}
|
|
328
384
|
/**
|
|
329
385
|
* Process messages for this data store. The messages here are contiguous messages for this data store in a batch.
|
|
330
386
|
* @param messageCollection - The collection of messages to process.
|
|
331
387
|
*/
|
|
332
388
|
processMessages(messageCollection) {
|
|
333
389
|
const { envelope, messagesContent, local } = messageCollection;
|
|
334
|
-
const safeTelemetryProps = (0,
|
|
390
|
+
const safeTelemetryProps = (0, internal_6.extractSafePropertiesFromMessage)(envelope);
|
|
335
391
|
// Tombstone error is logged in garbage collector. So, set "checkTombstone" to false when calling
|
|
336
392
|
// "verifyNotClosed" which logs tombstone errors.
|
|
337
393
|
this.verifyNotClosed("process", false /* checkTombstone */, safeTelemetryProps);
|
|
338
394
|
this.summarizerNode.recordChange(envelope);
|
|
339
395
|
if (this.loaded) {
|
|
340
|
-
(0,
|
|
396
|
+
(0, internal_2.assert)(this.channel !== undefined, 0xa68 /* Channel is not loaded */);
|
|
341
397
|
this.channel.processMessages(messageCollection);
|
|
342
398
|
}
|
|
343
399
|
else {
|
|
344
|
-
(0,
|
|
345
|
-
(0,
|
|
400
|
+
(0, internal_2.assert)(!local, 0x142 /* "local store channel is not loaded" */);
|
|
401
|
+
(0, internal_2.assert)(this.pendingMessagesState !== undefined, 0xa69 /* pending messages queue is undefined */);
|
|
346
402
|
this.pendingMessagesState.messageCollections.push({
|
|
347
403
|
...messageCollection,
|
|
348
404
|
messagesContent: [...messagesContent],
|
|
@@ -380,12 +436,12 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
380
436
|
const summarizeResult = await this.channel.summarize(fullTree, trackState, telemetryContext);
|
|
381
437
|
// Wrap dds summaries in .channels subtree.
|
|
382
438
|
(0, index_js_1.wrapSummaryInChannelsTree)(summarizeResult);
|
|
383
|
-
const pathPartsForChildren = [
|
|
439
|
+
const pathPartsForChildren = [internal_4.channelsTreeName];
|
|
384
440
|
// Add data store's attributes to the summary.
|
|
385
441
|
const { pkg } = await this.getInitialSnapshotDetails();
|
|
386
442
|
const isRoot = await this.isRoot();
|
|
387
443
|
const attributes = createAttributes(pkg, isRoot);
|
|
388
|
-
(0,
|
|
444
|
+
(0, internal_5.addBlobToSummary)(summarizeResult, index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
389
445
|
// If we are not referenced, mark the summary tree as unreferenced. Also, update unreferenced blob
|
|
390
446
|
// size in the summary stats with the blobs size of this data store.
|
|
391
447
|
if (!this.summarizerNode.isReferenced()) {
|
|
@@ -420,7 +476,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
420
476
|
*/
|
|
421
477
|
async getGCDataInternal(fullGC = false) {
|
|
422
478
|
await this.realize();
|
|
423
|
-
(0,
|
|
479
|
+
(0, internal_2.assert)(this.channel !== undefined, 0x143 /* "Channel should not be undefined when running GC" */);
|
|
424
480
|
return this.channel.getGCData(fullGC);
|
|
425
481
|
}
|
|
426
482
|
/**
|
|
@@ -459,7 +515,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
459
515
|
}
|
|
460
516
|
submitMessage(type, content, localOpMetadata) {
|
|
461
517
|
this.verifyNotClosed("submitMessage");
|
|
462
|
-
(0,
|
|
518
|
+
(0, internal_2.assert)(!!this.channel, 0x146 /* "Channel must exist when submitting message" */);
|
|
463
519
|
// Summarizer clients should not submit messages.
|
|
464
520
|
this.identifyLocalChangeInSummarizer("DataStoreMessageSubmittedInSummarizer", type);
|
|
465
521
|
this.parentContext.submitMessage(type, content, localOpMetadata);
|
|
@@ -485,7 +541,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
485
541
|
}
|
|
486
542
|
submitSignal(type, content, targetClientId) {
|
|
487
543
|
this.verifyNotClosed("submitSignal");
|
|
488
|
-
(0,
|
|
544
|
+
(0, internal_2.assert)(!!this.channel, 0x147 /* "Channel must exist on submitting signal" */);
|
|
489
545
|
return this.parentContext.submitSignal(type, content, targetClientId);
|
|
490
546
|
}
|
|
491
547
|
/**
|
|
@@ -493,12 +549,12 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
493
549
|
* globally visible now.
|
|
494
550
|
*/
|
|
495
551
|
makeLocallyVisible() {
|
|
496
|
-
(0,
|
|
552
|
+
(0, internal_2.assert)(this.channel !== undefined, 0x2cf /* "undefined channel on datastore context" */);
|
|
497
553
|
this.makeLocallyVisibleFn();
|
|
498
554
|
}
|
|
499
555
|
processPendingOps(channel) {
|
|
500
556
|
const baseSequenceNumber = this.baseSnapshotSequenceNumber ?? -1;
|
|
501
|
-
(0,
|
|
557
|
+
(0, internal_2.assert)(this.pendingMessagesState !== undefined, 0xa6a /* pending messages queue is undefined */);
|
|
502
558
|
for (const messageCollection of this.pendingMessagesState.messageCollections) {
|
|
503
559
|
// Only process ops whose seq number is greater than snapshot sequence number from which it loaded.
|
|
504
560
|
if (messageCollection.envelope.sequenceNumber > baseSequenceNumber) {
|
|
@@ -528,8 +584,8 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
528
584
|
if (this.channel) {
|
|
529
585
|
throw new Error("Runtime already bound");
|
|
530
586
|
}
|
|
531
|
-
(0,
|
|
532
|
-
(0,
|
|
587
|
+
(0, internal_2.assert)(!this.detachedRuntimeCreation, 0x148 /* "Detached runtime creation on runtime bind" */);
|
|
588
|
+
(0, internal_2.assert)(this.pkg !== undefined, 0x14a /* "Undefined package path" */);
|
|
533
589
|
if (!existing) {
|
|
534
590
|
// Execute data store's entry point to make sure that for a local (aka detached from container) data store, the
|
|
535
591
|
// entryPoint initialization function is called before the data store gets attached and potentially connected to
|
|
@@ -566,7 +622,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
566
622
|
return {};
|
|
567
623
|
}
|
|
568
624
|
reSubmit(type, contents, localOpMetadata) {
|
|
569
|
-
(0,
|
|
625
|
+
(0, internal_2.assert)(!!this.channel, 0x14b /* "Channel must exist when resubmitting ops" */);
|
|
570
626
|
this.channel.reSubmit(type, contents, localOpMetadata);
|
|
571
627
|
}
|
|
572
628
|
rollback(type, contents, localOpMetadata) {
|
|
@@ -582,13 +638,13 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
582
638
|
if (!this.channel) {
|
|
583
639
|
await this.realize();
|
|
584
640
|
}
|
|
585
|
-
(0,
|
|
641
|
+
(0, internal_2.assert)(!!this.channel, 0x14c /* "Channel must exist when rebasing ops" */);
|
|
586
642
|
return this.channel.applyStashedOp(contents);
|
|
587
643
|
}
|
|
588
644
|
verifyNotClosed(callSite, checkTombstone = true, safeTelemetryProps = {}) {
|
|
589
645
|
if (this.deleted) {
|
|
590
646
|
const messageString = `Context is deleted! Call site [${callSite}]`;
|
|
591
|
-
const error =
|
|
647
|
+
const error = internal_6.DataProcessingError.create(messageString, callSite, undefined /* sequencedMessage */, safeTelemetryProps);
|
|
592
648
|
this.mc.logger.sendErrorEvent({
|
|
593
649
|
eventName: "GC_Deleted_DataStore_Changed",
|
|
594
650
|
callSite,
|
|
@@ -600,7 +656,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
600
656
|
}
|
|
601
657
|
if (checkTombstone && this.tombstoned) {
|
|
602
658
|
const messageString = `Context is tombstoned! Call site [${callSite}]`;
|
|
603
|
-
const error =
|
|
659
|
+
const error = internal_6.DataProcessingError.create(messageString, callSite, undefined /* sequencedMessage */, safeTelemetryProps, 30 /* stackTraceLimit */);
|
|
604
660
|
this.mc.logger.sendTelemetryEvent({
|
|
605
661
|
eventName: "GC_Tombstone_DataStore_Changed",
|
|
606
662
|
category: "generic",
|
|
@@ -625,7 +681,7 @@ class FluidDataStoreContext extends client_utils_1.TypedEventEmitter {
|
|
|
625
681
|
eventName,
|
|
626
682
|
type,
|
|
627
683
|
isSummaryInProgress: this.summarizerNode.isSummaryInProgress?.(),
|
|
628
|
-
stack: (0,
|
|
684
|
+
stack: (0, internal_6.generateStack)(30),
|
|
629
685
|
});
|
|
630
686
|
this.localChangesTelemetryCount--;
|
|
631
687
|
}
|
|
@@ -650,7 +706,7 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
650
706
|
throw new Error("Already attached");
|
|
651
707
|
});
|
|
652
708
|
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
653
|
-
this.initialSnapshotDetailsP = new
|
|
709
|
+
this.initialSnapshotDetailsP = new internal_2.LazyPromise(async () => {
|
|
654
710
|
// Sequence number of the snapshot.
|
|
655
711
|
let sequenceNumber;
|
|
656
712
|
// Check whether we need to fetch the snapshot first to load. The snapshot should be in new format to see
|
|
@@ -659,12 +715,12 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
659
715
|
if (this.snapshotFetchRequired === undefined &&
|
|
660
716
|
this._baseSnapshot?.groupId !== undefined &&
|
|
661
717
|
this.isSnapshotInISnapshotFormat) {
|
|
662
|
-
(0,
|
|
663
|
-
(0,
|
|
664
|
-
this.snapshotFetchRequired = (0,
|
|
718
|
+
(0, internal_2.assert)(this.blobContents !== undefined, 0x97a /* Blob contents should be present to evaluate */);
|
|
719
|
+
(0, internal_2.assert)(this._baseSnapshot !== undefined, 0x97b /* snapshotTree should be present to evaluate */);
|
|
720
|
+
this.snapshotFetchRequired = (0, internal_5.isSnapshotFetchRequiredForLoadingGroupId)(this._baseSnapshot, this.blobContents);
|
|
665
721
|
}
|
|
666
722
|
if (this.snapshotFetchRequired) {
|
|
667
|
-
(0,
|
|
723
|
+
(0, internal_2.assert)(this.loadingGroupId !== undefined, 0x8f5 /* groupId should be present to fetch snapshot */);
|
|
668
724
|
const snapshot = await this.runtime.getSnapshotForLoadingGroupId([this.loadingGroupId], [this.id]);
|
|
669
725
|
this._baseSnapshot = snapshot.snapshotTree;
|
|
670
726
|
sequenceNumber = snapshot.sequenceNumber;
|
|
@@ -675,7 +731,7 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
675
731
|
if (!!tree && tree.blobs[index_js_1.dataStoreAttributesBlobName] !== undefined) {
|
|
676
732
|
// Need to get through snapshot and use that to populate extraBlobs
|
|
677
733
|
// eslint-disable-next-line import/no-deprecated
|
|
678
|
-
const attributes = await (0,
|
|
734
|
+
const attributes = await (0, internal_3.readAndParse)(this.storage, tree.blobs[index_js_1.dataStoreAttributesBlobName]);
|
|
679
735
|
let pkgFromSnapshot;
|
|
680
736
|
// Use the snapshotFormatVersion to determine how the pkg is encoded in the snapshot.
|
|
681
737
|
// For snapshotFormatVersion = "0.1" (1) or above, pkg is jsonified, otherwise it is just a string.
|
|
@@ -697,11 +753,11 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
697
753
|
*/
|
|
698
754
|
isRootDataStore = attributes.isRootDataStore ?? true;
|
|
699
755
|
if ((0, index_js_1.hasIsolatedChannels)(attributes)) {
|
|
700
|
-
tree = tree.trees[
|
|
701
|
-
(0,
|
|
756
|
+
tree = tree.trees[internal_4.channelsTreeName];
|
|
757
|
+
(0, internal_2.assert)(tree !== undefined, 0x1fe /* "isolated channels subtree should exist in remote datastore snapshot" */);
|
|
702
758
|
}
|
|
703
759
|
}
|
|
704
|
-
(0,
|
|
760
|
+
(0, internal_2.assert)(this.pkg !== undefined, 0x8f6 /* The datastore context package should be defined */);
|
|
705
761
|
return {
|
|
706
762
|
pkg: this.pkg,
|
|
707
763
|
isRootDataStore,
|
|
@@ -710,7 +766,7 @@ class RemoteFluidDataStoreContext extends FluidDataStoreContext {
|
|
|
710
766
|
};
|
|
711
767
|
});
|
|
712
768
|
this.runtime = props.parentContext.containerRuntime;
|
|
713
|
-
if ((0,
|
|
769
|
+
if ((0, internal_3.isInstanceOfISnapshot)(props.snapshot)) {
|
|
714
770
|
this.blobContents = props.snapshot.blobContents;
|
|
715
771
|
this._baseSnapshot = props.snapshot.snapshotTree;
|
|
716
772
|
this.isSnapshotInISnapshotFormat = true;
|
|
@@ -760,7 +816,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
760
816
|
constructor(props) {
|
|
761
817
|
super(props, props.snapshotTree !== undefined /* existing */, true /* isLocalDataStore */, props.makeLocallyVisibleFn);
|
|
762
818
|
// eslint-disable-next-line unicorn/consistent-function-scoping -- Property is defined once; no need to extract inner lambda
|
|
763
|
-
this.initialSnapshotDetailsP = new
|
|
819
|
+
this.initialSnapshotDetailsP = new internal_2.LazyPromise(async () => {
|
|
764
820
|
let snapshot = this.snapshotTree;
|
|
765
821
|
// eslint-disable-next-line import/no-deprecated
|
|
766
822
|
let attributes;
|
|
@@ -770,8 +826,8 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
770
826
|
// Note: storage can be undefined in special case while detached.
|
|
771
827
|
attributes = await (0, index_js_1.getFluidDataStoreAttributes)(this.storage, snapshot);
|
|
772
828
|
if ((0, index_js_1.hasIsolatedChannels)(attributes)) {
|
|
773
|
-
snapshot = snapshot.trees[
|
|
774
|
-
(0,
|
|
829
|
+
snapshot = snapshot.trees[internal_4.channelsTreeName];
|
|
830
|
+
(0, internal_2.assert)(snapshot !== undefined, 0x1ff /* "isolated channels subtree should exist in local datastore snapshot" */);
|
|
775
831
|
}
|
|
776
832
|
if (this.pkg === undefined) {
|
|
777
833
|
this.pkg = JSON.parse(attributes.pkg);
|
|
@@ -784,7 +840,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
784
840
|
}
|
|
785
841
|
}
|
|
786
842
|
}
|
|
787
|
-
(0,
|
|
843
|
+
(0, internal_2.assert)(this.pkg !== undefined, 0x152 /* "pkg should be available in local data store" */);
|
|
788
844
|
return {
|
|
789
845
|
pkg: this.pkg,
|
|
790
846
|
isRootDataStore,
|
|
@@ -798,7 +854,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
798
854
|
setAttachState(attachState) {
|
|
799
855
|
switch (attachState) {
|
|
800
856
|
case container_definitions_1.AttachState.Attaching: {
|
|
801
|
-
(0,
|
|
857
|
+
(0, internal_2.assert)(this.attachState === container_definitions_1.AttachState.Detached, 0x14d /* "Should move from detached to attaching" */);
|
|
802
858
|
this._attachState = container_definitions_1.AttachState.Attaching;
|
|
803
859
|
if (this.channel?.setAttachState) {
|
|
804
860
|
this.channel.setAttachState(attachState);
|
|
@@ -818,7 +874,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
818
874
|
// 3. container attached
|
|
819
875
|
// 4. data store attached.
|
|
820
876
|
if (this.attachState !== container_definitions_1.AttachState.Attached) {
|
|
821
|
-
(0,
|
|
877
|
+
(0, internal_2.assert)(this.attachState === container_definitions_1.AttachState.Attaching, 0x14e /* "Should move from attaching to attached" */);
|
|
822
878
|
this._attachState = container_definitions_1.AttachState.Attached;
|
|
823
879
|
this.channel?.setAttachState?.(attachState);
|
|
824
880
|
if (this.channel?.setAttachState) {
|
|
@@ -833,7 +889,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
833
889
|
break;
|
|
834
890
|
}
|
|
835
891
|
default: {
|
|
836
|
-
(0,
|
|
892
|
+
(0, internal_2.unreachableCase)(attachState, "unreached");
|
|
837
893
|
}
|
|
838
894
|
}
|
|
839
895
|
}
|
|
@@ -841,14 +897,14 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
841
897
|
* {@inheritDoc FluidDataStoreContext.getAttachSummary}
|
|
842
898
|
*/
|
|
843
899
|
getAttachSummary(telemetryContext) {
|
|
844
|
-
(0,
|
|
845
|
-
(0,
|
|
900
|
+
(0, internal_2.assert)(this.channel !== undefined, 0x14f /* "There should be a channel when generating attach message" */);
|
|
901
|
+
(0, internal_2.assert)(this.pkg !== undefined, 0x150 /* "pkg should be available in local data store context" */);
|
|
846
902
|
const attachSummary = this.channel.getAttachSummary(telemetryContext);
|
|
847
903
|
// Wrap dds summaries in .channels subtree.
|
|
848
904
|
(0, index_js_1.wrapSummaryInChannelsTree)(attachSummary);
|
|
849
905
|
// Add data store's attributes to the summary.
|
|
850
906
|
const attributes = createAttributes(this.pkg, this.isInMemoryRoot());
|
|
851
|
-
(0,
|
|
907
|
+
(0, internal_5.addBlobToSummary)(attachSummary, index_js_1.dataStoreAttributesBlobName, JSON.stringify(attributes));
|
|
852
908
|
// Add loadingGroupId to the summary
|
|
853
909
|
if (this.loadingGroupId !== undefined) {
|
|
854
910
|
attachSummary.summary.groupId = this.loadingGroupId;
|
|
@@ -859,7 +915,7 @@ class LocalFluidDataStoreContextBase extends FluidDataStoreContext {
|
|
|
859
915
|
* {@inheritDoc FluidDataStoreContext.getAttachGCData}
|
|
860
916
|
*/
|
|
861
917
|
getAttachGCData(telemetryContext) {
|
|
862
|
-
(0,
|
|
918
|
+
(0, internal_2.assert)(this.channel !== undefined, 0x9a6 /* There should be a channel when generating attach GC data */);
|
|
863
919
|
return this.channel.getAttachGCData(telemetryContext);
|
|
864
920
|
}
|
|
865
921
|
async getInitialSnapshotDetails() {
|
|
@@ -908,16 +964,16 @@ class LocalDetachedFluidDataStoreContext extends LocalFluidDataStoreContextBase
|
|
|
908
964
|
this.channelToDataStoreFn = props.channelToDataStoreFn;
|
|
909
965
|
}
|
|
910
966
|
async attachRuntime(registry, dataStoreChannel) {
|
|
911
|
-
(0,
|
|
967
|
+
(0, internal_2.assert)(this.detachedRuntimeCreation, 0x154 /* "runtime creation is already attached" */);
|
|
912
968
|
this.detachedRuntimeCreation = false;
|
|
913
|
-
(0,
|
|
969
|
+
(0, internal_2.assert)(this.channelP === undefined, 0x155 /* "channel deferral is already set" */);
|
|
914
970
|
this.channelP = Promise.resolve()
|
|
915
971
|
.then(async () => {
|
|
916
972
|
const factory = registry.IFluidDataStoreFactory;
|
|
917
973
|
const factory2 = await this.factoryFromPackagePath();
|
|
918
|
-
(0,
|
|
974
|
+
(0, internal_2.assert)(factory2 === factory, 0x156 /* "Unexpected factory for package path" */);
|
|
919
975
|
await super.bindRuntime(dataStoreChannel, false /* existing */);
|
|
920
|
-
(0,
|
|
976
|
+
(0, internal_2.assert)(!(await this.isRoot()), 0x8f7 /* there are no more createRootDataStore() kind of APIs! */);
|
|
921
977
|
return dataStoreChannel;
|
|
922
978
|
})
|
|
923
979
|
.catch((error) => {
|