v1.3.3
兼容 DPI 版本:v1.0.7.0
修复自动升级切换失效(supervisor.py / cli.py)
- 根因:
_find_current_binary()用os.path.realpath()把versions/current符号链接解析成具体版本目录(如/opt/socket/versions/1.3.0),写入 systemd unit 的ExecStart成为硬编码版本路径。switch_to()切换符号链接后systemctl restart仍按 unit 里写死的旧路径启动,导致自动升级"切换成功、重启后版本不变"的死循环。 - 修复 1:
_find_current_binary()不再realpath解析,直接返回versions/current/socket_server,使 unit 的ExecStart指向稳定的current链接,切换链接后重启即生效。 - 修复 2(自愈):新增
ensure_unit_correct(),在cmd_serve启动时检查 unit 文件的ExecStart是否指向current链接,若不是(历史版本写死的路径)则自动重写 +daemon-reload。已部署靶机升级到本版本后,下次重启即自愈,无需手动enable。 - 重构:抽取
_write_unit()供service_enable与ensure_unit_correct复用。