Skip to content

Commit

Permalink
Merge pull request #246 from serokell/rvem/#245-return-non-zero-exit-…
Browse files Browse the repository at this point in the history
…code-for-confirmation-timeout

[#245] Return non-zero exit code in case of confirmation timeout
  • Loading branch information
rvem authored Dec 11, 2023
2 parents 660180b + b076e35 commit 514fa3b
Showing 1 changed file with 9 additions and 23 deletions.
32 changes: 9 additions & 23 deletions src/bin/activate.rs
Original file line number Diff line number Diff line change
Expand Up @@ -229,6 +229,8 @@ pub enum ActivationConfirmationError {
CreateConfirmFile(std::io::Error),
#[error("Could not watch for activation sentinel: {0}")]
Watcher(#[from] notify::Error),
#[error("Error waiting for confirmation event: {0}")]
WaitingError(#[from] DangerZoneError),
}

#[derive(Error, Debug)]
Expand Down Expand Up @@ -256,7 +258,6 @@ async fn danger_zone(
}

pub async fn activation_confirmation(
profile_path: String,
temp_path: PathBuf,
confirm_timeout: u16,
closure: String,
Expand Down Expand Up @@ -302,18 +303,9 @@ pub async fn activation_confirmation(

watcher.watch(&lock_path, RecursiveMode::NonRecursive)?;

if let Err(err) = danger_zone(done, confirm_timeout).await {
error!("Error waiting for confirmation event: {}", err);

if let Err(err) = deactivate(&profile_path).await {
error!(
"Error de-activating due to another error waiting for confirmation, oh no...: {}",
err
);
}
}

Ok(())
danger_zone(done, confirm_timeout)
.await
.map_err(|err| ActivationConfirmationError::WaitingError(err))
}

#[derive(Error, Debug)]
Expand Down Expand Up @@ -463,16 +455,10 @@ pub async fn activate(

if magic_rollback && !boot {
info!("Magic rollback is enabled, setting up confirmation hook...");

match activation_confirmation(profile_path.clone(), temp_path, confirm_timeout, closure)
.await
{
Ok(()) => {}
Err(err) => {
deactivate(&profile_path).await?;
return Err(ActivateError::ActivationConfirmation(err));
}
};
if let Err(err) = activation_confirmation(temp_path, confirm_timeout, closure).await {
deactivate(&profile_path).await?;
return Err(ActivateError::ActivationConfirmation(err));
}
}
}

Expand Down

0 comments on commit 514fa3b

Please sign in to comment.