Affects Version/s: 2.0
Fix Version/s: 2.0
As far as I can tell, calling close during an evict() run can cause problems, because close() sets the eviction[Key]Iterator fields to null.
I suspect close() and evict() should be mutually exclusive.
Maybe close does not need to nullify the eviction[Key]Iterator fields, but there's probably other mutually incompatible behaviour.
Or maybe the fields should be nulled in startEvictor.
Also, the fields eviction[Key]Iterator aren't volatile and aren't always accessed under the same lock so might not be safely published.
That would be solved by moving the nulling to startEvictor.