Skip to content

Commit

Permalink
temp fix crash due to race condition
Browse files Browse the repository at this point in the history
we should fix the race condition though

Link: damus-io/nostrdb#35
Signed-off-by: William Casarin <[email protected]>
  • Loading branch information
jb55 committed Aug 3, 2024
1 parent ce51426 commit 0869cdd
Showing 1 changed file with 20 additions and 21 deletions.
41 changes: 20 additions & 21 deletions src/timeline.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ use std::cell::RefCell;
use std::collections::HashSet;
use std::rc::Rc;

use tracing::debug;
use tracing::{debug, error};

#[derive(Debug, Copy, Clone)]
pub enum TimelineSource<'a> {
Expand Down Expand Up @@ -89,26 +89,25 @@ impl<'a> TimelineSource<'a> {
debug!("{} new notes! {:?}", new_note_ids.len(), new_note_ids);
}

let new_refs: Vec<(Note, NoteRef)> = new_note_ids
.iter()
.map(|key| {
let note = app.ndb.get_note_by_key(txn, *key).expect("no note??");
let cached_note = app
.note_cache_mut()
.cached_note_or_insert(*key, &note)
.clone();
let _ = get_unknown_note_ids(&app.ndb, &cached_note, txn, &note, *key, ids);

let created_at = note.created_at();
(
note,
NoteRef {
key: *key,
created_at,
},
)
})
.collect();
let mut new_refs: Vec<(Note, NoteRef)> = Vec::with_capacity(new_note_ids.len());

for key in new_note_ids {
let note = if let Ok(note) = app.ndb.get_note_by_key(txn, key) {
note
} else {
error!("hit race condition in poll_notes_into_view: https://github.com/damus-io/nostrdb/issues/35 note {:?} was not added to timeline", key);
continue;
};

let cached_note = app
.note_cache_mut()
.cached_note_or_insert(key, &note)
.clone();
let _ = get_unknown_note_ids(&app.ndb, &cached_note, txn, &note, key, ids);

let created_at = note.created_at();
new_refs.push((note, NoteRef { key, created_at }));
}

// ViewFilter::NotesAndReplies
{
Expand Down

0 comments on commit 0869cdd

Please sign in to comment.