Skip to content

Commit

Permalink
fix(auth): fix env being closed when dumping
Browse files Browse the repository at this point in the history
  • Loading branch information
MarinPostma committed Feb 9, 2022
1 parent cca6549 commit 23eba82
Showing 2 changed files with 11 additions and 2 deletions.
5 changes: 4 additions & 1 deletion meilisearch-auth/src/dump.rs
Original file line number Diff line number Diff line change
@@ -10,7 +10,10 @@ const KEYS_PATH: &str = "keys";

impl AuthController {
pub fn dump(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> Result<()> {
let store = HeedAuthStore::new(&src)?;
let mut store = HeedAuthStore::new(&src)?;

// do not attempt to close the database on drop!
store.set_drop_on_close(false);

let keys_file_path = dst.as_ref().join(KEYS_PATH);

8 changes: 7 additions & 1 deletion meilisearch-auth/src/store.rs
Original file line number Diff line number Diff line change
@@ -28,11 +28,12 @@ pub struct HeedAuthStore {
env: Arc<Env>,
keys: Database<ByteSlice, SerdeJson<Key>>,
action_keyid_index_expiration: Database<KeyIdActionCodec, SerdeJson<Option<DateTime<Utc>>>>,
should_close_on_drop: bool,
}

impl Drop for HeedAuthStore {
fn drop(&mut self) {
if Arc::strong_count(&self.env) == 1 {
if self.should_close_on_drop && Arc::strong_count(&self.env) == 1 {
self.env.as_ref().clone().prepare_for_closing();
}
}
@@ -53,9 +54,14 @@ impl HeedAuthStore {
env,
keys,
action_keyid_index_expiration,
should_close_on_drop: true,
})
}

pub fn set_drop_on_close(&mut self, v: bool) {
self.should_close_on_drop = v;
}

pub fn is_empty(&self) -> Result<bool> {
let rtxn = self.env.read_txn()?;

0 comments on commit 23eba82

Please sign in to comment.