Differentiate between keys and dbs

This commit is contained in:
Louis Dureuil 2025-01-29 15:28:10 +01:00
parent e9fc827c82
commit 0b757a5f70
No known key found for this signature in database

View File

@ -8,11 +8,15 @@ use crate::error::FeatureNotEnabledError;
use crate::Result; use crate::Result;
/// The number of database used by features /// The number of database used by features
const NUMBER_OF_DATABASES: u32 = 2; const NUMBER_OF_DATABASES: u32 = 1;
/// Database const names for the `FeatureData`. /// Database const names for the `FeatureData`.
mod db_name { mod db_name {
pub const EXPERIMENTAL_FEATURES: &str = "experimental-features"; pub const EXPERIMENTAL_FEATURES: &str = "experimental-features";
const NETWORK: &str = "network"; }
mod db_keys {
pub const EXPERIMENTAL_FEATURES: &str = "experimental-features";
pub const NETWORK: &str = "network";
} }
#[derive(Clone)] #[derive(Clone)]
@ -104,7 +108,7 @@ impl FeatureData {
env.create_database(wtxn, Some(db_name::EXPERIMENTAL_FEATURES))?; env.create_database(wtxn, Some(db_name::EXPERIMENTAL_FEATURES))?;
let persisted_features: RuntimeTogglableFeatures = let persisted_features: RuntimeTogglableFeatures =
runtime_features_db.get(wtxn, db_name::EXPERIMENTAL_FEATURES)?.unwrap_or_default(); runtime_features_db.get(wtxn, db_keys::EXPERIMENTAL_FEATURES)?.unwrap_or_default();
let InstanceTogglableFeatures { metrics, logs_route, contains_filter } = instance_features; let InstanceTogglableFeatures { metrics, logs_route, contains_filter } = instance_features;
let runtime = Arc::new(RwLock::new(RuntimeTogglableFeatures { let runtime = Arc::new(RwLock::new(RuntimeTogglableFeatures {
metrics: metrics || persisted_features.metrics, metrics: metrics || persisted_features.metrics,
@ -114,7 +118,7 @@ impl FeatureData {
})); }));
let network_db = runtime_features_db.remap_data_type::<SerdeJson<Network>>(); let network_db = runtime_features_db.remap_data_type::<SerdeJson<Network>>();
let network: Network = network_db.get(&txn, db_name::NETWORK)?.unwrap_or_default(); let network: Network = network_db.get(wtxn, db_keys::NETWORK)?.unwrap_or_default();
Ok(Self { Ok(Self {
persisted: runtime_features_db, persisted: runtime_features_db,
@ -128,7 +132,7 @@ impl FeatureData {
mut wtxn: RwTxn, mut wtxn: RwTxn,
features: RuntimeTogglableFeatures, features: RuntimeTogglableFeatures,
) -> Result<()> { ) -> Result<()> {
self.persisted.put(&mut wtxn, db_name::EXPERIMENTAL_FEATURES, &features)?; self.persisted.put(&mut wtxn, db_keys::EXPERIMENTAL_FEATURES, &features)?;
wtxn.commit()?; wtxn.commit()?;
// safe to unwrap, the lock will only fail if: // safe to unwrap, the lock will only fail if:
@ -153,7 +157,7 @@ impl FeatureData {
pub fn put_network(&self, mut wtxn: RwTxn, new_network: Network) -> Result<()> { pub fn put_network(&self, mut wtxn: RwTxn, new_network: Network) -> Result<()> {
self.persisted.remap_data_type::<SerdeJson<Network>>().put( self.persisted.remap_data_type::<SerdeJson<Network>>().put(
&mut wtxn, &mut wtxn,
db_name::NETWORK, db_keys::NETWORK,
&new_network, &new_network,
)?; )?;
wtxn.commit()?; wtxn.commit()?;