@fluidframework/container-runtime 2.0.0-internal.3.0.5 → 2.0.0-internal.3.0.6
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/containerRuntime.js +1 -1
- package/dist/containerRuntime.js.map +1 -1
- package/dist/garbageCollection.d.ts.map +1 -1
- package/dist/garbageCollection.js +4 -40
- 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/lib/containerRuntime.js +1 -1
- package/lib/containerRuntime.js.map +1 -1
- package/lib/garbageCollection.d.ts.map +1 -1
- package/lib/garbageCollection.js +5 -41
- 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/package.json +14 -14
- package/src/containerRuntime.ts +1 -1
- package/src/garbageCollection.ts +4 -49
- package/src/packageVersion.ts +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fluidframework/container-runtime",
|
|
3
|
-
"version": "2.0.0-internal.3.0.
|
|
3
|
+
"version": "2.0.0-internal.3.0.6",
|
|
4
4
|
"description": "Fluid container runtime",
|
|
5
5
|
"homepage": "https://fluidframework.com",
|
|
6
6
|
"repository": {
|
|
@@ -65,19 +65,19 @@
|
|
|
65
65
|
"dependencies": {
|
|
66
66
|
"@fluidframework/common-definitions": "^0.20.1",
|
|
67
67
|
"@fluidframework/common-utils": "^1.0.0",
|
|
68
|
-
"@fluidframework/container-definitions": ">=2.0.0-internal.3.0.
|
|
69
|
-
"@fluidframework/container-runtime-definitions": ">=2.0.0-internal.3.0.
|
|
70
|
-
"@fluidframework/container-utils": ">=2.0.0-internal.3.0.
|
|
71
|
-
"@fluidframework/core-interfaces": ">=2.0.0-internal.3.0.
|
|
72
|
-
"@fluidframework/datastore": ">=2.0.0-internal.3.0.
|
|
73
|
-
"@fluidframework/driver-definitions": ">=2.0.0-internal.3.0.
|
|
74
|
-
"@fluidframework/driver-utils": ">=2.0.0-internal.3.0.
|
|
75
|
-
"@fluidframework/garbage-collector": ">=2.0.0-internal.3.0.
|
|
68
|
+
"@fluidframework/container-definitions": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
69
|
+
"@fluidframework/container-runtime-definitions": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
70
|
+
"@fluidframework/container-utils": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
71
|
+
"@fluidframework/core-interfaces": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
72
|
+
"@fluidframework/datastore": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
73
|
+
"@fluidframework/driver-definitions": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
74
|
+
"@fluidframework/driver-utils": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
75
|
+
"@fluidframework/garbage-collector": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
76
76
|
"@fluidframework/protocol-base": "^0.1038.2000",
|
|
77
77
|
"@fluidframework/protocol-definitions": "^1.1.0",
|
|
78
|
-
"@fluidframework/runtime-definitions": ">=2.0.0-internal.3.0.
|
|
79
|
-
"@fluidframework/runtime-utils": ">=2.0.0-internal.3.0.
|
|
80
|
-
"@fluidframework/telemetry-utils": ">=2.0.0-internal.3.0.
|
|
78
|
+
"@fluidframework/runtime-definitions": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
79
|
+
"@fluidframework/runtime-utils": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
80
|
+
"@fluidframework/telemetry-utils": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
81
81
|
"double-ended-queue": "^2.1.0-0",
|
|
82
82
|
"events": "^3.1.0",
|
|
83
83
|
"lz4js": "^0.2.0",
|
|
@@ -89,8 +89,8 @@
|
|
|
89
89
|
"@fluidframework/build-tools": "^0.8.0",
|
|
90
90
|
"@fluidframework/container-runtime-previous": "npm:@fluidframework/container-runtime@2.0.0-internal.3.0.0",
|
|
91
91
|
"@fluidframework/eslint-config-fluid": "^2.0.0",
|
|
92
|
-
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.3.0.
|
|
93
|
-
"@fluidframework/test-runtime-utils": ">=2.0.0-internal.3.0.
|
|
92
|
+
"@fluidframework/mocha-test-setup": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
93
|
+
"@fluidframework/test-runtime-utils": ">=2.0.0-internal.3.0.6 <2.0.0-internal.4.0.0",
|
|
94
94
|
"@microsoft/api-extractor": "^7.22.2",
|
|
95
95
|
"@rushstack/eslint-config": "^2.5.1",
|
|
96
96
|
"@types/double-ended-queue": "^2.1.0",
|
package/src/containerRuntime.ts
CHANGED
|
@@ -2198,7 +2198,7 @@ export class ContainerRuntime extends TypedEventEmitter<IContainerRuntimeEvents>
|
|
|
2198
2198
|
|
|
2199
2199
|
const telemetryContext = new TelemetryContext();
|
|
2200
2200
|
// Add the options that are used to generate this summary to the telemetry context.
|
|
2201
|
-
telemetryContext.
|
|
2201
|
+
telemetryContext.setMultiple("fluid_Summarize", "Options", {
|
|
2202
2202
|
fullTree,
|
|
2203
2203
|
trackState,
|
|
2204
2204
|
runGC,
|
package/src/garbageCollection.ts
CHANGED
|
@@ -28,7 +28,6 @@ import {
|
|
|
28
28
|
ISummarizeResult,
|
|
29
29
|
ITelemetryContext,
|
|
30
30
|
IGarbageCollectionNodeData,
|
|
31
|
-
IGarbageCollectionSummaryDetailsLegacy,
|
|
32
31
|
ISummaryTreeWithStats,
|
|
33
32
|
gcDeletedBlobKey,
|
|
34
33
|
} from "@fluidframework/runtime-definitions";
|
|
@@ -49,7 +48,6 @@ import {
|
|
|
49
48
|
} from "@fluidframework/telemetry-utils";
|
|
50
49
|
|
|
51
50
|
import { IGCRuntimeOptions, RuntimeHeaders } from "./containerRuntime";
|
|
52
|
-
import { getSummaryForDatastores } from "./dataStores";
|
|
53
51
|
import {
|
|
54
52
|
currentGCVersion,
|
|
55
53
|
defaultInactiveTimeoutMs,
|
|
@@ -72,8 +70,6 @@ import {
|
|
|
72
70
|
GCVersion,
|
|
73
71
|
IContainerRuntimeMetadata,
|
|
74
72
|
metadataBlobName,
|
|
75
|
-
ReadFluidDataStoreAttributes,
|
|
76
|
-
dataStoreAttributesBlobName,
|
|
77
73
|
IGCMetadata,
|
|
78
74
|
ICreateContainerMetadata,
|
|
79
75
|
GCFeatureMatrix,
|
|
@@ -672,50 +668,9 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
672
668
|
);
|
|
673
669
|
}
|
|
674
670
|
|
|
675
|
-
// back-compat - Older documents
|
|
676
|
-
//
|
|
677
|
-
|
|
678
|
-
const gcState: IGarbageCollectionState = { gcNodes: { "/": { outboundRoutes: [] } } };
|
|
679
|
-
const dataStoreSnapshotTree = getSummaryForDatastores(baseSnapshot, metadata);
|
|
680
|
-
assert(dataStoreSnapshotTree !== undefined,
|
|
681
|
-
0x2a8 /* "Expected data store snapshot tree in base snapshot" */);
|
|
682
|
-
for (const [dsId, dsSnapshotTree] of Object.entries(dataStoreSnapshotTree.trees)) {
|
|
683
|
-
const blobId = dsSnapshotTree.blobs[gcTreeKey];
|
|
684
|
-
if (blobId === undefined) {
|
|
685
|
-
continue;
|
|
686
|
-
}
|
|
687
|
-
|
|
688
|
-
const gcSummaryDetails = await readAndParseBlob<IGarbageCollectionSummaryDetailsLegacy>(blobId);
|
|
689
|
-
// If there are no nodes for this data store, skip it.
|
|
690
|
-
if (gcSummaryDetails.gcData?.gcNodes === undefined) {
|
|
691
|
-
continue;
|
|
692
|
-
}
|
|
693
|
-
|
|
694
|
-
const dsRootId = `/${dsId}`;
|
|
695
|
-
// Since we used to write GC data at data store level, we won't have an entry for the root ("/").
|
|
696
|
-
// Construct that entry by adding root data store ids to its outbound routes.
|
|
697
|
-
const initialSnapshotDetails = await readAndParseBlob<ReadFluidDataStoreAttributes>(
|
|
698
|
-
dsSnapshotTree.blobs[dataStoreAttributesBlobName],
|
|
699
|
-
);
|
|
700
|
-
if (initialSnapshotDetails.isRootDataStore) {
|
|
701
|
-
gcState.gcNodes["/"].outboundRoutes.push(dsRootId);
|
|
702
|
-
}
|
|
703
|
-
|
|
704
|
-
for (const [id, outboundRoutes] of Object.entries(gcSummaryDetails.gcData.gcNodes)) {
|
|
705
|
-
// Prefix the data store id to the GC node ids to make them relative to the root from being
|
|
706
|
-
// relative to the data store. Similar to how its done in DataStore::getGCData.
|
|
707
|
-
const rootId = id === "/" ? dsRootId : `${dsRootId}${id}`;
|
|
708
|
-
gcState.gcNodes[rootId] = { outboundRoutes: Array.from(outboundRoutes) };
|
|
709
|
-
}
|
|
710
|
-
assert(gcState.gcNodes[dsRootId] !== undefined,
|
|
711
|
-
0x2a9 /* GC nodes for data store not in GC blob */);
|
|
712
|
-
gcState.gcNodes[dsRootId].unreferencedTimestampMs = gcSummaryDetails.unrefTimestamp;
|
|
713
|
-
}
|
|
714
|
-
// If there is only one node (root node just added above), either GC is disabled or we are loading from
|
|
715
|
-
// the first summary generated by detached container. In both cases, GC was not run - return undefined.
|
|
716
|
-
return Object.keys(gcState.gcNodes).length === 1
|
|
717
|
-
? undefined
|
|
718
|
-
: { gcState, tombstones: undefined, deletedNodes: undefined };
|
|
671
|
+
// back-compat - Older documents get their gc data reset for simplicity as there are few of them
|
|
672
|
+
// incremental gc summary will not work with older gc data as well
|
|
673
|
+
return undefined;
|
|
719
674
|
} catch (error) {
|
|
720
675
|
const dpe = DataProcessingError.wrapIfUnrecognized(
|
|
721
676
|
error,
|
|
@@ -978,7 +933,7 @@ export class GarbageCollector implements IGarbageCollector {
|
|
|
978
933
|
}
|
|
979
934
|
|
|
980
935
|
// Add the options that are used to run GC to the telemetry context.
|
|
981
|
-
telemetryContext?.
|
|
936
|
+
telemetryContext?.setMultiple("fluid_GC", "Options", { fullGC, runSweep: options.runSweep });
|
|
982
937
|
|
|
983
938
|
return PerformanceEvent.timedExecAsync(logger, { eventName: "GarbageCollection" }, async (event) => {
|
|
984
939
|
await this.runPreGCSteps();
|
package/src/packageVersion.ts
CHANGED