Stormpot 2.2
Lots of incremental improvements:
- False sharing has been reduced in the BlazePool implementation, improving performance.
- Numerous adjustments to the BlazePool implementation to improve inlining and optimisation behaviour, improving performance.
- Fix a bug in BlazePool where the exception in a poisoned slot could bubble out through
claim()
calls more than once. - Fix a bug where the
Allocator
could eat the interrupt that was meant to signal to the allocation thread that it should begin shutting down. This signal is now no longer missed. - Poisoned slots are now proactively reallocated, if possible. This way, a temporary outage that then resolves itself, won't leave the pool full of poisoned slots that each have to bubble up through a
claim()
call before they can be reallocated. Expiration.hasExpired()
is now allowed to throw exceptions.- A new
Reallocator
API has been added. It can potentially reduce old-gen garbage accretion, in cases where Poolable instances can be reused across deallocate/allocate calls. - A new
TimeSpreadExpiration
has been added and made the default Expiration. It prevents all slots in the pool from expiring all at once. - Tons of fuzzing and stress testing have been performed. No released bugs found, though.