@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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fluidframework/container-runtime",
3
- "version": "2.0.0-internal.3.0.5",
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.5 <2.0.0-internal.4.0.0",
69
- "@fluidframework/container-runtime-definitions": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
70
- "@fluidframework/container-utils": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
71
- "@fluidframework/core-interfaces": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
72
- "@fluidframework/datastore": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
73
- "@fluidframework/driver-definitions": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
74
- "@fluidframework/driver-utils": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
75
- "@fluidframework/garbage-collector": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.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.5 <2.0.0-internal.4.0.0",
79
- "@fluidframework/runtime-utils": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.0",
80
- "@fluidframework/telemetry-utils": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.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.5 <2.0.0-internal.4.0.0",
93
- "@fluidframework/test-runtime-utils": ">=2.0.0-internal.3.0.5 <2.0.0-internal.4.0.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",
@@ -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.setAll("fluid_Summarize", "Options", {
2201
+ telemetryContext.setMultiple("fluid_Summarize", "Options", {
2202
2202
  fullTree,
2203
2203
  trackState,
2204
2204
  runGC,
@@ -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 will have the GC blobs in each data store's summary tree. Get them and
676
- // consolidate into IGarbageCollectionState format.
677
- // Add a node for the root node that is not present in older snapshot format.
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?.setAll("fluid_GC", "Options", { fullGC, runSweep: options.runSweep });
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();
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  export const pkgName = "@fluidframework/container-runtime";
9
- export const pkgVersion = "2.0.0-internal.3.0.5";
9
+ export const pkgVersion = "2.0.0-internal.3.0.6";