@@ -604,45 +604,7 @@ func (vs *versionSet) UpdateVersionLocked(
604604 }
605605
606606 vs .metrics .updateLevelMetrics (vu .Metrics )
607- for i := range vs .metrics .Levels {
608- l := & vs .metrics .Levels [i ]
609- l .TablesCount = int64 (newVersion .Levels [i ].Len ())
610- l .VirtualTablesCount = newVersion .Levels [i ].NumVirtual
611- l .VirtualTablesSize = newVersion .Levels [i ].VirtualTableSize
612- l .TablesSize = int64 (newVersion .Levels [i ].TableSize ())
613- l .EstimatedReferencesSize = newVersion .Levels [i ].EstimatedReferenceSize ()
614- l .Sublevels = 0
615- if l .TablesCount > 0 {
616- l .Sublevels = 1
617- }
618- if invariants .Enabled {
619- levelFiles := newVersion .Levels [i ].Slice ()
620- if size := int64 (levelFiles .TableSizeSum ()); l .TablesSize != size {
621- vs .opts .Logger .Fatalf ("versionSet metrics L%d Size = %d, actual size = %d" , i , l .TablesSize , size )
622- }
623- refSize := uint64 (0 )
624- for f := range levelFiles .All () {
625- refSize += f .EstimatedReferenceSize ()
626- }
627- if refSize != l .EstimatedReferencesSize {
628- vs .opts .Logger .Fatalf ("versionSet metrics L%d EstimatedReferencesSize = %d, recomputed size = %d" , i , l .EstimatedReferencesSize , refSize )
629- }
630-
631- if nVirtual := levelFiles .NumVirtual (); nVirtual != l .VirtualTablesCount {
632- vs .opts .Logger .Fatalf (
633- "versionSet metrics L%d NumVirtual = %d, actual NumVirtual = %d" ,
634- i , l .VirtualTablesCount , nVirtual ,
635- )
636- }
637- if vSize := levelFiles .VirtualTableSizeSum (); vSize != l .VirtualTablesSize {
638- vs .opts .Logger .Fatalf (
639- "versionSet metrics L%d Virtual size = %d, actual size = %d" ,
640- i , l .VirtualTablesSize , vSize ,
641- )
642- }
643- }
644- }
645- vs .metrics .Levels [0 ].Sublevels = int32 (len (newVersion .L0SublevelFiles ))
607+ setBasicLevelMetrics (& vs .metrics , newVersion )
646608 vs .metrics .Table .Local .LiveSize = uint64 (int64 (vs .metrics .Table .Local .LiveSize ) + localTablesLiveDelta .size )
647609 vs .metrics .Table .Local .LiveCount = uint64 (int64 (vs .metrics .Table .Local .LiveCount ) + localTablesLiveDelta .count )
648610 vs .metrics .BlobFiles .Local .LiveSize = uint64 (int64 (vs .metrics .BlobFiles .Local .LiveSize ) + localBlobLiveDelta .size )
@@ -1111,6 +1073,55 @@ func (vs *versionSet) updateObsoleteObjectMetricsLocked() {
11111073 }
11121074}
11131075
1076+ // This method sets the following fields of m.Levels[*]:
1077+ // - [Virtual]Tables{Count,Size}
1078+ // - Sublevels
1079+ // - EstimatedReferencesSize
1080+ func setBasicLevelMetrics (m * Metrics , newVersion * manifest.Version ) {
1081+ for i := range m .Levels {
1082+ l := & m .Levels [i ]
1083+ l .TablesCount = int64 (newVersion .Levels [i ].Len ())
1084+ l .TablesSize = int64 (newVersion .Levels [i ].TableSize ())
1085+ l .VirtualTablesCount = newVersion .Levels [i ].NumVirtual
1086+ l .VirtualTablesSize = newVersion .Levels [i ].VirtualTableSize
1087+ l .EstimatedReferencesSize = newVersion .Levels [i ].EstimatedReferenceSize ()
1088+ l .Sublevels = 0
1089+ if l .TablesCount > 0 {
1090+ l .Sublevels = 1
1091+ }
1092+ if invariants .Enabled {
1093+ levelFiles := newVersion .Levels [i ].Slice ()
1094+ if size := int64 (levelFiles .TableSizeSum ()); l .TablesSize != size {
1095+ panic (fmt .Sprintf ("versionSet metrics L%d Size = %d, actual size = %d" , i , l .TablesSize , size ))
1096+ }
1097+ refSize := uint64 (0 )
1098+ for f := range levelFiles .All () {
1099+ refSize += f .EstimatedReferenceSize ()
1100+ }
1101+ if refSize != l .EstimatedReferencesSize {
1102+ panic (fmt .Sprintf (
1103+ "versionSet metrics L%d EstimatedReferencesSize = %d, recomputed size = %d" ,
1104+ i , l .EstimatedReferencesSize , refSize ,
1105+ ))
1106+ }
1107+
1108+ if nVirtual := levelFiles .NumVirtual (); nVirtual != l .VirtualTablesCount {
1109+ panic (fmt .Sprintf (
1110+ "versionSet metrics L%d NumVirtual = %d, actual NumVirtual = %d" ,
1111+ i , l .VirtualTablesCount , nVirtual ,
1112+ ))
1113+ }
1114+ if vSize := levelFiles .VirtualTableSizeSum (); vSize != l .VirtualTablesSize {
1115+ panic (fmt .Sprintf (
1116+ "versionSet metrics L%d Virtual size = %d, actual size = %d" ,
1117+ i , l .VirtualTablesSize , vSize ,
1118+ ))
1119+ }
1120+ }
1121+ }
1122+ m .Levels [0 ].Sublevels = int32 (len (newVersion .L0SublevelFiles ))
1123+ }
1124+
11141125func findCurrentManifest (
11151126 fs vfs.FS , dirname string , ls []string ,
11161127) (marker * atomicfs.Marker , manifestNum base.DiskFileNum , exists bool , err error ) {
@@ -1133,18 +1144,3 @@ func findCurrentManifest(
11331144 }
11341145 return marker , manifestNum , true , nil
11351146}
1136-
1137- func newFileMetrics (newFiles []manifest.NewTableEntry ) levelMetricsDelta {
1138- var m levelMetricsDelta
1139- for _ , nf := range newFiles {
1140- lm := m [nf .Level ]
1141- if lm == nil {
1142- lm = & LevelMetrics {}
1143- m [nf .Level ] = lm
1144- }
1145- lm .TablesCount ++
1146- lm .TablesSize += int64 (nf .Meta .Size )
1147- lm .EstimatedReferencesSize += nf .Meta .EstimatedReferenceSize ()
1148- }
1149- return m
1150- }
0 commit comments