@@ -11,6 +11,7 @@ use atomic_refcell::AtomicRefCell;
1111use bitvec:: macros:: internal:: funty:: Integral ;
1212use common:: budget:: ResourcePermit ;
1313use common:: counter:: hardware_counter:: HardwareCounterCell ;
14+ use common:: flags:: feature_flags;
1415use common:: small_uint:: U24 ;
1516use common:: types:: PointOffsetType ;
1617use io:: storage_version:: StorageVersion ;
@@ -19,9 +20,10 @@ use tempfile::TempDir;
1920use uuid:: Uuid ;
2021
2122use super :: {
22- create_mutable_id_tracker, create_payload_storage, create_sparse_vector_index,
23- create_sparse_vector_storage, get_payload_index_path, get_vector_index_path,
24- get_vector_storage_path, new_segment_path, open_segment_db, open_vector_storage,
23+ create_mutable_id_tracker, create_payload_storage, create_rocksdb_id_tracker,
24+ create_sparse_vector_index, create_sparse_vector_storage, get_payload_index_path,
25+ get_vector_index_path, get_vector_storage_path, new_segment_path, open_segment_db,
26+ open_vector_storage,
2527} ;
2628use crate :: common:: error_logging:: LogError ;
2729use crate :: common:: operation_error:: { OperationError , OperationResult , check_process_stopped} ;
@@ -85,7 +87,11 @@ impl SegmentBuilder {
8587 let database = open_segment_db ( temp_dir. path ( ) , segment_config) ?;
8688
8789 let id_tracker = if segment_config. is_appendable ( ) {
88- IdTrackerEnum :: MutableIdTracker ( create_mutable_id_tracker ( temp_dir. path ( ) ) ?)
90+ if feature_flags ( ) . use_mutable_id_tracker_without_rocksdb {
91+ IdTrackerEnum :: MutableIdTracker ( create_mutable_id_tracker ( temp_dir. path ( ) ) ?)
92+ } else {
93+ IdTrackerEnum :: RocksDbIdTracker ( create_rocksdb_id_tracker ( database. clone ( ) ) ?)
94+ }
8995 } else {
9096 IdTrackerEnum :: InMemoryIdTracker ( InMemoryIdTracker :: new ( ) )
9197 } ;
0 commit comments