Google Guava Cache のドキュメントには次のように記載されています。
リフレッシュはエビクションとまったく同じではありません。LoadingCache.refresh(K) で指定されているように、キーを更新すると、おそらく非同期で、キーの新しい値が読み込まれます。キーが更新されている間、古い値 (存在する場合) は引き続き返されます。これは、値が新たに読み込まれるまで取得を強制的に待機させるエビクションとは対照的です。
リフレッシュ中に例外がスローされた場合、古い値が保持され、例外がログに記録されて飲み込まれます。
このログと例外の飲み込みは、私の使用例では非常に悪いものです。これは、リフレッシュが例外をスローした場合、キャッシュのユーザーがキャッシュ内の古いデータを見つけ続けることを意味するためです。
リフレッシュで例外がスローされた場合、キャッシュが null を返すか、load メソッドの呼び出しを開始することを確認するにはどうすればよいですか?