Skip to content

Commit

Permalink
Consolidate repeated code in Rocks::open() (solana-labs#34131)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
steviez authored Nov 17, 2023
1 parent 6280b1e commit 29947ba
Showing 1 changed file with 23 additions and 30 deletions.
53 changes: 23 additions & 30 deletions ledger/src/blockstore_db.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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_options,
path,
&secondary_path,
Self::cf_descriptors(&options, &oldest_slot),
)?,
access_type,
oldest_slot,
column_options,
write_batch_perf_status: PerfSamplingStatus::default(),
}
DB::open_cf_descriptors_as_secondary(
&db_options,
path,
&secondary_path,
cf_descriptors,
)?
}
};
db.configure_compaction();
let rocks = Rocks {
db,
access_type,
oldest_slot,
column_options,
write_batch_perf_status: PerfSamplingStatus::default(),
};

rocks.configure_compaction();

Ok(db)
Ok(rocks)
}

fn cf_descriptors(
Expand Down

0 comments on commit 29947ba

Please sign in to comment.