screenpipe/screenpipe · error
status: {}
Error message
status: {} What it means
Wraps a failure of manager.get_status() at the start of run_download. get_status queries the remote archive service for blob counts/stats needed to initialize DownloadProgress.total_blobs; any network, auth, or serialization failure is re-wrapped as 'status: {}'.
Source
Thrown at crates/screenpipe-engine/src/archive.rs:516
guard.bytes_written,
output_dir.display()
);
}
}
})
}
/// Download every archived blob and write it to `output_dir`.
async fn run_download(
manager: &SyncManager,
output_dir: &std::path::Path,
progress: &Arc<RwLock<DownloadProgress>>,
) -> anyhow::Result<()> {
// Determine the time span of archived data.
let status = manager
.get_status()
.await
.map_err(|e| anyhow::anyhow!("status: {}", e))?;
{
let mut g = progress.write().await;
g.total_blobs = status.stats.total_blobs as u64;
}
let start = match status.stats.oldest_data.as_deref().and_then(parse_ts) {
Some(t) => t,
None => {
info!("archive-download: no archived data found");
return Ok(());
}
};
// Pad the end so the newest instant is included.
let end = status
.stats
.newest_data
.as_deref()View on GitHub (pinned to 4ebf712990)
Solutions
- Check network connectivity and retry the download
- Refresh the archive token — a 401/403 wrapped inside this error means re-authentication is needed
- Inspect the root cause for HTTP status or decode errors to target the fix
- Retry later if the archive service is temporarily unavailable
Defensive patterns
Strategy: retry
Validate before calling
// pre-flight connectivity/token check
let reachable = tokio::net::TcpStream::connect(("archive-host", 443)).await.is_ok();
if !reachable { anyhow::bail!("archive service unreachable"); } Try / catch
let status = loop {
match manager.get_status().await {
Ok(s) => break s,
Err(e) if attempts < 3 && is_transient(&e) => { attempts += 1; backoff().await; }
Err(e) => return Err(anyhow::anyhow!("status: {e:#}")),
}
}; Prevention
- Retry transient network errors with exponential backoff
- Refresh the token when the cause is 401/403
- Surface download failure state to the user instead of failing silently
- Health-check the archive endpoint before starting long exports
When it happens
Trigger: spawn_download_task -> run_download calls manager.get_status().await before paging through blobs; the request fails (network error, 401/403 from an invalid token, unexpected server response).
Common situations: Offline or flaky network during an archive export; expired archive token causing server rejection; archive backend returning an unexpected payload the client can't parse.
Related errors
- download {}–{}: {}
- no Google Calendar account could be queried
- POST /artifacts/register returned ${res.status}
- web search failed (${res.status})${detail ? `: ${detail}` :
- otter returned {}: {}
AI-assisted analysis of screenpipe/screenpipe@4ebf712990 (2026-09-01).
Data as JSON: /api/errors/fddbe3f82770732a.
Report an issue: GitHub.