Harden self-update recovery (T-617)
This commit is contained in:
@@ -130,7 +130,7 @@ func (service *Service) Update(ctx context.Context, request Request) error {
|
||||
return err
|
||||
}
|
||||
if err := renameDirectory(layout.target, layout.backup, layout, service.syncer, "back up current app"); err != nil {
|
||||
return service.failBeforeActivation(err)
|
||||
return service.failBeforeActivation(layout, err)
|
||||
}
|
||||
if err := writeTransaction(layout, phaseTargetBackedUp, service.syncer); err != nil {
|
||||
return service.rollback(layout, err)
|
||||
@@ -172,8 +172,12 @@ func (service *Service) Update(ctx context.Context, request Request) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (service *Service) failBeforeActivation(cause error) error {
|
||||
return fmt.Errorf("prepare self-update: %w", cause)
|
||||
func (service *Service) failBeforeActivation(layout updateLayout, cause error) error {
|
||||
prepareErr := fmt.Errorf("prepare self-update: %w", cause)
|
||||
if recoveryErr := recoverLayout(layout, service.syncer); recoveryErr != nil {
|
||||
return errors.Join(prepareErr, recoveryErr)
|
||||
}
|
||||
return prepareErr
|
||||
}
|
||||
|
||||
func (service *Service) rollback(layout updateLayout, cause error) error {
|
||||
|
||||
Reference in New Issue
Block a user