コンテンツにスキップ

v0.9.2

0.9.0 の EC2 永続 Workspace を実デプロイとして動かして分かった問題の追補です。 事前に焼いた golden スナップショットから作った home はまったく起動できず、golden を 手で焼く手順には終わらない工程がありました。

  • Workspace イメージが変わったら、Control Plane が golden を焼き直します。 焼き直しはリリースごとの手作業で、忘れたことに気づく手掛かりはログの警告だけでした。 Control Plane は予約した種を起動して home を候補として取得し、その候補から 2 つ目の 予約メンバーを起動して、そちらが立ち上がったときだけ候補を公開します。起動しない候補は 理由付きで却下として残します。プールの空きが 2 つ未満のときは始めず、同じイメージで 候補が 2 回失敗したら諦めます。AF_ECS_EC2_GOLDEN_AUTOBAKE=0 で無効にできます。
  • golden スナップショットから作った home がまったく起動せず、タスクが永久に再起動して いました(理由を述べるログもありません)。 golden の home には種のリンクが既に入って いる一方、新規ユーザーの keep ボリュームは空なので、entrypoint は ~/.config を存在 しない先へ向けたまま自滅していました。空の home では踏みようがないため、「golden から 新規ユーザーを作り始めるデプロイ」でだけ現れます。
  • home ボリュームができる前に Start が失敗した Workspace が、毎分・永久に再試行されて いました。 期限をボリュームの作成時刻から測っていたため、ボリュームを持たない行には 期限を測る時計がありませんでした。Workspace 自身の作成時刻を使うようにしました。
  • golden の手焼きが、手順どおりには完了できませんでした。 手順は「スイーパーが スロットを解放するのを待つ」と書いていましたが、Stop は home を付けたままにするので、 bake-golden.sh はいくら待ってもスロットを拒否し続けました。インスタンスが稼働中の ときだけ拒否するようにしました。周辺の説明も実測に合わせて訂正しました——待ち時間は 実際に使用したブロック量に比例すること、種はサインインできるメンバーであること、種に リポジトリを clone してはならないこと。

ecs-ec2 以外のデプロイでは作業はありません。ecs-ec2 では本リリースから自動焼き直しが 有効なので、イメージタグを動かした後、Control Plane がプールのスロットを 2 つ使って golden を焼き、起動することを確かめます。それが終わるまで新規ユーザーの home は空から 作られます(golden が無かった頃と同じ、遅い初回起動です)。前のイメージで焼かれた golden は使わずに拒否するためです。