This commit is contained in:
Aiden McClelland
2025-12-17 12:17:22 -07:00
parent 9567bcec1b
commit e33ab39b85
6 changed files with 48 additions and 25 deletions

View File

@@ -389,12 +389,19 @@ impl RpcContext {
.as_entries()?
.into_iter()
.map(|(_, pde)| {
Ok(pde.as_tasks().as_entries()?.into_iter().map(|(_, r)| {
Ok::<_, Error>((
r.as_task().as_package_id().de()?,
r.as_task().as_action_id().de()?,
))
}))
Ok(pde
.as_tasks()
.as_entries()?
.into_iter()
.map(|(_, r)| {
let t = r.as_task();
Ok::<_, Error>(if t.as_input().transpose_ref().is_some() {
Some((t.as_package_id().de()?, t.as_action_id().de()?))
} else {
None
})
})
.filter_map_ok(|a| a))
})
.flatten_ok()
.map(|a| a.and_then(|a| a))

View File

@@ -298,7 +298,8 @@ impl Service {
return Ok(None);
};
let s9pk_path = entry.as_s9pk().de()?;
match entry.as_state_info().as_match() {
let state = entry.as_state_info().as_match();
match state {
PackageStateMatchModelRef::Installing(_) => {
if disposition == LoadDisposition::Retry {
if let Ok(s9pk) = S9pk::open(&s9pk_path, Some(id)).await.map_err(|e| {
@@ -432,11 +433,10 @@ impl Service {
}
}
if disposition == LoadDisposition::Retry {
ctx.db
.mutate(|v| v.as_public_mut().as_package_data_mut().remove(id))
.await
.result?;
if disposition == LoadDisposition::Retry
|| matches!(state, PackageStateMatchModelRef::Restoring(_))
{
cleanup(ctx, id, false).await?;
}
Ok(None)
@@ -493,11 +493,16 @@ impl Service {
.as_entries()?
.into_iter()
.map(|(_, r)| {
Ok::<_, Error>(if r.as_task().as_package_id().de()? == manifest.id {
Some(r.as_task().as_action_id().de()?)
} else {
None
})
let t = r.as_task();
Ok::<_, Error>(
if t.as_package_id().de()? == manifest.id
&& t.as_input().transpose_ref().is_some()
{
Some(t.as_action_id().de()?)
} else {
None
},
)
})
.filter_map_ok(|a| a))
})
@@ -515,7 +520,9 @@ impl Service {
{
if let Some(input) = service
.get_action_input(procedure_id.clone(), action_id.clone())
.await?
.await
.log_err()
.flatten()
.and_then(|i| i.value)
{
action_input.insert(action_id, input);
@@ -589,7 +596,7 @@ impl Service {
.send(
Guid::new(),
transition::backup::Backup {
path: guard.path().to_owned(),
path: guard.path().join("data"),
},
)
.await??;

View File

@@ -35,6 +35,12 @@ impl Model<StatusInfo> {
pub fn started(&mut self) -> Result<(), Error> {
self.as_started_mut()
.map_mutate(|s| Ok(Some(s.unwrap_or_else(|| Utc::now()))))?;
self.as_desired_mut().map_mutate(|s| {
Ok(match s {
DesiredStatus::Restarting => DesiredStatus::Running,
a => a,
})
})?;
Ok(())
}
pub fn stop(&mut self) -> Result<(), Error> {