fix: 接入备份维护钩子并补齐 SQLX 缓存
Sync source to CNB / Sync Git ref (push) Has been cancelled

- ProcessManager 新增 has_instance_process(备份启动守卫依赖)

- 删除/启动/编辑/迁移目录时接入备份维护钩子(lock_instance_maintenance + begin_instance_deletion + delete_instance_backups),remove_instance 拆出 remove_instance_files_and_state

- run 启动前检查活跃备份操作并加维护锁

- 目录迁移时搬移默认备份仓库并入队清理

- 更新 settings SELECT 的 SQLX 离线缓存(补 ui_font/backup_repository_path/mono_font)

- create_recorded_symlink 非 Windows 未用参数加 cfg_attr 豁免
This commit is contained in:
AxTps committed 2026-10-03 10:59:16 +08:00
1 parent 4674f31dd3
commit 996044bdc2
7 files changed
+95 -4

No files matched your search

@@ -3632,6 +3632,7 @@ async fn verify_object(
Ok(())
}
#[cfg_attr(not(windows), allow(unused_variables))]
async fn create_recorded_symlink(
target: PathBuf,
link: PathBuf,
@@ -103,6 +103,7 @@ pub async fn edit(
patch: EditInstance,
) -> crate::Result<InstanceMetadata> {
let state = State::get().await?;
super::ensure_backup_eligible_edit(instance_id, &patch).await?;
crate::state::edit_instance(instance_id, patch, &state.pool).await?;
let instance = crate::state::get_instance(instance_id, &state.pool)
+9
View File
@@ -75,6 +75,15 @@ async fn run_with_extra_launch_args_inner(
extra_launch_args: Option<Vec<String>>,
gc_intent: Option<GcLaunchIntent>,
) -> crate::Result<(ProcessMetadata, Option<GcLaunchReport>)> {
if crate::api::instance::has_active_instance_operation(instance_id) {
return Err(crate::ErrorKind::InputError(
"Wait for the active backup operation to finish before launching this instance"
.to_string(),
)
.into());
}
let _maintenance_guard =
crate::api::instance::lock_instance_maintenance(instance_id).await;
let _hosted_guard =
crate::pack::hosted::prepare_launch(instance_id, offline_mode).await?;
let state = State::get().await?;