Threadly 6.6 was released today. This release provides improvements to FutureUtils and StatisticUtils. These changes are fairly minor as development has recently been more stable and slower. I still have plans for more significant changes (as described in GitHub issues), but recently I have had less time to work on this project.
You can read more about this release in the release notes.
ReschedulingOperation got an internal performance improvement to avoid re-queuing through the executor if it was signaled to run while it was currently executing. Instead looping on the thread it already has (for a limited number of loops). This provides a notable performance improvement by avoiding to re-queue through the executor, but it can also prevent a stack overflow when SameThreadSubmitterExecutor is used.
ConfigurableThreadFactory now additionally has the ability to configure a Consumer to accept threads as they are created. This can be useful to provide additional custom logic for each thread. Notably this can be useful for tracking threads for debugging purposes, like when ControlledThreadProfiler is used.
You can read more about this release in the release notes.
Threadly 6.4 was released today. This mostly minor release includes a bug fix to the recently added OrderedExecutorLimiter for when returned ListenableFuture’s are canceled. This also includes an improvement to the Profiler to be able to identify idle ForkJoinPool threads. This reduces the output of the profiler for these threads as well as slightly optimizes the memory overhead for tracking these traces.
The above is also summarized in the release notes. There is no new javadocs published for this release as no API changes occurred.
Version 0.15 of auroraArc was released today. This improves the replica weight configuration so that now weights for currently un-known servers can be pre-configured. Hopefully making the feature easier to use by being less precise in when configuration is applied.
In addition version 0.14 was not deployed to maven central correctly. Making the features in 0.14 finally available.
The release artifacts can be pulled from maven central or from our tag: release-0.15.
Threadly 6.3 is another small incremental release that extends the functionality from the 6.2 release. This extends the functoinality in OrderedExecutorLimiter to be able to adjust the limits after construction.
Check the release notes to hear about all of the changes included in this release
The new 0.14 version of auroraArc provides a long wanted feature to be able to weight servers in how they may be randomly chosen. Details about this and the other changes included are listed on the release details.
The ability to set a server weight at runtime allows for a number of new features in how an Aurora cluster can be utilized. The easiest and most obvious use case is if you have a server of a larger instance type. Having weights set to match instance types can allow for more fluid deployment / cluster rotation strategies. It can also make a cluster more stable in a failover condition where the readers and writers are of different types.
This can also be useful in cost and latency optimizations. If you know what availability zone you are in you may choose to set servers in other zones to a weight of ‘0’. Making them only used if there is no healthy servers in your availability zone.
This marks another huge step in providing the unique load and failover capabilities this driver is hoping to provide.
** Update: 0.14 was not deployed to maven central correctly, use 0.15 instead
Threadly 6.2 is fairly minor. Most notably providing the new OrderedExecutorLimiter which provides the first ability for a task sorting besides FIFO. Letting limited / queued tasks to have different sorting logic. Check the release notes to hear about additional minor changes that were included.
Today we are happy to announce another option for getting in touch with us. We continue to welcome github issues for questions, ideas, or other discussions. But for those who want a more real-time discussion we now have a chat solution setup at Zulip.
Join us by creating an account at https://threadly.zulipchat.com/. Some points of interests are the announcements stream where we will provide alerts on version releases. In general this stream should match fairly close to when there is a post on the website.
We also have a stream for every threadly project. On signing up you will be added to the more popoular projects, but others can be joined manually if interested. For each project stream feel free to start a topic for your question, idea for improvement, or anything else you want to talk about.
I would like to try moving some API discussions here instead of on github issues. If API ergonomics interest you I recommend watching both github and joining Zulip.
Today we released 6.1 of threadly which includes both performance improvements and feature improvements. Most notably is the ability to check error states of ListenableFuture’s without needing to generate an ExecutionException. Check the release notes for more details as well as a list of additional features.
Today we released 6.0 of threadly and 1.0 of threadly-test (which now depends on the new 6.0 threadly). To upgrade check out our major version migration guide, or if you want complete details look at the release notes.
With the removal of our deprecated api’s, and the move of our unit test tools to their own artifact, this notably makes threadly a smaller dependency. Not just caring about jar size, the goal here is that API’s will be easier to navigate to find the features which are useful to you.
We expect 6.X to be shorter lived than 5.X was. Primarily because of the need to migrate off
Unsafe as the JVM continues to drop support for it. However, we needed to be able to update our minimum JVM version to be able to have
Unsafe alternatives. 6.0 consciously had no minimum JVM update (still just requiring 8), but 7.X will have this update so we can continue long term support.
A long overdue replacement of the website. This new site allows us to better provide documentation across all of our libraries and tools. The goal of the change was to be able to provide more documentation and information across our multiple libraries. When the original site was made we really only had one library, we now have networking, a JDBC driver, a load test framework, and I expect even more in the future.
I hope this will be a start of making the site generally more useful. I hope to bring richer news posts, detailing the benchmark results we have been tracking. Not to mention the site now generally has more features (RSS feeds, more pages and structure, etc).
If you have any feedback, or find any problems, please open an issue.
Most notable is the move of the org.threadly.test package to the new threadly-test archive (maven coordinates
org.threadly:threadly-test:0.1). This is planned to be the last release before we switch to the 6.0 API. The release details as always provides complete details on included changes.
This release provides performance improvements to RateLimiterExecutor and ExecutorLimiter. The gains in
RateLimiterExecutor being most significant, providing huge improvements in cases where thread contention exists.
The newly released 0.13 of auroraArc marks a notable improvement in reliability when a replica is an unhealthy state but being unused. It adds additional state setting cases to the connections which it ignores. When the connection is actually used for a query or other server side change then the error will be thrown.
Another 5.X release focused primarily on performance improvements and other internal updates. The release details outlines the specific areas of improvement.
As we start to think more about a 6.0 release, backwards compatible API changes have been provided in the new 5.40 release. In this we moved and renamed Watchdog into the new watchdog package. As part of this we also added a new “PollingWatchdog” to be able to provide more flexible timeout mechanics when desired.
5.39 released, adding ConfigureableThreadFactory.builder() as an easier way to configure the ThreadFactory. Also included are some minor internal improvements to ListenableFuture.map operations. We are starting to formalize a 6.0 release, take a look at the 6.0 Release Milestone. If you have any ideas of what would be good to include in a upcoming 6.0, or even a future 7.0 release, feel free to open an issue.
This release provides some minor feature expansions to FutureUtils and the new
ArrayIterator. Read about them in the release details.
This release includes new features around queue consumption and work processing. See the new package
org.threadly.concurrent.processing and the release details.
A couple days ago we silently released 5.35 which included the new FilteredStackProfiler as an additional Profiler implementation. This quickly following release includes protection against Exception cause cycles for ExceptionUtils. A
cause which loops to a previous exception could easily result in an infinite loop. This change detects and guards against this condition without impacting performance generally.
See more posts from the News Archive.