【Snowflake】 普段動くJDBCでのアクセスができなくなったときに考えること
hama-matcha
はじめに
SnowflakeにJDBCでアクセスをしていると普段は成功しているのに
net.snowflake.client.jdbc.SnowflakeReauthenticationRequest:
Authentication token has expired. The user must authenticate again.
とエラーがでて落ちてしまう時があります。
このときに考えるべきことを備忘録として書き残します。
原因
Snowflake側の問題とJDBC側の問題で切り分けます。
Snowflake側の問題の場合
その時刻の接続のみSnowflakeとのセッションがうまく取れてなかった、、という場合があります。
エラーがおきた時間をログとして残しておき、
のちにSev-4にてSnowflakeのサポートに
「エラーがおきていた時間にSnowflakeへ接続しづらくなるような問題が発生していましたか。」
と聞いてくのが良い。
(※タイムゾーンも必ず一緒に明記しよう)
参考:https://dev.classmethod.jp/articles/snowday-report-ceight/
JDBC側の場合
下記を見て地道に正常時の状況と異常時の状況を見比べていくしかない
(大体Sessionがつなぎに行けないか、途中で強制的に中断されたかが考えられる)
- JDBCのバージョンが正常時と異常時で変わってないか
- バージョン違いによるエラーも有り得る
- Snowflake側で登録しているユーザの認証情報が切れていないか
- RSAキーペアのローテションをした後に動かないとか
- SnowSQLや他のCLIツールは接続できるか
- 実行途中にJDBC用のシステムユーザにおけるロールの変更がされたりしていないか
- ネットワークルールやネットワークポリシーの変更が入ったりしていないか
さいごに
普段は動いてたのに唐突にうごかない、、
自分は何もしてないけどなぁ〜と思う時があると思いますが
どこかできっと何らかの変更が入ったりしています。
JDBC側に関しては私が確認している部分を上げていますが、
考慮もれがあるよ〜っという方は是非コメントください。
以上hamaでした〜