fix migrations not running in the to block

This commit is contained in:
Aiden McClelland
2022-04-01 20:11:51 -06:00
committed by Aiden McClelland
parent 6ac87a51e4
commit f523a68e72

View File

@@ -9,8 +9,8 @@ use std::time::{Duration, Instant};
use color_eyre::eyre::eyre; use color_eyre::eyre::eyre;
use emver::VersionRange; use emver::VersionRange;
use futures::future::{self, BoxFuture}; use futures::future::BoxFuture;
use futures::{stream, FutureExt, StreamExt, TryStreamExt}; use futures::{FutureExt, StreamExt, TryStreamExt};
use http::header::CONTENT_LENGTH; use http::header::CONTENT_LENGTH;
use http::{Request, Response, StatusCode}; use http::{Request, Response, StatusCode};
use hyper::Body; use hyper::Body;
@@ -365,13 +365,13 @@ pub async fn sideload(
match pde.take() { match pde.take() {
Some(PackageDataEntry::Installed { Some(PackageDataEntry::Installed {
installed, installed,
manifest,
static_files, static_files,
..
}) => { }) => {
*pde = Some(PackageDataEntry::Updating { *pde = Some(PackageDataEntry::Updating {
install_progress: progress.clone(), install_progress: progress.clone(),
installed, installed,
manifest, manifest: manifest.clone(),
static_files, static_files,
}) })
} }
@@ -1197,34 +1197,33 @@ pub async fn install_s9pk<R: AsyncRead + AsyncSeek + Unpin>(
dep_errs.save(&mut tx).await?; dep_errs.save(&mut tx).await?;
if let PackageDataEntry::Updating { if let PackageDataEntry::Updating {
installed: prev, installed: prev, ..
manifest: prev_manifest,
..
} = prev } = prev
{ {
let prev_is_configured = prev.status.configured; let prev_is_configured = prev.status.configured;
let prev_migration = prev_manifest let prev_migration = prev
.manifest
.migrations .migrations
.to( .to(
ctx, ctx,
version, version,
pkg_id, pkg_id,
&prev_manifest.version, &prev.manifest.version,
&prev_manifest.volumes, &prev.manifest.volumes,
) )
.map(futures::future::Either::Left); .map(futures::future::Either::Left);
let migration = manifest let migration = manifest
.migrations .migrations
.from( .from(
ctx, ctx,
&prev_manifest.version, &prev.manifest.version,
pkg_id, pkg_id,
version, version,
&manifest.volumes, &manifest.volumes,
) )
.map(futures::future::Either::Right); .map(futures::future::Either::Right);
let viable_migration = if prev_manifest.version > manifest.version { let viable_migration = if prev.manifest.version > manifest.version {
prev_migration.or(migration) prev_migration.or(migration)
} else { } else {
migration.or(prev_migration) migration.or(prev_migration)