Skip to content

Releases: chrisvest/stormpot

Stormpot 4.1

28 Dec 01:34
stormpot-4.1
4034e08
Compare
Choose a tag to compare

This is a bug-fix release, that fixes a data-race bug that can produce a NullPointerException (and in turn potentially stop the background allocator thread) when subscribing to a Completion races with it completing.

What's Changed

Full Changelog: stormpot-4.0...stormpot-4.1

Stormpot 4.0

12 Oct 02:52
stormpot-4.0
4df3871
Compare
Choose a tag to compare

This is a major release that adds many features and upgrades the minimum Java version requirement to Java 21.

The most notable features are adding support for virtual threads.
The background allocator thread is now a virtual thread by default.
There is also a new virtual-thread-safe PoolTap implementation available from Pool.getVirtualThreadSafeTap().
The claim methods on the Pool interface still rely on ThreadLocal variables, however, and should be avoided if you plan to access the pool from virtual threads.

The leak detector is now off by default.
The implementation of the leak detector has also changed to make it dramatically more scalable with large pool sizes.

Speaking of large pools, it is now possible to create pools with more than 2 billion objects.
It's still recommended to keep pools as small as possible, but if you really need a very large number of objects, it's now possible.

Threaded and inline pools can now change their Allocator implementation after they've been created.
This is useful if you want to change how objects of the same type are created.
The process of switching allocators is asynchronous and eventual, but more controlled than building this functionality into your Allocator implementation itself.
Direct pools cannot switch allocators, because all their objects are given up front when the pool is created, and their objects are assumed to not need any significant lifecycle management from the pool.

This is a major release that breaks API/ABI compatibility, but the changes are fairly small, so migrating an existing code base should not be too much trouble.
See api-changes.json for the complete list of compatibility changes.

What's Changed

Full Changelog: stormpot-3.2...stormpot-4.0

Stormpot 3.2

16 Jun 04:26
stormpot-3.2
984000d
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: stormpot-3.1...stormpot-3.2

Stormpot 3.1

17 Jun 21:02
Compare
Choose a tag to compare

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

15 May 12:00
stormpot-3.0.1
Compare
Choose a tag to compare

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

15 May 12:00
Compare
Choose a tag to compare

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

10 Nov 09:49
Compare
Choose a tag to compare

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

01 Jun 20:56
Compare
Choose a tag to compare

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

06 Sep 13:04
Compare
Choose a tag to compare

Performance release.

  • Improved performance of Slot.release in the BlazePool implementation, by making it do a lazySet of the slot status, instead of a compareAndSet.
  • 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

22 Nov 15:52
Compare
Choose a tag to compare

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 allocators allocate() or reallocate() methods.