Releases: chrisvest/stormpot
Stormpot 3.1
Stormpot 3.1 is fully backwards compatible with 3.0, but adds a number of new features:
- It is now possible to create pools with a size of zero, and to change the target size of a pool to be zero. Such pools will behave as if they are perpetually depleted, that is, as if all of their objects have been claimed. These empty pools can still have their target size increased at any later time.
- A new “inline” pool mode has been added. In this mode there is no background thread, and thus none of the background services are available. Object allocation and deallocation instead occur inline with the claim calls, hence the name. This means that these pools are lighter on CPU and memory resources.
Stormpot 3.0.1
This is a patch-release that fixes a bug where explicitly expired objects would not get to be deallocated by the configured allocator, when the pool was shut down. #135
Stormpot 2.4.2
This is a patch-release that fixes a bug where explicitly expired objects would not get to be deallocated by the configured allocator, when the BlazePool
was shut down. #135
Stormpot 3.0
Major release.
- Java 11 is now the minimum required version.
- Updated, modern, and ergonomic APIs.
- Pools are now created with
Pool.from(allocator).build()
. - There is only a single pool implementation now.
- New
Pool.of(...)
API to create a pool with pre-allocated objects, and no background thread. - Improved handling of prolonged allocation failures.
- Lower idle CPU usage.
Stormpot 2.4.1
This is a bug-fix release, that fixes a couple of cases where the background thread could get stuck at 100% CPU usage when objects are explicitly expired, or the pool is shrunk while there are poisoned slots.
Stormpot 2.4
Performance release.
- Improved performance of
Slot.release
in theBlazePool
implementation, by making it do alazySet
of the slot status, instead of acompareAndSet
. - Claimed objects can now be explicitly expired with the
Slot.expire
method, if they are discovered to have expired after they were claimed. - New
CompoundExpiration
that can combine two expiration policies.
Stormpot 2.3
Feature release:
- A new ManagedPool interface exposes a pool as an MXBean for management with JMX.
- It is now possible to enable background expiration checking, which helps reduce tail latency and prevents reallocation storms after prolonged periods of inactivity.
- It is now possible to supply a custom
ThreadFactory
that the pool can use for creating its background allocation thread. - A precise object leak detection mechanism has been added, and is enabled by default. It can detect when a program leaks claimed objects by losing the references to them.
- All the documentation is now formatted with AsciiDoctor.
- Stormpot now builds on Java 8.
- The pool no longer shuts down when an
InterruptedException
is thrown from the allocatorsallocate()
orreallocate()
methods.
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.
Stormpot 2.1
New and very fast BlazePool implementation.