remove unnecessary cf arc refcnt workaround

log errors and panics propagating through the request task join

Signed-off-by: Jason Volk <jason@zemos.net>
This commit is contained in:
Jason Volk 2025-02-01 23:41:05 +00:00
parent 7ce782ddf4
commit b4d22bd05e
5 changed files with 53 additions and 28 deletions

View file

@ -30,13 +30,13 @@ use crate::{
};
pub struct Engine {
pub(crate) db: Db,
pub(crate) pool: Arc<Pool>,
pub(crate) ctx: Arc<Context>,
pub(super) read_only: bool,
pub(super) secondary: bool,
pub(crate) checksums: bool,
corks: AtomicU32,
pub(crate) db: Db,
pub(crate) pool: Arc<Pool>,
pub(crate) ctx: Arc<Context>,
}
pub(crate) type Db = DBWithThreadMode<MultiThreaded>;

View file

@ -56,13 +56,13 @@ pub(crate) async fn open(ctx: Arc<Context>, desc: &[Descriptor]) -> Result<Arc<S
);
Ok(Arc::new(Self {
db,
pool: ctx.pool.clone(),
ctx: ctx.clone(),
read_only: config.rocksdb_read_only,
secondary: config.rocksdb_secondary,
checksums: config.rocksdb_checksums,
corks: AtomicU32::new(0),
pool: ctx.pool.clone(),
db,
ctx,
}))
}

View file

@ -44,24 +44,24 @@ use crate::{watchers::Watchers, Engine};
pub struct Map {
name: &'static str,
db: Arc<Engine>,
cf: Arc<ColumnFamily>,
watchers: Watchers,
write_options: WriteOptions,
cf: Arc<ColumnFamily>,
db: Arc<Engine>,
read_options: ReadOptions,
cache_read_options: ReadOptions,
write_options: WriteOptions,
}
impl Map {
pub(crate) fn open(db: &Arc<Engine>, name: &'static str) -> Result<Arc<Self>> {
Ok(Arc::new(Self {
name,
db: db.clone(),
cf: open::open(db, name),
watchers: Watchers::default(),
write_options: write_options_default(db),
cf: open::open(db, name),
db: db.clone(),
read_options: read_options_default(db),
cache_read_options: cache_read_options_default(db),
write_options: write_options_default(db),
}))
}

View file

@ -30,8 +30,5 @@ pub(super) fn open(db: &Arc<Engine>, name: &str) -> Arc<ColumnFamily> {
// lifetime parameter. We should not hold this handle, even in its Arc, after
// closing the database (dropping `Engine`). Since `Arc<Engine>` is a sibling
// member along with this handle in `Map`, that is prevented.
unsafe {
Arc::increment_strong_count(cf_ptr);
Arc::from_raw(cf_ptr)
}
unsafe { Arc::from_raw(cf_ptr) }
}