Skip to content

Commit f1d5302

Browse files
committed
Try to reinstall after a failed upgrade
* After failed upgrade the UI would try to start the old backup server, which likely doesn't work * When restoring a backup, also restore the old version file
1 parent 23322e5 commit f1d5302

File tree

2 files changed

+13
-8
lines changed

2 files changed

+13
-8
lines changed

ai_diffusion/server.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,10 @@ def check_install(self):
144144
self.state = ServerState.missing_resources
145145
elif update_required:
146146
self.state = ServerState.update_required
147+
elif self.version == "incomplete":
148+
# At this point everything seems to be there, but the version file indicates
149+
# that installation did not complete successfully. Best bet is to try and re-install.
150+
self.state = ServerState.update_required
147151
else:
148152
self.state = ServerState.stopped
149153
self.missing_resources += missing_sd15 + missing_sdxl + missing_flux
@@ -402,7 +406,8 @@ def info(message: str):
402406
log.info(message)
403407
callback(InstallationProgress("Upgrading", message=message))
404408

405-
info(f"Starting upgrade from {self.version} to {resources.version}")
409+
old_version = self.version
410+
info(f"Starting upgrade from {old_version} to {resources.version}")
406411
comfy_dir = self.comfy_dir
407412
upgrade_dir = self.path / f"upgrade-{resources.version}"
408413
upgrade_comfy_dir = upgrade_dir / "ComfyUI"
@@ -430,6 +435,7 @@ def info(message: str):
430435
log.warning(f"Error during upgrade: {str(e)} - Restoring {upgrade_comfy_dir}")
431436
safe_remove_dir(comfy_dir)
432437
shutil.move(upgrade_comfy_dir, comfy_dir)
438+
self._version_file.write_text(f"{old_version} {self.backend.name}")
433439
raise e
434440

435441
try:

ai_diffusion/ui/server.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -275,13 +275,11 @@ def _package_name(self, package: str | ModelResource | CustomNode):
275275

276276

277277
class ServerWidget(QWidget):
278-
_server: Server
279-
_error = ""
280-
_packages: dict[str, PackageGroupWidget]
281-
282278
def __init__(self, srv: Server, parent=None):
283279
super().__init__(parent)
284280
self._server = srv
281+
self._error = ""
282+
self._packages: dict[str, PackageGroupWidget]
285283

286284
layout = QVBoxLayout(self)
287285

@@ -755,9 +753,10 @@ def update_ui(self):
755753
self._launch_button.setEnabled(False)
756754
self._manage_button.setEnabled(False)
757755
elif state is ServerState.update_required:
758-
self._status_label.setText(
759-
_("Upgrade required") + f": v{self._server.version} -> v{resources.version}"
760-
)
756+
text = _("Upgrade required") + f": v{self._server.version} -> v{resources.version}"
757+
if self._server.version == "incomplete":
758+
text = _("Previous installation is incomplete")
759+
self._status_label.setText(text)
761760
self._status_label.setStyleSheet(f"color:{yellow};font-weight:bold")
762761
self._launch_button.setText(_("Upgrade"))
763762
elif state is ServerState.stopped:

0 commit comments

Comments
 (0)