fix(revlog): avoid panic when async log fetch fails

Log revlog fetch and notification errors instead of unwrapping,
matching the status async fetch pattern.

Fixes #2713

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
wuyangfan 2026-05-17 18:31:54 +08:00
parent 8619c07f3f
commit 5d95857ea9

View file

@ -145,6 +145,13 @@ impl AsyncLog {
Ok(false)
}
///
pub fn invalidate(&self) {
if let Ok(mut head) = self.current_head.lock() {
*head = None;
}
}
///
pub fn fetch(&self) -> Result<FetchStatus> {
self.background.store(false, Ordering::Relaxed);
@ -176,18 +183,21 @@ impl AsyncLog {
rayon_core::spawn(move || {
scope_time!("async::revlog");
Self::fetch_helper(
if let Err(e) = Self::fetch_helper(
&repo_path,
&arc_current,
&arc_background,
&sender,
filter,
)
.expect("failed to fetch");
) {
log::error!("revlog fetch_helper: {e}");
}
arc_pending.store(false, Ordering::Relaxed);
Self::notify(&sender);
if let Err(e) = sender.send(AsyncGitNotification::Log) {
log::error!("revlog notify error: {e}");
}
});
Ok(FetchStatus::Started)