Consolidate repeated code in Rocks::open() (#34131)

The function matches the access type and calls a different RocksDB
function depending on whether we have primary or secondary access. But,
lots of the code is the same for these two paths so de-duplicate the
repeated sections.
This commit is contained in:
steviez 2023-11-17 10:18:08 -06:00 committed by GitHub
parent 6280b1e53e
commit 29947ba867
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 23 additions and 30 deletions

View File

@ -419,46 +419,39 @@ impl Rocks {
}
let oldest_slot = OldestSlot::default();
let column_options = options.column_options.clone();
let cf_descriptors = Self::cf_descriptors(&options, &oldest_slot);
// Open the database
let db = match access_type {
AccessType::Primary | AccessType::PrimaryForMaintenance => Rocks {
db: DB::open_cf_descriptors(
&db_options,
path,
Self::cf_descriptors(&options, &oldest_slot),
)?,
access_type,
oldest_slot,
column_options,
write_batch_perf_status: PerfSamplingStatus::default(),
},
AccessType::Primary | AccessType::PrimaryForMaintenance => {
DB::open_cf_descriptors(&db_options, path, cf_descriptors)?
}
AccessType::Secondary => {
let secondary_path = path.join("solana-secondary");
info!(
"Opening Rocks with secondary (read only) access at: {:?}",
secondary_path
"Opening Rocks with secondary (read only) access at: {secondary_path:?}. \
This secondary access could temporarily degrade other accesses, such as \
by solana-validator"
);
info!("This secondary access could temporarily degrade other accesses, such as by solana-validator");
Rocks {
db: DB::open_cf_descriptors_as_secondary(
DB::open_cf_descriptors_as_secondary(
&db_options,
path,
&secondary_path,
Self::cf_descriptors(&options, &oldest_slot),
)?,
cf_descriptors,
)?
}
};
let rocks = Rocks {
db,
access_type,
oldest_slot,
column_options,
write_batch_perf_status: PerfSamplingStatus::default(),
}
}
};
db.configure_compaction();
Ok(db)
rocks.configure_compaction();
Ok(rocks)
}
fn cf_descriptors(