mirror of
https://github.com/meilisearch/MeiliSearch
synced 2024-11-22 21:04:27 +01:00
Merge #2157
2157: fix(auth): fix env being closed when dumping r=Kerollmops a=MarinPostma When creating a dump, the auth store environment would be closed on drop, so subsequent dumps couldn't reopen the environment. I have added a flag in the environment to prevent the closing of the environment on drop when dumping. Co-authored-by: ad hoc <postma.marin@protonmail.com>
This commit is contained in:
commit
6e7a0cc65d
@ -10,7 +10,10 @@ const KEYS_PATH: &str = "keys";
|
|||||||
|
|
||||||
impl AuthController {
|
impl AuthController {
|
||||||
pub fn dump(src: impl AsRef<Path>, dst: impl AsRef<Path>) -> Result<()> {
|
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);
|
let keys_file_path = dst.as_ref().join(KEYS_PATH);
|
||||||
|
|
||||||
|
@ -28,11 +28,12 @@ pub struct HeedAuthStore {
|
|||||||
env: Arc<Env>,
|
env: Arc<Env>,
|
||||||
keys: Database<ByteSlice, SerdeJson<Key>>,
|
keys: Database<ByteSlice, SerdeJson<Key>>,
|
||||||
action_keyid_index_expiration: Database<KeyIdActionCodec, SerdeJson<Option<DateTime<Utc>>>>,
|
action_keyid_index_expiration: Database<KeyIdActionCodec, SerdeJson<Option<DateTime<Utc>>>>,
|
||||||
|
should_close_on_drop: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for HeedAuthStore {
|
impl Drop for HeedAuthStore {
|
||||||
fn drop(&mut self) {
|
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();
|
self.env.as_ref().clone().prepare_for_closing();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -53,9 +54,14 @@ impl HeedAuthStore {
|
|||||||
env,
|
env,
|
||||||
keys,
|
keys,
|
||||||
action_keyid_index_expiration,
|
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> {
|
pub fn is_empty(&self) -> Result<bool> {
|
||||||
let rtxn = self.env.read_txn()?;
|
let rtxn = self.env.read_txn()?;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user