@@ -353,14 +353,20 @@ func (vs *versionSet) load(
353353 for _ , l := range newVersion .Levels {
354354 for f := range l .All () {
355355 if ! f .Virtual {
356- _ , localSize := sizeIfLocal (f .FileBacking , vs .provider )
356+ isLocal , localSize := sizeIfLocal (f .FileBacking , vs .provider )
357357 vs .metrics .Table .Local .LiveSize = uint64 (int64 (vs .metrics .Table .Local .LiveSize ) + localSize )
358+ if isLocal {
359+ vs .metrics .Table .Local .LiveCount ++
360+ }
358361 }
359362 }
360363 }
361364 vs .virtualBackings .ForEach (func (backing * fileBacking ) {
362- _ , localSize := sizeIfLocal (backing , vs .provider )
365+ isLocal , localSize := sizeIfLocal (backing , vs .provider )
363366 vs .metrics .Table .Local .LiveSize = uint64 (int64 (vs .metrics .Table .Local .LiveSize ) + localSize )
367+ if isLocal {
368+ vs .metrics .Table .Local .LiveCount ++
369+ }
364370 })
365371
366372 vs .setCompactionPicker (
@@ -569,7 +575,7 @@ func (vs *versionSet) UpdateVersionLocked(updateFn func() (versionUpdate, error)
569575 nextFileNum := vs .nextFileNum .Load ()
570576
571577 // Note: this call populates ve.RemovedBackingTables.
572- zombieBackings , removedVirtualBackings , localLiveSizeDelta :=
578+ zombieBackings , removedVirtualBackings , localLiveSizeDelta , localLiveCountDelta :=
573579 getZombiesAndUpdateVirtualBackings (ve , & vs .virtualBackings , vs .provider )
574580
575581 var l0Update manifest.L0PreparedUpdate
@@ -734,6 +740,7 @@ func (vs *versionSet) UpdateVersionLocked(updateFn func() (versionUpdate, error)
734740 }
735741 vs .metrics .Levels [0 ].Sublevels = int32 (len (newVersion .L0SublevelFiles ))
736742 vs .metrics .Table .Local .LiveSize = uint64 (int64 (vs .metrics .Table .Local .LiveSize ) + localLiveSizeDelta )
743+ vs .metrics .Table .Local .LiveCount = uint64 (int64 (vs .metrics .Table .Local .LiveCount ) + localLiveCountDelta )
737744
738745 vs .setCompactionPicker (
739746 newCompactionPickerByScore (newVersion , vs .l0Organizer , & vs .virtualBackings , vs .opts , inProgress ))
@@ -764,7 +771,10 @@ type fileBackingInfo struct {
764771// - localLiveSizeDelta: the delta in local live bytes.
765772func getZombiesAndUpdateVirtualBackings (
766773 ve * versionEdit , virtualBackings * manifest.VirtualBackings , provider objstorage.Provider ,
767- ) (zombieBackings , removedVirtualBackings []fileBackingInfo , localLiveSizeDelta int64 ) {
774+ ) (
775+ zombieBackings , removedVirtualBackings []fileBackingInfo ,
776+ localLiveSizeDelta , localLiveCountDelta int64 ,
777+ ) {
768778 // First, deal with the physical tables.
769779 //
770780 // A physical backing has become unused if it is in DeletedFiles but not in
@@ -776,8 +786,11 @@ func getZombiesAndUpdateVirtualBackings(
776786 for _ , nf := range ve .NewTables {
777787 if ! nf .Meta .Virtual {
778788 stillUsed [nf .Meta .FileBacking .DiskFileNum ] = struct {}{}
779- _ , localFileDelta := sizeIfLocal (nf .Meta .FileBacking , provider )
789+ isLocal , localFileDelta := sizeIfLocal (nf .Meta .FileBacking , provider )
780790 localLiveSizeDelta += localFileDelta
791+ if isLocal {
792+ localLiveCountDelta ++
793+ }
781794 }
782795 }
783796 for _ , b := range ve .CreatedBackingTables {
@@ -792,6 +805,9 @@ func getZombiesAndUpdateVirtualBackings(
792805 // for the addition.
793806 isLocal , localFileDelta := sizeIfLocal (m .FileBacking , provider )
794807 localLiveSizeDelta -= localFileDelta
808+ if isLocal {
809+ localLiveCountDelta --
810+ }
795811 if _ , ok := stillUsed [m .FileBacking .DiskFileNum ]; ! ok {
796812 zombieBackings = append (zombieBackings , fileBackingInfo {
797813 backing : m .FileBacking ,
@@ -807,8 +823,11 @@ func getZombiesAndUpdateVirtualBackings(
807823 // which works out.
808824 for _ , b := range ve .CreatedBackingTables {
809825 virtualBackings .AddAndRef (b )
810- _ , localFileDelta := sizeIfLocal (b , provider )
826+ isLocal , localFileDelta := sizeIfLocal (b , provider )
811827 localLiveSizeDelta += localFileDelta
828+ if isLocal {
829+ localLiveCountDelta ++
830+ }
812831 }
813832 for _ , nf := range ve .NewTables {
814833 if nf .Meta .Virtual {
@@ -828,6 +847,9 @@ func getZombiesAndUpdateVirtualBackings(
828847 for i , b := range unused {
829848 isLocal , localFileDelta := sizeIfLocal (b , provider )
830849 localLiveSizeDelta -= localFileDelta
850+ if isLocal {
851+ localLiveCountDelta --
852+ }
831853 ve .RemovedBackingTables [i ] = b .DiskFileNum
832854 zombieBackings = append (zombieBackings , fileBackingInfo {
833855 backing : b ,
@@ -837,7 +859,7 @@ func getZombiesAndUpdateVirtualBackings(
837859 }
838860 removedVirtualBackings = zombieBackings [len (zombieBackings )- len (unused ):]
839861 }
840- return zombieBackings , removedVirtualBackings , localLiveSizeDelta
862+ return zombieBackings , removedVirtualBackings , localLiveSizeDelta , localLiveCountDelta
841863}
842864
843865// sizeIfLocal returns backing.Size if the backing is a local file, else 0.
@@ -1090,10 +1112,12 @@ func (vs *versionSet) updateObsoleteTableMetricsLocked() {
10901112 vs .metrics .Table .ObsoleteCount = int64 (len (vs .obsoleteTables ))
10911113 vs .metrics .Table .ObsoleteSize = 0
10921114 vs .metrics .Table .Local .ObsoleteSize = 0
1115+ vs .metrics .Table .Local .ObsoleteCount = 0
10931116 for _ , fi := range vs .obsoleteTables {
10941117 vs .metrics .Table .ObsoleteSize += fi .FileSize
10951118 if fi .isLocal {
10961119 vs .metrics .Table .Local .ObsoleteSize += fi .FileSize
1120+ vs .metrics .Table .Local .ObsoleteCount ++
10971121 }
10981122 }
10991123}
0 commit comments