@fluidframework/container-runtime 2.0.0-internal.7.0.0 → 2.0.0-internal.7.0.1
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/blobManager.d.ts +3 -6
- package/dist/blobManager.d.ts.map +1 -1
- package/dist/blobManager.js +17 -42
- package/dist/blobManager.js.map +1 -1
- package/dist/containerRuntime.d.ts +5 -4
- package/dist/containerRuntime.d.ts.map +1 -1
- package/dist/containerRuntime.js +27 -6
- package/dist/containerRuntime.js.map +1 -1
- package/dist/dataStoreContext.d.ts +1 -0
- package/dist/dataStoreContext.d.ts.map +1 -1
- package/dist/dataStoreContext.js +39 -34
- package/dist/dataStoreContext.js.map +1 -1
- package/dist/dataStores.d.ts +0 -16
- package/dist/dataStores.d.ts.map +1 -1
- package/dist/dataStores.js +0 -48
- package/dist/dataStores.js.map +1 -1
- package/dist/gc/garbageCollection.d.ts +12 -3
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +41 -18
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcConfigs.d.ts +1 -0
- package/dist/gc/gcConfigs.d.ts.map +1 -1
- package/dist/gc/gcConfigs.js +12 -2
- package/dist/gc/gcConfigs.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +21 -7
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +12 -6
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +74 -42
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/index.d.ts +2 -2
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +1 -5
- package/dist/gc/index.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/lib/blobManager.d.ts +3 -6
- package/lib/blobManager.d.ts.map +1 -1
- package/lib/blobManager.js +18 -43
- package/lib/blobManager.js.map +1 -1
- package/lib/containerRuntime.d.ts +5 -4
- package/lib/containerRuntime.d.ts.map +1 -1
- package/lib/containerRuntime.js +28 -7
- package/lib/containerRuntime.js.map +1 -1
- package/lib/dataStoreContext.d.ts +1 -0
- package/lib/dataStoreContext.d.ts.map +1 -1
- package/lib/dataStoreContext.js +40 -35
- package/lib/dataStoreContext.js.map +1 -1
- package/lib/dataStores.d.ts +0 -16
- package/lib/dataStores.d.ts.map +1 -1
- package/lib/dataStores.js +2 -50
- package/lib/dataStores.js.map +1 -1
- package/lib/gc/garbageCollection.d.ts +12 -3
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +42 -19
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcConfigs.d.ts +1 -0
- package/lib/gc/gcConfigs.d.ts.map +1 -1
- package/lib/gc/gcConfigs.js +14 -4
- package/lib/gc/gcConfigs.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +21 -7
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +12 -6
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +74 -42
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/index.d.ts +2 -2
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +2 -2
- package/lib/gc/index.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/package.json +15 -18
- package/src/blobManager.ts +18 -58
- package/src/containerRuntime.ts +39 -16
- package/src/dataStoreContext.ts +17 -8
- package/src/dataStores.ts +2 -80
- package/src/gc/garbageCollection.ts +53 -24
- package/src/gc/gcConfigs.ts +22 -4
- package/src/gc/gcDefinitions.ts +22 -7
- package/src/gc/gcTelemetry.ts +103 -56
- package/src/gc/index.ts +0 -4
- package/src/packageVersion.ts +1 -1
package/dist/containerRuntime.js
CHANGED
|
@@ -105,6 +105,7 @@ exports.defaultRuntimeHeaderData = {
|
|
|
105
105
|
wait: true,
|
|
106
106
|
viaHandle: false,
|
|
107
107
|
allowTombstone: false,
|
|
108
|
+
allowInactive: false,
|
|
108
109
|
};
|
|
109
110
|
/**
|
|
110
111
|
* Available compression algorithms for op compression.
|
|
@@ -408,6 +409,14 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
408
409
|
? this.summaryConfiguration.initialSummarizerDelayMs
|
|
409
410
|
: 0;
|
|
410
411
|
}
|
|
412
|
+
/** If false, loading or using a Tombstoned object should merely log, not fail */
|
|
413
|
+
get gcTombstoneEnforcementAllowed() {
|
|
414
|
+
return this.garbageCollector.tombstoneEnforcementAllowed;
|
|
415
|
+
}
|
|
416
|
+
/** If true, throw an error when a tombstone data store is used. */
|
|
417
|
+
get gcThrowOnTombstoneUsage() {
|
|
418
|
+
return this.garbageCollector.throwOnTombstoneUsage;
|
|
419
|
+
}
|
|
411
420
|
/**
|
|
412
421
|
* @internal
|
|
413
422
|
*/
|
|
@@ -512,7 +521,6 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
512
521
|
// Note that we only need to pull the *initial* connected state from the context.
|
|
513
522
|
// Later updates come through calls to setConnectionState.
|
|
514
523
|
this._connected = connected;
|
|
515
|
-
this.gcTombstoneEnforcementAllowed = (0, gc_1.shouldAllowGcTombstoneEnforcement)(metadata?.gcFeatureMatrix?.tombstoneGeneration /* persisted */, this.runtimeOptions.gcOptions[gc_1.gcTombstoneGenerationOptionName] /* current */);
|
|
516
524
|
this.mc.logger.sendTelemetryEvent({
|
|
517
525
|
eventName: "GCFeatureMatrix",
|
|
518
526
|
metadataValue: JSON.stringify(metadata?.gcFeatureMatrix),
|
|
@@ -833,7 +841,9 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
833
841
|
: (0, runtime_utils_1.create404Response)(request);
|
|
834
842
|
}
|
|
835
843
|
else if (requestParser.pathParts.length > 0) {
|
|
836
|
-
|
|
844
|
+
// Differentiate between requesting the dataStore directly, or one of its children
|
|
845
|
+
const requestForChild = !requestParser.isLeaf(1);
|
|
846
|
+
const dataStore = await this.getDataStoreFromRequest(id, request, requestForChild);
|
|
837
847
|
const subRequest = requestParser.createSubRequest(1);
|
|
838
848
|
// We always expect createSubRequest to include a leading slash, but asserting here to protect against
|
|
839
849
|
// unintentionally modifying the url if that changes.
|
|
@@ -855,7 +865,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
855
865
|
internalId(maybeAlias) {
|
|
856
866
|
return this.dataStores.aliases.get(maybeAlias) ?? maybeAlias;
|
|
857
867
|
}
|
|
858
|
-
async getDataStoreFromRequest(id, request) {
|
|
868
|
+
async getDataStoreFromRequest(id, request, requestForChild) {
|
|
859
869
|
const headerData = {};
|
|
860
870
|
if (typeof request.headers?.[RuntimeHeaders.wait] === "boolean") {
|
|
861
871
|
headerData.wait = request.headers[RuntimeHeaders.wait];
|
|
@@ -866,15 +876,25 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
866
876
|
if (typeof request.headers?.[exports.AllowTombstoneRequestHeaderKey] === "boolean") {
|
|
867
877
|
headerData.allowTombstone = request.headers[exports.AllowTombstoneRequestHeaderKey];
|
|
868
878
|
}
|
|
879
|
+
if (typeof request.headers?.[exports.AllowInactiveRequestHeaderKey] === "boolean") {
|
|
880
|
+
headerData.allowInactive = request.headers[exports.AllowInactiveRequestHeaderKey];
|
|
881
|
+
}
|
|
882
|
+
// We allow Tombstone requests for sub-DataStore objects
|
|
883
|
+
if (requestForChild) {
|
|
884
|
+
headerData.allowTombstone = true;
|
|
885
|
+
}
|
|
869
886
|
await this.dataStores.waitIfPendingAlias(id);
|
|
870
887
|
const internalId = this.internalId(id);
|
|
871
888
|
const dataStoreContext = await this.dataStores.getDataStore(internalId, headerData);
|
|
872
|
-
const dataStoreChannel = await dataStoreContext.realize();
|
|
873
889
|
// Remove query params, leading and trailing slashes from the url. This is done to make sure the format is
|
|
874
890
|
// the same as GC nodes id.
|
|
875
891
|
const urlWithoutQuery = (0, gc_1.trimLeadingAndTrailingSlashes)(request.url.split("?")[0]);
|
|
876
|
-
|
|
877
|
-
|
|
892
|
+
// Get the initial snapshot details which contain the data store package path.
|
|
893
|
+
const details = await dataStoreContext.getInitialSnapshotDetails();
|
|
894
|
+
// Note that this will throw if the data store is inactive or tombstoned and throwing on incorrect usage
|
|
895
|
+
// is configured.
|
|
896
|
+
this.garbageCollector.nodeUpdated(`/${urlWithoutQuery}`, "Loaded", undefined /* timestampMs */, details.pkg, request, headerData);
|
|
897
|
+
return dataStoreContext.realize();
|
|
878
898
|
}
|
|
879
899
|
/** Adds the container's metadata to the given summary tree. */
|
|
880
900
|
addMetadataToSummary(summaryTree) {
|
|
@@ -1378,6 +1398,7 @@ class ContainerRuntime extends client_utils_1.TypedEventEmitter {
|
|
|
1378
1398
|
if (channel.entryPoint === undefined) {
|
|
1379
1399
|
throw new telemetry_utils_1.UsageError("entryPoint must be defined on data store runtime for using getAliasedDataStoreEntryPoint");
|
|
1380
1400
|
}
|
|
1401
|
+
this.garbageCollector.nodeUpdated(`/${internalId}`, "Loaded", undefined /* timestampMs */, context.packagePath);
|
|
1381
1402
|
return channel.entryPoint;
|
|
1382
1403
|
}
|
|
1383
1404
|
createDetachedRootDataStore(pkg, rootDataStoreId) {
|