Skip to content

fix(update): 起動できずに戻した配布物を覚え、取りに行かない - #79

Merged
limit7412 merged 1 commit into
masterfrom
claude/remaining-issues-priority-m7daxq
Aug 31, 2026
Merged

fix(update): 起動できずに戻した配布物を覚え、取りに行かない#79
limit7412 merged 1 commit into
masterfrom
claude/remaining-issues-priority-m7daxq

Conversation

@limit7412

Copy link
Copy Markdown
Owner

issue #76 の対応。案 A(起動できなかったタグを置き場所へ記録する)を採った。

何が起きていたか

#53 で、置き換えた一式が起動できなかった場合に退避へ戻して取得を捨てるようにした。ただし捨てたことを覚えていない。旧版で開き直した App は次の確認で同じ配布物をまた見つけ、また取得する。

適用は次の起動か「再起動して適用」を要するため放っておいて回り続けはしないが、起動のたびに数十〜百数十 MB を空振りする。壊れた配布物が公開されたまま新しい版が出ないと、この状態が続く。

変更内容

Core

UpdateStageRecordStartFailure / IsKnownStartFailure を足した。

覚えるのはタグと digest の組である。同じタグへ配布物を上げ直す運用があるので(release.yml の --clobber)、直した一式が同じタグで公開された場合は digest が変わり、そちらは記録に当たらず取りに行ける。放っておいても直った版で回復するので、記録を消す経路は置いていない。

記録は取得の記録 (staged.json) とは別のファイルに置く。取得を捨てても残す必要があり、Discard はこれに触らない。既にある「展開の失敗の回数」(extract-failures) と同じ形である。

読めない場合は「覚えていない」として扱う。読めないことを理由に更新を止めるほうが損が大きい。空振りは 1 回で済むが、止めると新しい版が入らなくなる。

Cli

RollBackFailedStart が、取得を捨てるにタグと digest を控え、戻しと破棄が通った後に覚える。捨てた後では読めない。

戻せなかった場合(終了コード 7)と、戻す条件がそろわなかった場合(終了コード 1)では覚えない。前者は取得を復旧の材料として残すためで、後者はそもそも起動できていたと判断した場合である。

App

UpdateManager が、覚えている組に当たる候補を取りに行かない。

画面にも出す。「新しい版が出ています」とだけ出したままだと、いつまでも取得済みにならない理由が分からない。設定カードの「本体の更新」欄と、自動確認のバルーンの文言を分けた。

検証

  • テストを追加
    • タグと digest の組で覚え、digest が変われば当たらないこと(上げ直しで回復する筋)
    • digest を持たない候補は止めないこと
    • 取得を捨てても記録が残ること(戻す側は「捨てる」と「覚える」を続けて行うので、捨てるほうが覚えたものまで消すと意味が無くなる)
  • ヘルパの経路は Linux では動かせないため、テスト版プレリリースでの実機確認に委ねる。確かめたいのは、起動できない一式で戻った後、次の確認でその版を取りに行かず、画面にその旨が出ること

Refs #76, #53


Generated by Claude Code

置き換えた一式が起動できなかった場合、退避へ戻して取得を捨てる (issue #53)。
ただし捨てたことを覚えていないため、旧版で開き直した App は次の確認で同じ
配布物をまた見つけ、また取得する。適用は次の起動か「再起動して適用」を要する
ので放っておいて回り続けはしないが、起動のたびに数十〜百数十 MB を空振りする。

戻すときに、その配布物を置き場所へ覚えるようにした。取得の側はこれに当たる
候補を取りに行かない。

覚えるのはタグと digest の組である。同じタグへ配布物を上げ直す運用があるので
(release.yml の --clobber)、直した一式が同じタグで公開された場合は digest が
変わり、そちらは記録に当たらず取りに行ける。放っておいても直った版で回復する。

記録は取得の記録とは別のファイルに置く。取得を捨てても残す必要があり、
Discard はこれに触らない。読めない場合は「覚えていない」として扱う。読めない
ことを理由に更新を止めるほうが損が大きい。空振りは 1 回で済むが、止めると
新しい版が入らなくなる。

画面にも出す。「新しい版が出ています」とだけ出したままだと、いつまでも
取得済みにならない理由が分からない。

Refs #76
@limit7412
limit7412 marked this pull request as ready for review August 31, 2026 07:47
@limit7412
limit7412 merged commit 9701f0a into master Aug 31, 2026
1 check passed
@limit7412
limit7412 deleted the claude/remaining-issues-priority-m7daxq branch August 31, 2026 07:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants