node: Return error if remote errors

Instead of simply breaking out of the loop, log and return an error.
This commit is contained in:
Alexis Sellier 2023-01-30 13:15:33 +01:00
parent 99bd62d276
commit 3aa105afda
No known key found for this signature in database
2 changed files with 5 additions and 3 deletions

View File

@ -451,6 +451,7 @@ where
let tracked = self let tracked = self
.track_repo(&id, tracking::Scope::All) .track_repo(&id, tracking::Scope::All)
.expect("Service::command: error tracking repository"); .expect("Service::command: error tracking repository");
// TODO: Try to fetch project if we weren't tracking it.
resp.send(tracked).ok(); resp.send(tracked).ok();
} }
Command::UntrackRepo(id, resp) => { Command::UntrackRepo(id, resp) => {

View File

@ -216,7 +216,7 @@ impl<G: Signer + EcSign + 'static> Worker<G> {
) -> Result<Vec<RefUpdate>, FetchError> { ) -> Result<Vec<RefUpdate>, FetchError> {
// Connect to our local git daemon, running as a child process. // Connect to our local git daemon, running as a child process.
let daemon = net::TcpStream::connect_timeout(&self.daemon, self.timeout)?; let daemon = net::TcpStream::connect_timeout(&self.daemon, self.timeout)?;
let (mut daemon_r, mut daemon_w) = (daemon.try_clone().unwrap(), daemon); let (mut daemon_r, mut daemon_w) = (daemon.try_clone()?, daemon);
let mut stream_r = pktline::Reader::new(drain, stream_r); let mut stream_r = pktline::Reader::new(drain, stream_r);
let mut daemon_r = pktline::Reader::new(vec![], &mut daemon_r); let mut daemon_r = pktline::Reader::new(vec![], &mut daemon_r);
let mut buffer = [0; u16::MAX as usize + 1]; let mut buffer = [0; u16::MAX as usize + 1];
@ -258,8 +258,9 @@ impl<G: Signer + EcSign + 'static> Worker<G> {
return Err(e.into()); return Err(e.into());
} }
if let Err(e) = stream_r.read_pktlines(&mut daemon_w, &mut buffer) { if let Err(e) = stream_r.read_pktlines(&mut daemon_w, &mut buffer) {
log::debug!(target: "worker", "Remote returned error: {e}"); log::error!(target: "worker", "Remote returned error for {}: {e}", fetch.repo);
break;
return Err(e.into());
} }
} }
log::debug!(target: "worker", "Upload of {} to {} exited successfully", fetch.repo, fetch.remote); log::debug!(target: "worker", "Upload of {} to {} exited successfully", fetch.repo, fetch.remote);