最近は Windows 環境で開発しているんだけど、WSL2 で想像のななめ上のハマり方をして割と困っていた。
おそらくの原因
結論から言うと、WSL2 の環境を立ちあげたままノート PC を閉じてスリープさせた事によって時刻がずれたのが原因っぽい。
発覚
Go + Docker (MySQL) + Nuxt3 という構成で開発をしていて、Firebase を使った認証をしているんだけど、朝昨日の続きを対応しようと端末を触ったらなぜか Chrome でログインしていた状態が解除されていた。
セッション自体は Chrome に残っていたためログアウトして、再度ログインしたら終わると思いきや、ログインすると新規アカウント登録の画面に移動させられる。
なんか面倒そうな事おこったなーというのが感想。
調査
あれ、DB ふっとんだ?
そんな事はなく、DB には昨日の状態が残っていてなぜかログインだけ上手くいかない模様。
ねる前に触った部分は問題なかったと思ったけど、一応念のために develop ブランチに切り替えて動作が問題なかった時の状態で動作確認。
やっぱり新規登録にいってしまう。
知らないうちに DB 内の不整合が発生して戻れなくなったとか?と考えて DB を初期化して再度ログインを試すも、完全に動作しない。
ブラウザのキャッシュやセッション、IndexDB も全部削除して試すとエラーで時刻がおかしいと言われる。
ホスト (Windows 自体) の時刻も他の時計と一致するため、怪しいのは WSL2 の時刻なので date コマンドで現在時刻を確認する。
完全に時刻がおかしくて草。
修正
問題は特定出来たのであとは直すだけ。
とはいっても対してやる事はなく、wsl を再起動しただけ。ターミナルを閉じただけだと wsl は落ちない筈 (知らべてないので知らんけど) なので powershell から wsl.exe --shutdown を実行。
その後起動しなおしてアプリケーション立ちあげて確認。
うん、直った。そして DB 消さんかったら良かった。。。