28
28
29
29
#ifdef BUILD_TESTS
30
30
#include " VecSim/utils/serializer.h"
31
- #endif
32
31
33
32
#define SVS_INVALID_META_DATA SIZE_MAX
34
33
@@ -40,10 +39,10 @@ typedef struct {
40
39
size_t label_count;
41
40
size_t capacity;
42
41
size_t changes_count;
43
- size_t graph_entry_point;
44
42
bool is_compressed;
45
43
bool is_multi;
46
44
} SVSIndexMetaData;
45
+ #endif
47
46
48
47
struct SVSIndexBase
49
48
#ifdef BUILD_TESTS
@@ -59,6 +58,7 @@ struct SVSIndexBase
59
58
virtual size_t getThreadPoolCapacity () const = 0;
60
59
virtual bool isCompressed () const = 0;
61
60
#ifdef BUILD_TESTS
61
+ virtual SVSIndexMetaData checkIntegrity () const = 0;
62
62
virtual void loadIndex (const std::string &folder_path) = 0;
63
63
virtual svs::logging::logger_ptr getLogger () const = 0;
64
64
#endif
@@ -619,15 +619,14 @@ class SVSIndex : public VecSimIndexAbstract<svs_details::vecsim_dt<DataType>, fl
619
619
}
620
620
}
621
621
622
- SVSIndexMetaData checkIntegrity () const {
622
+ SVSIndexMetaData checkIntegrity () const override {
623
623
SVSIndexMetaData res = {.valid_state = false ,
624
624
.memory_usage = -1 ,
625
625
.index_size = SVS_INVALID_META_DATA,
626
626
.storage_size = SVS_INVALID_META_DATA,
627
627
.label_count = SVS_INVALID_META_DATA,
628
628
.capacity = SVS_INVALID_META_DATA,
629
629
.changes_count = SVS_INVALID_META_DATA,
630
- .graph_entry_point = SVS_INVALID_META_DATA,
631
630
.is_compressed = false ,
632
631
.is_multi = isMulti};
633
632
@@ -668,25 +667,15 @@ class SVSIndex : public VecSimIndexAbstract<svs_details::vecsim_dt<DataType>, fl
668
667
return res;
669
668
}
670
669
671
- // Check graph entry point validity
672
- try {
673
- auto entry_point = impl_->get_entry_point ();
674
- res.graph_entry_point = entry_point;
675
-
676
- // Entry point should be valid (less than index size) if index is not empty
677
- if (res.index_size > 0 && entry_point >= res.index_size ) {
678
- return res;
679
- }
680
- } catch (...) {
681
- // If we can't get entry point, that's a problem
682
- return res;
683
- }
684
670
685
671
// Validate label consistency by checking a sample of labels
686
672
size_t label_validation_errors = 0 ;
687
673
size_t labels_checked = 0 ;
688
674
const size_t max_labels_to_check = std::min (res.index_size , size_t {1000 });
689
675
676
+ // Iterate over a sample of labels using a lambda that captures validation counters by reference.
677
+ // The lambda checks for invalid labels (e.g., SIZE_MAX) and increments the error counter directly.
678
+
690
679
impl_->on_ids ([&](size_t label) {
691
680
if (labels_checked >= max_labels_to_check) {
692
681
return ;
@@ -731,8 +720,6 @@ class SVSIndex : public VecSimIndexAbstract<svs_details::vecsim_dt<DataType>, fl
731
720
732
721
svs::logging::logger_ptr getLogger () const override { return logger_; }
733
722
734
- // Validates the integrity of a loaded SVS index
735
- SVSIndexMetaData checkIntegrity () const ;
736
723
#endif
737
724
};
738
725
0 commit comments