@fluidframework/container-runtime 2.0.0-dev.7.4.0.215366 → 2.0.0-dev.7.4.0.215930
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/api-report/container-runtime.api.md +24 -10
- package/dist/container-runtime-alpha.d.ts +45 -19
- package/dist/container-runtime-beta.d.ts +45 -19
- package/dist/container-runtime-public.d.ts +45 -19
- package/dist/container-runtime-untrimmed.d.ts +45 -19
- package/dist/gc/garbageCollection.d.ts +14 -5
- package/dist/gc/garbageCollection.d.ts.map +1 -1
- package/dist/gc/garbageCollection.js +85 -30
- package/dist/gc/garbageCollection.js.map +1 -1
- package/dist/gc/gcDefinitions.d.ts +26 -4
- package/dist/gc/gcDefinitions.d.ts.map +1 -1
- package/dist/gc/gcDefinitions.js +1 -3
- package/dist/gc/gcDefinitions.js.map +1 -1
- package/dist/gc/gcTelemetry.d.ts +0 -5
- package/dist/gc/gcTelemetry.d.ts.map +1 -1
- package/dist/gc/gcTelemetry.js +0 -39
- package/dist/gc/gcTelemetry.js.map +1 -1
- package/dist/gc/index.d.ts +1 -1
- package/dist/gc/index.d.ts.map +1 -1
- package/dist/gc/index.js +1 -2
- package/dist/gc/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/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/container-runtime-alpha.d.ts +45 -19
- package/lib/container-runtime-beta.d.ts +45 -19
- package/lib/container-runtime-public.d.ts +45 -19
- package/lib/container-runtime-untrimmed.d.ts +45 -19
- package/lib/gc/garbageCollection.d.ts +14 -5
- package/lib/gc/garbageCollection.d.ts.map +1 -1
- package/lib/gc/garbageCollection.js +85 -30
- package/lib/gc/garbageCollection.js.map +1 -1
- package/lib/gc/gcDefinitions.d.ts +26 -4
- package/lib/gc/gcDefinitions.d.ts.map +1 -1
- package/lib/gc/gcDefinitions.js +0 -2
- package/lib/gc/gcDefinitions.js.map +1 -1
- package/lib/gc/gcTelemetry.d.ts +0 -5
- package/lib/gc/gcTelemetry.d.ts.map +1 -1
- package/lib/gc/gcTelemetry.js +1 -40
- package/lib/gc/gcTelemetry.js.map +1 -1
- package/lib/gc/index.d.ts +1 -1
- package/lib/gc/index.d.ts.map +1 -1
- package/lib/gc/index.js +1 -1
- package/lib/gc/index.js.map +1 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/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 +18 -15
- package/src/gc/garbageCollection.ts +101 -48
- package/src/gc/gcDefinitions.ts +27 -4
- package/src/gc/gcTelemetry.ts +0 -53
- package/src/gc/index.ts +2 -1
- package/src/index.ts +2 -0
- package/src/packageVersion.ts +1 -1
|
@@ -446,16 +446,7 @@ export interface IGCRuntimeOptions {
|
|
|
446
446
|
}
|
|
447
447
|
|
|
448
448
|
// @public
|
|
449
|
-
export interface IGCStats {
|
|
450
|
-
attachmentBlobCount: number;
|
|
451
|
-
dataStoreCount: number;
|
|
452
|
-
nodeCount: number;
|
|
453
|
-
unrefAttachmentBlobCount: number;
|
|
454
|
-
unrefDataStoreCount: number;
|
|
455
|
-
unrefNodeCount: number;
|
|
456
|
-
updatedAttachmentBlobCount: number;
|
|
457
|
-
updatedDataStoreCount: number;
|
|
458
|
-
updatedNodeCount: number;
|
|
449
|
+
export interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
459
450
|
}
|
|
460
451
|
|
|
461
452
|
// @public
|
|
@@ -478,6 +469,19 @@ export interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeResult, "
|
|
|
478
469
|
readonly summaryTree: ISummaryTree;
|
|
479
470
|
}
|
|
480
471
|
|
|
472
|
+
// @public
|
|
473
|
+
export interface IMarkPhaseStats {
|
|
474
|
+
attachmentBlobCount: number;
|
|
475
|
+
dataStoreCount: number;
|
|
476
|
+
nodeCount: number;
|
|
477
|
+
unrefAttachmentBlobCount: number;
|
|
478
|
+
unrefDataStoreCount: number;
|
|
479
|
+
unrefNodeCount: number;
|
|
480
|
+
updatedAttachmentBlobCount: number;
|
|
481
|
+
updatedDataStoreCount: number;
|
|
482
|
+
updatedNodeCount: number;
|
|
483
|
+
}
|
|
484
|
+
|
|
481
485
|
// @public (undocumented)
|
|
482
486
|
export interface INackSummaryResult extends IRetriableFailureResult {
|
|
483
487
|
// (undocumented)
|
|
@@ -703,6 +707,16 @@ export interface ISummaryRuntimeOptions {
|
|
|
703
707
|
summaryConfigOverrides?: ISummaryConfiguration;
|
|
704
708
|
}
|
|
705
709
|
|
|
710
|
+
// @public
|
|
711
|
+
export interface ISweepPhaseStats {
|
|
712
|
+
deletedAttachmentBlobCount: number;
|
|
713
|
+
deletedDataStoreCount: number;
|
|
714
|
+
deletedNodeCount: number;
|
|
715
|
+
lifetimeAttachmentBlobCount: number;
|
|
716
|
+
lifetimeDataStoreCount: number;
|
|
717
|
+
lifetimeNodeCount: number;
|
|
718
|
+
}
|
|
719
|
+
|
|
706
720
|
// @public
|
|
707
721
|
export interface IUploadSummaryResult extends Omit<IGenerateSummaryTreeResult, "stage"> {
|
|
708
722
|
readonly handle: string;
|
|
@@ -1008,25 +1008,7 @@ export declare interface IGCRuntimeOptions {
|
|
|
1008
1008
|
* The statistics of the system state after a garbage collection run.
|
|
1009
1009
|
* @public
|
|
1010
1010
|
*/
|
|
1011
|
-
export declare interface IGCStats {
|
|
1012
|
-
/** The number of nodes in the container. */
|
|
1013
|
-
nodeCount: number;
|
|
1014
|
-
/** The number of data stores in the container. */
|
|
1015
|
-
dataStoreCount: number;
|
|
1016
|
-
/** The number of attachment blobs in the container. */
|
|
1017
|
-
attachmentBlobCount: number;
|
|
1018
|
-
/** The number of unreferenced nodes in the container. */
|
|
1019
|
-
unrefNodeCount: number;
|
|
1020
|
-
/** The number of unreferenced data stores in the container. */
|
|
1021
|
-
unrefDataStoreCount: number;
|
|
1022
|
-
/** The number of unreferenced attachment blobs in the container. */
|
|
1023
|
-
unrefAttachmentBlobCount: number;
|
|
1024
|
-
/** The number of nodes whose reference state updated since last GC run. */
|
|
1025
|
-
updatedNodeCount: number;
|
|
1026
|
-
/** The number of data stores whose reference state updated since last GC run. */
|
|
1027
|
-
updatedDataStoreCount: number;
|
|
1028
|
-
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1029
|
-
updatedAttachmentBlobCount: number;
|
|
1011
|
+
export declare interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
1030
1012
|
}
|
|
1031
1013
|
|
|
1032
1014
|
/**
|
|
@@ -1065,6 +1047,31 @@ export declare interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeR
|
|
|
1065
1047
|
readonly forcedFullTree: boolean;
|
|
1066
1048
|
}
|
|
1067
1049
|
|
|
1050
|
+
/**
|
|
1051
|
+
* The statistics of the system state after a garbage collection mark phase run.
|
|
1052
|
+
* @public
|
|
1053
|
+
*/
|
|
1054
|
+
export declare interface IMarkPhaseStats {
|
|
1055
|
+
/** The number of nodes in the container. */
|
|
1056
|
+
nodeCount: number;
|
|
1057
|
+
/** The number of data stores in the container. */
|
|
1058
|
+
dataStoreCount: number;
|
|
1059
|
+
/** The number of attachment blobs in the container. */
|
|
1060
|
+
attachmentBlobCount: number;
|
|
1061
|
+
/** The number of unreferenced nodes in the container. */
|
|
1062
|
+
unrefNodeCount: number;
|
|
1063
|
+
/** The number of unreferenced data stores in the container. */
|
|
1064
|
+
unrefDataStoreCount: number;
|
|
1065
|
+
/** The number of unreferenced attachment blobs in the container. */
|
|
1066
|
+
unrefAttachmentBlobCount: number;
|
|
1067
|
+
/** The number of nodes whose reference state updated since last GC run. */
|
|
1068
|
+
updatedNodeCount: number;
|
|
1069
|
+
/** The number of data stores whose reference state updated since last GC run. */
|
|
1070
|
+
updatedDataStoreCount: number;
|
|
1071
|
+
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1072
|
+
updatedAttachmentBlobCount: number;
|
|
1073
|
+
}
|
|
1074
|
+
|
|
1068
1075
|
/**
|
|
1069
1076
|
* @public
|
|
1070
1077
|
*/
|
|
@@ -1455,6 +1462,25 @@ export declare interface ISummaryRuntimeOptions {
|
|
|
1455
1462
|
initialSummarizerDelayMs?: number;
|
|
1456
1463
|
}
|
|
1457
1464
|
|
|
1465
|
+
/**
|
|
1466
|
+
* The statistics of the system state after a garbage collection sweep phase run.
|
|
1467
|
+
* @public
|
|
1468
|
+
*/
|
|
1469
|
+
export declare interface ISweepPhaseStats {
|
|
1470
|
+
/** The number of nodes in the lifetime of the container. */
|
|
1471
|
+
lifetimeNodeCount: number;
|
|
1472
|
+
/** The number of data stores in the lifetime of the container. */
|
|
1473
|
+
lifetimeDataStoreCount: number;
|
|
1474
|
+
/** The number of attachment blobs in the lifetime of the container. */
|
|
1475
|
+
lifetimeAttachmentBlobCount: number;
|
|
1476
|
+
/** The number of deleted nodes in the container. */
|
|
1477
|
+
deletedNodeCount: number;
|
|
1478
|
+
/** The number of deleted data stores in the container. */
|
|
1479
|
+
deletedDataStoreCount: number;
|
|
1480
|
+
/** The number of deleted attachment blobs in the container. */
|
|
1481
|
+
deletedAttachmentBlobCount: number;
|
|
1482
|
+
}
|
|
1483
|
+
|
|
1458
1484
|
/**
|
|
1459
1485
|
* Results of submitSummary after uploading the tree to storage.
|
|
1460
1486
|
* @public
|
|
@@ -1007,25 +1007,7 @@ export declare interface IGCRuntimeOptions {
|
|
|
1007
1007
|
* The statistics of the system state after a garbage collection run.
|
|
1008
1008
|
* @public
|
|
1009
1009
|
*/
|
|
1010
|
-
export declare interface IGCStats {
|
|
1011
|
-
/** The number of nodes in the container. */
|
|
1012
|
-
nodeCount: number;
|
|
1013
|
-
/** The number of data stores in the container. */
|
|
1014
|
-
dataStoreCount: number;
|
|
1015
|
-
/** The number of attachment blobs in the container. */
|
|
1016
|
-
attachmentBlobCount: number;
|
|
1017
|
-
/** The number of unreferenced nodes in the container. */
|
|
1018
|
-
unrefNodeCount: number;
|
|
1019
|
-
/** The number of unreferenced data stores in the container. */
|
|
1020
|
-
unrefDataStoreCount: number;
|
|
1021
|
-
/** The number of unreferenced attachment blobs in the container. */
|
|
1022
|
-
unrefAttachmentBlobCount: number;
|
|
1023
|
-
/** The number of nodes whose reference state updated since last GC run. */
|
|
1024
|
-
updatedNodeCount: number;
|
|
1025
|
-
/** The number of data stores whose reference state updated since last GC run. */
|
|
1026
|
-
updatedDataStoreCount: number;
|
|
1027
|
-
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1028
|
-
updatedAttachmentBlobCount: number;
|
|
1010
|
+
export declare interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
1029
1011
|
}
|
|
1030
1012
|
|
|
1031
1013
|
/**
|
|
@@ -1066,6 +1048,31 @@ export declare interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeR
|
|
|
1066
1048
|
|
|
1067
1049
|
/* Excluded from this release type: IGetPendingLocalStateProps */
|
|
1068
1050
|
|
|
1051
|
+
/**
|
|
1052
|
+
* The statistics of the system state after a garbage collection mark phase run.
|
|
1053
|
+
* @public
|
|
1054
|
+
*/
|
|
1055
|
+
export declare interface IMarkPhaseStats {
|
|
1056
|
+
/** The number of nodes in the container. */
|
|
1057
|
+
nodeCount: number;
|
|
1058
|
+
/** The number of data stores in the container. */
|
|
1059
|
+
dataStoreCount: number;
|
|
1060
|
+
/** The number of attachment blobs in the container. */
|
|
1061
|
+
attachmentBlobCount: number;
|
|
1062
|
+
/** The number of unreferenced nodes in the container. */
|
|
1063
|
+
unrefNodeCount: number;
|
|
1064
|
+
/** The number of unreferenced data stores in the container. */
|
|
1065
|
+
unrefDataStoreCount: number;
|
|
1066
|
+
/** The number of unreferenced attachment blobs in the container. */
|
|
1067
|
+
unrefAttachmentBlobCount: number;
|
|
1068
|
+
/** The number of nodes whose reference state updated since last GC run. */
|
|
1069
|
+
updatedNodeCount: number;
|
|
1070
|
+
/** The number of data stores whose reference state updated since last GC run. */
|
|
1071
|
+
updatedDataStoreCount: number;
|
|
1072
|
+
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1073
|
+
updatedAttachmentBlobCount: number;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1069
1076
|
/**
|
|
1070
1077
|
* @public
|
|
1071
1078
|
*/
|
|
@@ -1456,6 +1463,25 @@ export declare interface ISummaryRuntimeOptions {
|
|
|
1456
1463
|
initialSummarizerDelayMs?: number;
|
|
1457
1464
|
}
|
|
1458
1465
|
|
|
1466
|
+
/**
|
|
1467
|
+
* The statistics of the system state after a garbage collection sweep phase run.
|
|
1468
|
+
* @public
|
|
1469
|
+
*/
|
|
1470
|
+
export declare interface ISweepPhaseStats {
|
|
1471
|
+
/** The number of nodes in the lifetime of the container. */
|
|
1472
|
+
lifetimeNodeCount: number;
|
|
1473
|
+
/** The number of data stores in the lifetime of the container. */
|
|
1474
|
+
lifetimeDataStoreCount: number;
|
|
1475
|
+
/** The number of attachment blobs in the lifetime of the container. */
|
|
1476
|
+
lifetimeAttachmentBlobCount: number;
|
|
1477
|
+
/** The number of deleted nodes in the container. */
|
|
1478
|
+
deletedNodeCount: number;
|
|
1479
|
+
/** The number of deleted data stores in the container. */
|
|
1480
|
+
deletedDataStoreCount: number;
|
|
1481
|
+
/** The number of deleted attachment blobs in the container. */
|
|
1482
|
+
deletedAttachmentBlobCount: number;
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1459
1485
|
/**
|
|
1460
1486
|
* Results of submitSummary after uploading the tree to storage.
|
|
1461
1487
|
* @public
|
|
@@ -1007,25 +1007,7 @@ export declare interface IGCRuntimeOptions {
|
|
|
1007
1007
|
* The statistics of the system state after a garbage collection run.
|
|
1008
1008
|
* @public
|
|
1009
1009
|
*/
|
|
1010
|
-
export declare interface IGCStats {
|
|
1011
|
-
/** The number of nodes in the container. */
|
|
1012
|
-
nodeCount: number;
|
|
1013
|
-
/** The number of data stores in the container. */
|
|
1014
|
-
dataStoreCount: number;
|
|
1015
|
-
/** The number of attachment blobs in the container. */
|
|
1016
|
-
attachmentBlobCount: number;
|
|
1017
|
-
/** The number of unreferenced nodes in the container. */
|
|
1018
|
-
unrefNodeCount: number;
|
|
1019
|
-
/** The number of unreferenced data stores in the container. */
|
|
1020
|
-
unrefDataStoreCount: number;
|
|
1021
|
-
/** The number of unreferenced attachment blobs in the container. */
|
|
1022
|
-
unrefAttachmentBlobCount: number;
|
|
1023
|
-
/** The number of nodes whose reference state updated since last GC run. */
|
|
1024
|
-
updatedNodeCount: number;
|
|
1025
|
-
/** The number of data stores whose reference state updated since last GC run. */
|
|
1026
|
-
updatedDataStoreCount: number;
|
|
1027
|
-
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1028
|
-
updatedAttachmentBlobCount: number;
|
|
1010
|
+
export declare interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
1029
1011
|
}
|
|
1030
1012
|
|
|
1031
1013
|
/**
|
|
@@ -1066,6 +1048,31 @@ export declare interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeR
|
|
|
1066
1048
|
|
|
1067
1049
|
/* Excluded from this release type: IGetPendingLocalStateProps */
|
|
1068
1050
|
|
|
1051
|
+
/**
|
|
1052
|
+
* The statistics of the system state after a garbage collection mark phase run.
|
|
1053
|
+
* @public
|
|
1054
|
+
*/
|
|
1055
|
+
export declare interface IMarkPhaseStats {
|
|
1056
|
+
/** The number of nodes in the container. */
|
|
1057
|
+
nodeCount: number;
|
|
1058
|
+
/** The number of data stores in the container. */
|
|
1059
|
+
dataStoreCount: number;
|
|
1060
|
+
/** The number of attachment blobs in the container. */
|
|
1061
|
+
attachmentBlobCount: number;
|
|
1062
|
+
/** The number of unreferenced nodes in the container. */
|
|
1063
|
+
unrefNodeCount: number;
|
|
1064
|
+
/** The number of unreferenced data stores in the container. */
|
|
1065
|
+
unrefDataStoreCount: number;
|
|
1066
|
+
/** The number of unreferenced attachment blobs in the container. */
|
|
1067
|
+
unrefAttachmentBlobCount: number;
|
|
1068
|
+
/** The number of nodes whose reference state updated since last GC run. */
|
|
1069
|
+
updatedNodeCount: number;
|
|
1070
|
+
/** The number of data stores whose reference state updated since last GC run. */
|
|
1071
|
+
updatedDataStoreCount: number;
|
|
1072
|
+
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1073
|
+
updatedAttachmentBlobCount: number;
|
|
1074
|
+
}
|
|
1075
|
+
|
|
1069
1076
|
/**
|
|
1070
1077
|
* @public
|
|
1071
1078
|
*/
|
|
@@ -1456,6 +1463,25 @@ export declare interface ISummaryRuntimeOptions {
|
|
|
1456
1463
|
initialSummarizerDelayMs?: number;
|
|
1457
1464
|
}
|
|
1458
1465
|
|
|
1466
|
+
/**
|
|
1467
|
+
* The statistics of the system state after a garbage collection sweep phase run.
|
|
1468
|
+
* @public
|
|
1469
|
+
*/
|
|
1470
|
+
export declare interface ISweepPhaseStats {
|
|
1471
|
+
/** The number of nodes in the lifetime of the container. */
|
|
1472
|
+
lifetimeNodeCount: number;
|
|
1473
|
+
/** The number of data stores in the lifetime of the container. */
|
|
1474
|
+
lifetimeDataStoreCount: number;
|
|
1475
|
+
/** The number of attachment blobs in the lifetime of the container. */
|
|
1476
|
+
lifetimeAttachmentBlobCount: number;
|
|
1477
|
+
/** The number of deleted nodes in the container. */
|
|
1478
|
+
deletedNodeCount: number;
|
|
1479
|
+
/** The number of deleted data stores in the container. */
|
|
1480
|
+
deletedDataStoreCount: number;
|
|
1481
|
+
/** The number of deleted attachment blobs in the container. */
|
|
1482
|
+
deletedAttachmentBlobCount: number;
|
|
1483
|
+
}
|
|
1484
|
+
|
|
1459
1485
|
/**
|
|
1460
1486
|
* Results of submitSummary after uploading the tree to storage.
|
|
1461
1487
|
* @public
|
|
@@ -1051,25 +1051,7 @@ export declare interface IGCRuntimeOptions {
|
|
|
1051
1051
|
* The statistics of the system state after a garbage collection run.
|
|
1052
1052
|
* @public
|
|
1053
1053
|
*/
|
|
1054
|
-
export declare interface IGCStats {
|
|
1055
|
-
/** The number of nodes in the container. */
|
|
1056
|
-
nodeCount: number;
|
|
1057
|
-
/** The number of data stores in the container. */
|
|
1058
|
-
dataStoreCount: number;
|
|
1059
|
-
/** The number of attachment blobs in the container. */
|
|
1060
|
-
attachmentBlobCount: number;
|
|
1061
|
-
/** The number of unreferenced nodes in the container. */
|
|
1062
|
-
unrefNodeCount: number;
|
|
1063
|
-
/** The number of unreferenced data stores in the container. */
|
|
1064
|
-
unrefDataStoreCount: number;
|
|
1065
|
-
/** The number of unreferenced attachment blobs in the container. */
|
|
1066
|
-
unrefAttachmentBlobCount: number;
|
|
1067
|
-
/** The number of nodes whose reference state updated since last GC run. */
|
|
1068
|
-
updatedNodeCount: number;
|
|
1069
|
-
/** The number of data stores whose reference state updated since last GC run. */
|
|
1070
|
-
updatedDataStoreCount: number;
|
|
1071
|
-
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1072
|
-
updatedAttachmentBlobCount: number;
|
|
1054
|
+
export declare interface IGCStats extends IMarkPhaseStats, ISweepPhaseStats {
|
|
1073
1055
|
}
|
|
1074
1056
|
|
|
1075
1057
|
/**
|
|
@@ -1108,6 +1090,31 @@ export declare interface IGenerateSummaryTreeResult extends Omit<IBaseSummarizeR
|
|
|
1108
1090
|
readonly forcedFullTree: boolean;
|
|
1109
1091
|
}
|
|
1110
1092
|
|
|
1093
|
+
/**
|
|
1094
|
+
* The statistics of the system state after a garbage collection mark phase run.
|
|
1095
|
+
* @public
|
|
1096
|
+
*/
|
|
1097
|
+
export declare interface IMarkPhaseStats {
|
|
1098
|
+
/** The number of nodes in the container. */
|
|
1099
|
+
nodeCount: number;
|
|
1100
|
+
/** The number of data stores in the container. */
|
|
1101
|
+
dataStoreCount: number;
|
|
1102
|
+
/** The number of attachment blobs in the container. */
|
|
1103
|
+
attachmentBlobCount: number;
|
|
1104
|
+
/** The number of unreferenced nodes in the container. */
|
|
1105
|
+
unrefNodeCount: number;
|
|
1106
|
+
/** The number of unreferenced data stores in the container. */
|
|
1107
|
+
unrefDataStoreCount: number;
|
|
1108
|
+
/** The number of unreferenced attachment blobs in the container. */
|
|
1109
|
+
unrefAttachmentBlobCount: number;
|
|
1110
|
+
/** The number of nodes whose reference state updated since last GC run. */
|
|
1111
|
+
updatedNodeCount: number;
|
|
1112
|
+
/** The number of data stores whose reference state updated since last GC run. */
|
|
1113
|
+
updatedDataStoreCount: number;
|
|
1114
|
+
/** The number of attachment blobs whose reference state updated since last GC run. */
|
|
1115
|
+
updatedAttachmentBlobCount: number;
|
|
1116
|
+
}
|
|
1117
|
+
|
|
1111
1118
|
/**
|
|
1112
1119
|
* @public
|
|
1113
1120
|
*/
|
|
@@ -1498,6 +1505,25 @@ export declare interface ISummaryRuntimeOptions {
|
|
|
1498
1505
|
initialSummarizerDelayMs?: number;
|
|
1499
1506
|
}
|
|
1500
1507
|
|
|
1508
|
+
/**
|
|
1509
|
+
* The statistics of the system state after a garbage collection sweep phase run.
|
|
1510
|
+
* @public
|
|
1511
|
+
*/
|
|
1512
|
+
export declare interface ISweepPhaseStats {
|
|
1513
|
+
/** The number of nodes in the lifetime of the container. */
|
|
1514
|
+
lifetimeNodeCount: number;
|
|
1515
|
+
/** The number of data stores in the lifetime of the container. */
|
|
1516
|
+
lifetimeDataStoreCount: number;
|
|
1517
|
+
/** The number of attachment blobs in the lifetime of the container. */
|
|
1518
|
+
lifetimeAttachmentBlobCount: number;
|
|
1519
|
+
/** The number of deleted nodes in the container. */
|
|
1520
|
+
deletedNodeCount: number;
|
|
1521
|
+
/** The number of deleted data stores in the container. */
|
|
1522
|
+
deletedDataStoreCount: number;
|
|
1523
|
+
/** The number of deleted attachment blobs in the container. */
|
|
1524
|
+
deletedAttachmentBlobCount: number;
|
|
1525
|
+
}
|
|
1526
|
+
|
|
1501
1527
|
/**
|
|
1502
1528
|
* Results of submitSummary after uploading the tree to storage.
|
|
1503
1529
|
* @public
|
|
@@ -106,9 +106,10 @@ export declare class GarbageCollector implements IGarbageCollector {
|
|
|
106
106
|
/**
|
|
107
107
|
* Runs garbage collection. It does the following:
|
|
108
108
|
* 1. It generates / analyzes the runtime's reference graph.
|
|
109
|
-
* 2. Generates
|
|
109
|
+
* 2. Generates mark phase stats.
|
|
110
110
|
* 3. Runs Mark phase.
|
|
111
111
|
* 4. Runs Sweep phase.
|
|
112
|
+
* 5. Generates sweep phase stats.
|
|
112
113
|
*/
|
|
113
114
|
private runGC;
|
|
114
115
|
/**
|
|
@@ -191,10 +192,18 @@ export declare class GarbageCollector implements IGarbageCollector {
|
|
|
191
192
|
isNodeDeleted(nodePath: string): boolean;
|
|
192
193
|
dispose(): void;
|
|
193
194
|
/**
|
|
194
|
-
* Generates the stats of a garbage collection
|
|
195
|
-
* @param gcResult - The result of
|
|
196
|
-
* @returns the
|
|
195
|
+
* Generates the stats of a garbage collection mark phase run.
|
|
196
|
+
* @param gcResult - The result of the current GC run.
|
|
197
|
+
* @returns the stats of the mark phase run.
|
|
197
198
|
*/
|
|
198
|
-
private
|
|
199
|
+
private getMarkPhaseStats;
|
|
200
|
+
/**
|
|
201
|
+
* Generates the stats of a garbage collection sweep phase run.
|
|
202
|
+
* @param allDeletedNodes - All the nodes that have been deleted across all GC runs.
|
|
203
|
+
* @param currentDeletedNodes - The nodes that have been deleted in this GC run.
|
|
204
|
+
* @param markPhaseStats - The stats of the mark phase run.
|
|
205
|
+
* @returns the stats of the sweep phase run.
|
|
206
|
+
*/
|
|
207
|
+
private getSweepPhaseStats;
|
|
199
208
|
}
|
|
200
209
|
//# sourceMappingURL=garbageCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/gc/garbageCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAGN,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAIN,mBAAmB,EAGnB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAEN,iBAAiB,EAEjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAEN,iBAAiB,EACjB,6BAA6B,EAG7B,QAAQ,EAER,WAAW,
|
|
1
|
+
{"version":3,"file":"garbageCollection.d.ts","sourceRoot":"","sources":["../../src/gc/garbageCollection.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAGN,6BAA6B,EAC7B,gBAAgB,EAChB,iBAAiB,EACjB,MAAM,qCAAqC,CAAC;AAE7C,OAAO,EAIN,mBAAmB,EAGnB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAEN,iBAAiB,EAEjB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAEnD,OAAO,EAEN,iBAAiB,EACjB,6BAA6B,EAG7B,QAAQ,EAER,WAAW,EAIX,MAAM,iBAAiB,CAAC;AAQzB;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,qBAAa,gBAAiB,YAAW,iBAAiB;WAC3C,MAAM,CAAC,YAAY,EAAE,6BAA6B,GAAG,iBAAiB;IAIpF,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAoB;IAEvC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IAEnD,IAAW,WAAW,IAAI,OAAO,CAEhC;IAGD,OAAO,CAAC,iBAAiB,CAAqC;IAG9D,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAAoC;IAE9E,OAAO,CAAC,UAAU,CAAgB;IAElC,OAAO,CAAC,YAAY,CAA0B;IAG9C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsD;IAExF,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAgB;IAEnE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAyC;IAExE,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAoD;IAE3F,OAAO,CAAC,kBAAkB,CAAoB;IAG9C,OAAO,CAAC,aAAa,CAAK;IAE1B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IACpD,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;IAE7C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAwB;IAC5D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAqB;IAEtD,iFAAiF;IACjF,IAAW,2BAA2B,IAAI,OAAO,CAEhD;IACD,uEAAuE;IACvE,IAAW,oBAAoB,IAAI,OAAO,CAEzC;IACD,kEAAkE;IAClE,IAAW,qBAAqB,IAAI,OAAO,CAE1C;IAED,8DAA8D;IAC9D,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAES;IAC5C,8EAA8E;IAC9E,OAAO,CAAC,QAAQ,CAAC,yBAAyB,CAA2B;IACrE,uGAAuG;IACvG,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAgB;IAEjD,IAAW,sBAAsB,IAAI,OAAO,CAE3C;IAED,sFAAsF;IACtF,IAAW,8BAA8B,IAAI,MAAM,CAElD;IAED,SAAS,aAAa,YAAY,EAAE,6BAA6B;IAqKjE;;;OAGG;IACU,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BjD;;;;;;;OAOG;IACH,OAAO,CAAC,2BAA2B;IA4EnC;;;;;OAKG;IACI,kBAAkB,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAmBlF;;;OAGG;IACU,gBAAgB,IAAI,OAAO,CAAC,6BAA6B,CAAC;IAIvE;;;OAGG;IACU,cAAc,CAC1B,OAAO,EAAE;QACR,0CAA0C;QAC1C,MAAM,CAAC,EAAE,mBAAmB,CAAC;QAC7B,sDAAsD;QACtD,QAAQ,CAAC,EAAE,OAAO,CAAC;QACnB,oCAAoC;QACpC,MAAM,CAAC,EAAE,OAAO,CAAC;KACjB,EACD,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAwEhC;;;;;;;OAOG;YACW,KAAK;IA6CnB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,YAAY;IAgDpB;;;;;;;;;;OAUG;IACH,OAAO,CAAC,aAAa;IAiDrB;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,gCAAgC;IAqExC;;;;OAIG;IACI,SAAS,CACf,QAAQ,EAAE,OAAO,EACjB,UAAU,EAAE,OAAO,EACnB,gBAAgB,CAAC,EAAE,iBAAiB,GAClC,gBAAgB,GAAG,SAAS;IAuBxB,WAAW,IAAI,WAAW;IAcjC;;OAEG;IACU,oBAAoB,CAAC,MAAM,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/E;;;;;;;;;OASG;IACI,WAAW,CACjB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,QAAQ,GAAG,SAAS,EAC5B,WAAW,CAAC,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,EAC/B,OAAO,CAAC,EAAE,QAAQ,EAClB,UAAU,CAAC,EAAE,iBAAiB;IAyD/B;;;;;;OAMG;IACI,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;IAqBtE;;;OAGG;IACI,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIxC,OAAO,IAAI,IAAI;IAKtB;;;;OAIG;IACH,OAAO,CAAC,iBAAiB;IA0DzB;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB;CAiD1B"}
|
|
@@ -200,6 +200,7 @@ class GarbageCollector {
|
|
|
200
200
|
eventName: "GarbageCollectorLoaded",
|
|
201
201
|
gcConfigs: JSON.stringify(this.configs),
|
|
202
202
|
gcOptions: JSON.stringify(createParams.gcOptions),
|
|
203
|
+
...createParams.createContainerMetadata,
|
|
203
204
|
});
|
|
204
205
|
}
|
|
205
206
|
/**
|
|
@@ -375,7 +376,11 @@ class GarbageCollector {
|
|
|
375
376
|
await this.runtime.updateStateBeforeGC();
|
|
376
377
|
/** GC step */
|
|
377
378
|
const gcStats = await this.runGC(fullGC, currentReferenceTimestampMs, logger);
|
|
378
|
-
event.end({
|
|
379
|
+
event.end({
|
|
380
|
+
...gcStats,
|
|
381
|
+
timestamp: currentReferenceTimestampMs,
|
|
382
|
+
sweep: this.configs.shouldRunSweep,
|
|
383
|
+
});
|
|
379
384
|
/** Post-GC steps */
|
|
380
385
|
// Log pending unreferenced events such as a node being used after inactive. This is done after GC runs and
|
|
381
386
|
// updates its state so that we don't send false positives based on intermediate state. For example, we may get
|
|
@@ -391,9 +396,10 @@ class GarbageCollector {
|
|
|
391
396
|
/**
|
|
392
397
|
* Runs garbage collection. It does the following:
|
|
393
398
|
* 1. It generates / analyzes the runtime's reference graph.
|
|
394
|
-
* 2. Generates
|
|
399
|
+
* 2. Generates mark phase stats.
|
|
395
400
|
* 3. Runs Mark phase.
|
|
396
401
|
* 4. Runs Sweep phase.
|
|
402
|
+
* 5. Generates sweep phase stats.
|
|
397
403
|
*/
|
|
398
404
|
async runGC(fullGC, currentReferenceTimestampMs, logger) {
|
|
399
405
|
// 1. Generate / analyze the runtime's reference graph.
|
|
@@ -403,17 +409,19 @@ class GarbageCollector {
|
|
|
403
409
|
// Get all referenced nodes - References in this run + references between the previous and current runs.
|
|
404
410
|
const allReferencedNodeIds = this.findAllNodesReferencedBetweenGCs(gcData, this.gcDataFromLastRun, logger) ??
|
|
405
411
|
gcResult.referencedNodeIds;
|
|
406
|
-
// 2.
|
|
407
|
-
//
|
|
408
|
-
const
|
|
412
|
+
// 2. Get the mark phase stats based on the previous / current GC state.
|
|
413
|
+
// This is done before running mark phase because we need the previous GC state before it is updated.
|
|
414
|
+
const markPhaseStats = this.getMarkPhaseStats(gcResult);
|
|
409
415
|
// 3. Run the Mark phase.
|
|
410
416
|
// It will mark nodes as referenced / unreferenced and return a list of node ids that are ready to be swept.
|
|
411
417
|
const sweepReadyNodeIds = this.runMarkPhase(gcResult, allReferencedNodeIds, currentReferenceTimestampMs);
|
|
412
418
|
// 4. Run the Sweep phase.
|
|
413
419
|
// It will delete sweep ready nodes and return a list of deleted node ids.
|
|
414
|
-
const deletedNodeIds = this.runSweepPhase(gcResult, sweepReadyNodeIds
|
|
420
|
+
const deletedNodeIds = this.runSweepPhase(gcResult, sweepReadyNodeIds);
|
|
415
421
|
this.gcDataFromLastRun = (0, gcHelpers_1.cloneGCData)(gcData, (id) => deletedNodeIds.includes(id) /* filter out deleted nodes */);
|
|
416
|
-
|
|
422
|
+
// 5. Get the sweep phase stats.
|
|
423
|
+
const sweepPhaseStats = this.getSweepPhaseStats(this.configs.shouldRunSweep ? this.deletedNodes : sweepReadyNodeIds, new Set(deletedNodeIds), markPhaseStats);
|
|
424
|
+
return { ...markPhaseStats, ...sweepPhaseStats };
|
|
417
425
|
}
|
|
418
426
|
/**
|
|
419
427
|
* Runs the GC Mark phase. It does the following:
|
|
@@ -441,7 +449,7 @@ class GarbageCollector {
|
|
|
441
449
|
}
|
|
442
450
|
}
|
|
443
451
|
// 2. Mark unreferenced nodes in this run by starting unreferenced tracking for them.
|
|
444
|
-
const sweepReadyNodeIds =
|
|
452
|
+
const sweepReadyNodeIds = new Set();
|
|
445
453
|
for (const nodeId of gcResult.deletedNodeIds) {
|
|
446
454
|
const nodeStateTracker = this.unreferencedNodesState.get(nodeId);
|
|
447
455
|
if (nodeStateTracker === undefined) {
|
|
@@ -453,7 +461,7 @@ class GarbageCollector {
|
|
|
453
461
|
nodeStateTracker.updateTracking(currentReferenceTimestampMs);
|
|
454
462
|
// If a node is sweep ready, store it so it can be returned.
|
|
455
463
|
if (nodeStateTracker.state === gcDefinitions_1.UnreferencedState.SweepReady) {
|
|
456
|
-
sweepReadyNodeIds.
|
|
464
|
+
sweepReadyNodeIds.add(nodeId);
|
|
457
465
|
}
|
|
458
466
|
}
|
|
459
467
|
}
|
|
@@ -472,10 +480,7 @@ class GarbageCollector {
|
|
|
472
480
|
* @param logger - The logger to be used to log any telemetry.
|
|
473
481
|
* @returns A list of nodes that have been deleted.
|
|
474
482
|
*/
|
|
475
|
-
runSweepPhase(gcResult, sweepReadyNodes
|
|
476
|
-
// Log events for objects that are ready to be deleted by sweep. This will give us data on sweep when
|
|
477
|
-
// its not enabled.
|
|
478
|
-
this.telemetryTracker.logSweepEvents(logger, currentReferenceTimestampMs, this.unreferencedNodesState, this.completedRuns, this.getLastSummaryTimestampMs());
|
|
483
|
+
runSweepPhase(gcResult, sweepReadyNodes) {
|
|
479
484
|
/**
|
|
480
485
|
* Currently, there are 3 modes for sweep:
|
|
481
486
|
* Test mode - Unreferenced nodes are immediately deleted without waiting for them to be sweep ready.
|
|
@@ -491,7 +496,7 @@ class GarbageCollector {
|
|
|
491
496
|
return [];
|
|
492
497
|
}
|
|
493
498
|
if (this.configs.tombstoneMode) {
|
|
494
|
-
this.tombstones = sweepReadyNodes;
|
|
499
|
+
this.tombstones = Array.from(sweepReadyNodes);
|
|
495
500
|
// If we are running in GC tombstone mode, update tombstoned routes. This enables testing scenarios
|
|
496
501
|
// involving access to "deleted" data without actually deleting the data from summaries.
|
|
497
502
|
this.runtime.updateTombstonedRoutes(this.tombstones);
|
|
@@ -503,7 +508,7 @@ class GarbageCollector {
|
|
|
503
508
|
// 1. Call the runtime to delete sweep ready nodes. The runtime returns a list of nodes it deleted.
|
|
504
509
|
// TODO: GC:Validation - validate that removed routes are not double delete and that the child routes of
|
|
505
510
|
// removed routes are deleted as well.
|
|
506
|
-
const deletedNodeIds = this.runtime.deleteSweepReadyNodes(sweepReadyNodes);
|
|
511
|
+
const deletedNodeIds = this.runtime.deleteSweepReadyNodes(Array.from(sweepReadyNodes));
|
|
507
512
|
// 2. Clear unreferenced state tracking for deleted nodes.
|
|
508
513
|
for (const nodeId of deletedNodeIds) {
|
|
509
514
|
const nodeStateTracker = this.unreferencedNodesState.get(nodeId);
|
|
@@ -715,12 +720,12 @@ class GarbageCollector {
|
|
|
715
720
|
this.sessionExpiryTimer = undefined;
|
|
716
721
|
}
|
|
717
722
|
/**
|
|
718
|
-
* Generates the stats of a garbage collection
|
|
719
|
-
* @param gcResult - The result of
|
|
720
|
-
* @returns the
|
|
723
|
+
* Generates the stats of a garbage collection mark phase run.
|
|
724
|
+
* @param gcResult - The result of the current GC run.
|
|
725
|
+
* @returns the stats of the mark phase run.
|
|
721
726
|
*/
|
|
722
|
-
|
|
723
|
-
const
|
|
727
|
+
getMarkPhaseStats(gcResult) {
|
|
728
|
+
const markPhaseStats = {
|
|
724
729
|
nodeCount: 0,
|
|
725
730
|
dataStoreCount: 0,
|
|
726
731
|
attachmentBlobCount: 0,
|
|
@@ -732,33 +737,33 @@ class GarbageCollector {
|
|
|
732
737
|
updatedAttachmentBlobCount: 0,
|
|
733
738
|
};
|
|
734
739
|
const updateNodeStats = (nodeId, referenced) => {
|
|
735
|
-
|
|
740
|
+
markPhaseStats.nodeCount++;
|
|
736
741
|
// If there is no previous GC data, every node's state is generated and is considered as updated.
|
|
737
742
|
// Otherwise, find out if any node went from referenced to unreferenced or vice-versa.
|
|
738
743
|
const stateUpdated = this.gcDataFromLastRun === undefined ||
|
|
739
744
|
this.unreferencedNodesState.has(nodeId) === referenced;
|
|
740
745
|
if (stateUpdated) {
|
|
741
|
-
|
|
746
|
+
markPhaseStats.updatedNodeCount++;
|
|
742
747
|
}
|
|
743
748
|
if (!referenced) {
|
|
744
|
-
|
|
749
|
+
markPhaseStats.unrefNodeCount++;
|
|
745
750
|
}
|
|
746
751
|
if (this.runtime.getNodeType(nodeId) === gcDefinitions_1.GCNodeType.DataStore) {
|
|
747
|
-
|
|
752
|
+
markPhaseStats.dataStoreCount++;
|
|
748
753
|
if (stateUpdated) {
|
|
749
|
-
|
|
754
|
+
markPhaseStats.updatedDataStoreCount++;
|
|
750
755
|
}
|
|
751
756
|
if (!referenced) {
|
|
752
|
-
|
|
757
|
+
markPhaseStats.unrefDataStoreCount++;
|
|
753
758
|
}
|
|
754
759
|
}
|
|
755
760
|
if (this.runtime.getNodeType(nodeId) === gcDefinitions_1.GCNodeType.Blob) {
|
|
756
|
-
|
|
761
|
+
markPhaseStats.attachmentBlobCount++;
|
|
757
762
|
if (stateUpdated) {
|
|
758
|
-
|
|
763
|
+
markPhaseStats.updatedAttachmentBlobCount++;
|
|
759
764
|
}
|
|
760
765
|
if (!referenced) {
|
|
761
|
-
|
|
766
|
+
markPhaseStats.unrefAttachmentBlobCount++;
|
|
762
767
|
}
|
|
763
768
|
}
|
|
764
769
|
};
|
|
@@ -768,7 +773,57 @@ class GarbageCollector {
|
|
|
768
773
|
for (const nodeId of gcResult.deletedNodeIds) {
|
|
769
774
|
updateNodeStats(nodeId, false /* referenced */);
|
|
770
775
|
}
|
|
771
|
-
return
|
|
776
|
+
return markPhaseStats;
|
|
777
|
+
}
|
|
778
|
+
/**
|
|
779
|
+
* Generates the stats of a garbage collection sweep phase run.
|
|
780
|
+
* @param allDeletedNodes - All the nodes that have been deleted across all GC runs.
|
|
781
|
+
* @param currentDeletedNodes - The nodes that have been deleted in this GC run.
|
|
782
|
+
* @param markPhaseStats - The stats of the mark phase run.
|
|
783
|
+
* @returns the stats of the sweep phase run.
|
|
784
|
+
*/
|
|
785
|
+
getSweepPhaseStats(allDeletedNodes, currentDeletedNodes, markPhaseStats) {
|
|
786
|
+
// Initialize the life time node counts to the mark phase node counts. If sweep is not enabled,
|
|
787
|
+
// these will be the life time node count for this container.
|
|
788
|
+
const sweepPhaseStats = {
|
|
789
|
+
lifetimeNodeCount: markPhaseStats.nodeCount,
|
|
790
|
+
lifetimeDataStoreCount: markPhaseStats.dataStoreCount,
|
|
791
|
+
lifetimeAttachmentBlobCount: markPhaseStats.attachmentBlobCount,
|
|
792
|
+
deletedNodeCount: 0,
|
|
793
|
+
deletedDataStoreCount: 0,
|
|
794
|
+
deletedAttachmentBlobCount: 0,
|
|
795
|
+
};
|
|
796
|
+
for (const nodeId of allDeletedNodes) {
|
|
797
|
+
sweepPhaseStats.deletedNodeCount++;
|
|
798
|
+
const nodeType = this.runtime.getNodeType(nodeId);
|
|
799
|
+
if (nodeType === gcDefinitions_1.GCNodeType.DataStore) {
|
|
800
|
+
sweepPhaseStats.deletedDataStoreCount++;
|
|
801
|
+
}
|
|
802
|
+
else if (nodeType === gcDefinitions_1.GCNodeType.Blob) {
|
|
803
|
+
sweepPhaseStats.deletedAttachmentBlobCount++;
|
|
804
|
+
}
|
|
805
|
+
}
|
|
806
|
+
if (!this.configs.shouldRunSweep) {
|
|
807
|
+
return sweepPhaseStats;
|
|
808
|
+
}
|
|
809
|
+
// If sweep is enabled, the counts from the mark phase stats do not include nodes that have been
|
|
810
|
+
// deleted in previous runs. Add the deleted node counts to life time stats.
|
|
811
|
+
sweepPhaseStats.lifetimeNodeCount += sweepPhaseStats.deletedNodeCount;
|
|
812
|
+
sweepPhaseStats.lifetimeDataStoreCount += sweepPhaseStats.deletedDataStoreCount;
|
|
813
|
+
sweepPhaseStats.lifetimeAttachmentBlobCount += sweepPhaseStats.deletedAttachmentBlobCount;
|
|
814
|
+
// The node deleted in current run are counted twice - once in allDeletedNodes and again in
|
|
815
|
+
// markPhaseStats. So, remove them from the life time stats.
|
|
816
|
+
for (const nodeId of currentDeletedNodes) {
|
|
817
|
+
sweepPhaseStats.lifetimeNodeCount--;
|
|
818
|
+
const nodeType = this.runtime.getNodeType(nodeId);
|
|
819
|
+
if (nodeType === gcDefinitions_1.GCNodeType.DataStore) {
|
|
820
|
+
sweepPhaseStats.lifetimeDataStoreCount--;
|
|
821
|
+
}
|
|
822
|
+
else if (nodeType === gcDefinitions_1.GCNodeType.Blob) {
|
|
823
|
+
sweepPhaseStats.lifetimeAttachmentBlobCount--;
|
|
824
|
+
}
|
|
825
|
+
}
|
|
826
|
+
return sweepPhaseStats;
|
|
772
827
|
}
|
|
773
828
|
}
|
|
774
829
|
exports.GarbageCollector = GarbageCollector;
|