バージョン情報 | 核心問題 | 修正内容 |
Redisson < 3.21.0 | Redisクラスターモードでは、バックエンドノードに変更が発生した場合(フェイルオーバー、スケールアウト・スケールインによるノードの追加・削除など)、Redissonクライアントが古いノードの接続を正しく解放しないため、接続プールで一定の確率で接続リークが発生します。 | |
Redisson < 3.17.5 | Redisクラスタでレプリカノードの変更(HA切り替え、スケールアウト・スケールイン、構成変更)が発生すると、レプリカのリフレッシュが正しく行われないため、Redissonのロック取得に異常が発生します。 | |
Redisson < 3.18.1 | ネットワーク異常やマシンダウンにより接続が切断された場合、業務システムが分散ロックを使用していると、ロックを取得したすべての接続が継続的に占有されて解放されず、クライアントが java.util.concurrent.CancellationExceptionエラーを継続的にスローし、最終的に分散ロック機能全体が完全に利用できなくなります。 | |
Redisson > 3.44.0 | RedissonをスタンドアロンモードでTencent Cloud Redisに接続し、tryLockメソッドを呼び出すと、新たに追加されたロック更新機構がスレッド数に応じてLuaスクリプトを送信するため、スロットをまたぐ操作エラーが発生します。 説明: Redissonクラスタモードはこの問題を解決できますが、接続確立段階においてクラスタ検出メカニズムとVIPアーキテクチャの競合によって異常が発生するかどうか、インスタンスの構成変更(クラスタ拡張など)時にVIP切り替えがクライアントの安定性に影響するかどうかを検証する必要があります。 | スタンドアロンモードでこの問題を解決するには、 lockWatchdogBatchSizeパラメータを明示的に1に設定する必要があります。この設定により、Redissonのロック一括更新機構がシングルスレッドで直列的にLuaスクリプトを実行するよう強制され、各更新操作が単一のKeyのみを処理するため、クロススロットエラーを回避できます。
|
フィードバック