1
0
mirror of https://github.com/meilisearch/MeiliSearch synced 2025-02-03 00:53:27 +01:00
5242: Fix infinite loop r=Kerollmops a=dureuill

- Fix possible infinite loop by releasing `writer_receiver` as soon as writing to DB panics
- Demote panic to error log

Co-authored-by: Louis Dureuil <louis@meilisearch.com>
This commit is contained in:
meili-bors[bot] 2025-01-16 14:13:07 +00:00 committed by GitHub
commit a5c44b4d79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -110,7 +110,7 @@ where
}, },
); );
let (extractor_sender, mut writer_receiver) = pool let (extractor_sender, writer_receiver) = pool
.install(|| extractor_writer_bbqueue(&mut bbbuffers, total_bbbuffer_capacity, 1000)) .install(|| extractor_writer_bbqueue(&mut bbbuffers, total_bbbuffer_capacity, 1000))
.unwrap(); .unwrap();
@ -425,6 +425,7 @@ where
let mut arroy_writers = arroy_writers?; let mut arroy_writers = arroy_writers?;
{ {
let mut writer_receiver = writer_receiver;
let span = tracing::trace_span!(target: "indexing::write_db", "all"); let span = tracing::trace_span!(target: "indexing::write_db", "all");
let _entered = span.enter(); let _entered = span.enter();
@ -584,10 +585,12 @@ fn write_from_bbqueue(
} }
(key, None) => match database.delete(wtxn, key) { (key, None) => match database.delete(wtxn, key) {
Ok(false) => { Ok(false) => {
unreachable!( tracing::error!(
"We tried to delete an unknown key from {database_name}: {:?}", database_name,
key.as_bstr() key_bytes = ?key,
) formatted_key = ?key.as_bstr(),
"Attempt to delete an unknown key"
);
} }
Ok(_) => (), Ok(_) => (),
Err(error) => { Err(error) => {