4.6. エクスパレーションのトラブルシューティング
エクスパレーションが機能していないように見える場合、エントリーがエクスパレーション用にマークされていても削除されていないことが原因である可能性があります。
put()
のような複数キャッシュの操作では、ライフスパン値がパラメーターとして渡されます。この値は間隔を定義し、この間隔の後にエントリーが期限切れになります。エビクションが設定されていない状態でライフスパンが期限切れになると、Red Hat JBoss Data Grid がエントリーを削除しなかったように見えます。たとえば、number of entries などの JMX の統計が表示される場合、無効の数字が表示されたり、JBoss Data Grid に関連する永続ストアにこのエントリーが依然として含まれていることがあります。この場合、JBoss Data Grid は背後でこのエントリーを期限切れエントリーとしてマーク付けしても、削除ていません。このようなエントリーの削除は、以下のように行われます。
- エントリーがディスクへパッシベートまたはオーバフローされ、期限切れであることが判明した場合。
- エクスパレーションメンテナンススレッドが見つけたエントリーが期限切れであることが判明した場合。
期限切れエントリーに対して
get()
または containsKey()
の使用を試みると、JBoss Data Grid が null 値を返します。期限切れのエントリーはエクスパレーションスレッドで後に削除されます。