Axon Framework - Release Axon Framework v4.6.0

I’m glad to announce that we’ve released Axon Framework v4.6.0 on the 15th of September, 2022.

This release contains:

:star: Features

  • Added Slack release announcement #2348
  • [#2307] Carry the context during reset to the ReplayToken #2312
  • Propagate ResetContext in ReplayToken #2307
  • [#2198] Add support for Jakarta #2301
  • Native Tracing for Axon Framework with OpenTelemetry as default #2294
  • [#2021] Dead Letter Queue for Event Processing Groups #2258
  • JPA dead letter queue implementation #2239
  • Construct means to switch between classes using javax and jakarta #2198
  • Create add-dependabot-pr-to-project.yml #2183
  • Create add-issues-to-project.yml #2182
  • Multiteant support #2156
  • Spring event for indication that Axon has started #2146
  • Application events when handlers are registered #2144
  • [#1125] Introduce SagaLifecycle.associationValues() #2141
  • [#1964] Include AxonServerHealthIndicator #2130
  • AggregateTestFixture improvement - Validate Exception Details #2125
  • AggregateTestFixture improvement - Validate Exception Details #2110
  • Feature/1466 Additional deadline validation methods #2071
  • Multi-tenant support #2045
  • Dead-Letter Queue for Event Processors #2021
  • Added AxonServerEEContainer and AxonServerSEContainer as an easier way for people to write tests #2020
  • Streaming query #2001
  • [#1967] Fetch available segements only from the TokenStore #1997
  • [#1645] Introduce ObjectNode-to/from-JsonNode ContentTypeConverter for the JacksonSerializer #1995
  • [#1490] Simplify LockFactory configuration for Aggregates #1992
  • [#1986 Introduce EventProcessingConfigurer#defaultTransactionManager method #1989
  • Register default Transaction Manager through Event Processing Configurer #1986
  • Add method returning the available segments of a TokenStore #1967
  • Add an actuator health indicator to check the connection between the application and Axon Server #1964
  • Added the MetaDataSequencingPolicy #1930
  • Provide a SequencingPolicy based on a MetaData field #1929
  • Added an option to create a fixture for a state stored aggregate #1772
  • JsonNode-to-ObjectNode ContentTypeConverter #1645
  • Simplify LockFactory configuration per aggregate #1490
  • Additional Deadline Validation methods. #1466
  • Allow TrackingEventProcessor start to be deferred #1184
  • Accessing Saga Association Values #1125
  • Signal when all Handlers have been registered in Spring environment #880

:chart_with_upwards_trend: Enhancements

  • Improve deadline span name. #2360
  • Make Given-phase Error Handling configurable for Saga Test Fixtures #2356
  • Improve SpanFactory autoconfiguration mechanism. #2354
  • Introduce LoggingSpanFactory and MultiSpanFactory #2353
  • Check if a certain handler contains certain methods before registering it. #2346
  • Catch exceptions from correlation data providers. #2345
  • Throw exception on ambiguous dependencies #2344
  • Integration Test for Command and Query Priority Calculations #2342
  • Include message identifier in error message if de-serialization fails #2330
  • Add CorrelationDataProvider error handling on rollback #2328
  • Strip test prefix once required in JUnit 3 from test method names #2321
  • Apache Maven Wrapper 3.8.6 #2320
  • Allow ReplayToken creation to be customizable when resetting a projection #2308
  • Ensure all dispatchable messages are serialiable by Jackson and Xstream. #2295
  • Testclasses for javax jakarta extension #2280
  • Remove redundant method definition #2270
  • Integration Test for Command and Query Priority Calculations #2266
  • Update the PrioritizedRunnable to a PriorityTask #2265
  • Automatically add Release Notes on milestone closure to Discuss post #2264
  • Create a protected method to fetch tracking events on JpaEventStorageEngine #2262
  • Create a protected method to fetch tracking events on JpaEventStorageEngine. #2259
  • Allow subtype definition on the Repository builders for Polymorphic Aggregates #2250
  • Add test for ConsistentHash.equals #2244
  • Use getHost instead of getContainerIpAddress #2222
  • Default snapshotfilter with revision null #2213
  • Default snapshot filter with revision null #2212
  • Creation policy factory for Aggregates #2209
  • Removed deprecated code by updating the default serializer initialization #2206
  • Flux response type rank matching #2197
  • Introduce conditional variants for ApplyMore #2174
  • Conditional variant for the ApplyMore methods #2173
  • Take into account the result of the equals method before attempting… #2171
  • Improve javadoc of the ReplayStatus enum to reflect changes to the StreamingEventProcessors #2170
  • MultipleInstancesResponseType should match (lower) on single item #2148
  • Add duplicate resolution on query handler registration, defaulting to… #2140
  • Add method on DefaultCommandGateway to be able to customize callbacks #2139
  • Default Revision SnapshotFilter in absence of annotation #2136
  • Fine tune the MessageHandlerLookup for Spring Native support #2106
  • Redesign of Spring Boot Auto Configuration support #2105
  • Feature/1629 saga test fixture #2101
  • [#2093] Validate if target Command Handling Member can resolve target #2095
  • Allow several Aggregate Member collections of the same type #2093
  • Changed logging about “processor falling behind” #2073
  • Make asDomainEventMessage available to subclasses #2066
  • Make JpaEventStorageEngine#asDomainEventMessage(EventMessage<?>) protected #2065
  • Separate Integration Tests and Aggregate coverage reports #2063
  • [#1646] Update “No Handler For” exceptional cases #2062
  • [#1711] Simplify attachment of Lifecycle Operations #2061
  • Change how Sonar is invoked for GHA’s #2033
  • Introduce LifecycleAware interface for managing component lifecycle #2028
  • Remove MonoWrapper usage. #2008
  • Replaced method.getParametersTypes().length by method.getParameterCount()) #1987
  • Methods for testing deadlines when time passed are consistent in TestExecutor & SagaTestFixture (fixes #1974) #1975
  • Make methods for testing Deadlines consistent for TestExecutor and SagaTestFixture #1974
  • Added jdk17-ea on our build workflow for early feedback #1915
  • Add configurable options for checking failure transiency #1910
  • Prevent stack trace generation for HandlerExecutionException #1905
  • Allow creation of HandlerExecutionExceptions without stacktrace #1901
  • [#1898] Empty associationProperty leads to IndexOutOfBoundsException #1899
  • Empty associationProperty leads to IndexOutOfBoundsException #1898
  • Provide means of configuring a CommandCallback #1889
  • Splitted builds into pr and not pr, added ghactions to dependabot and other minors #1830
  • Fine tune triggered Deadline validation for Test Fixtures #1797
  • Simplified DeadlineManager configuration #1796
  • Expand RetryScheduler to support more granular decision when to retry #1723
  • Simplify attachment of Lifecycle Operations #1711
  • Improved termination heuristic when response is < batchsize/2 and the… #1691
  • Exception in startHandlers is “swallowed” by exception in shutdownHandlers #1669
  • Fine tune “No Handler For…” Exception #1646
  • SagaTestFixture should support expectSuccessfulHandlerExecution() #1629
  • Large number of rolled back transactions on JPA/JDBC TokenStore #1475
  • Reduce Reflection usage #1427
  • Add annotation NonNull/Nullable for better usage in kotlin (also java) #1280
  • Spurious warnings when a tracking token gap appears then is filled #1193
  • Query handlers of the same name and response type within one class #719
  • MultipleInstancesResponseType should recognize handler with single result #602

:beetle: Bug Fixes

  • Rename SpanFactory.registerTagProvider to registerSpanAttributeProvider #2347
  • [#2341] Adjust type checking in SimpleQueryUpdateEmitter to accompany type erasure #2343
  • UpdateEmitter drops MultipleInstancesResponseType updates due to type checking. #2341
  • Parameter resolver ordering is wrong for test fixtures #2340
  • Take all types into account when resolving the deadline handler #2336
  • When moving to a polymorphic Aggregate the stored Deadlines are not handled. #2333
  • [#2331] Fix deserialization bug GrpcBackedSubscriptionQueryMessage and filter non-handler-matching updates #2332
  • GrpcBackedSubscriptionQueryMessage overwrites update type with initial response type #2331
  • [#2317] Using deadlines with DefaultConfigurer leads to NPE #2319
  • Using deadlines with DefaultConfigurer leads to NPE #2317
  • Fix streaming queries not respecting PriorityTask mechanism #2309
  • [#2268] Adjust ConditionalOnClass to validate existence of the AxonServerConnectionManager in absence of the axon-server-connector package. #2269
  • Bug when using Spring actuator starter and excluding axon server #2268
  • Support Cache and LockFactory configuration on @Aggregate stereotype #2254
  • Extracted lambdas to inner static classes #2240
  • Dependency on reactor is needed to be able to start an Axon app using current 4.6.0-SNAPSHOT #2238
  • Fix snapshots not being deployed to nexus #2237
  • fix javadoc: default port is 8124, not 8123 #2223
  • fix typo in local variable name #2218
  • Publisher Response Type #2215
  • EventProcessingModule should lazily initialize processors #2180
  • Fix StreamingEventProcessor#maxCapacity for the TrackingEventProcessor #2124
  • Restore missing commit 6e531a6cf173243adf9519905f42cbec0a334238 #2116
  • Wire eventSerializer into QuartzEventSchedulerFactoryBean #2115
  • Wire the event Serializer into QuartzEventSchedulerFactoryBean #2088
  • Fix typo in pom.xml #2022
  • Fix typos #2016
  • Exponential Retry for Tracking event processor not happening for transient exceptions when using postgres JdbcTokenStore #1920

:heart: Contributors

We’d like to thank all the contributors who worked on this release!

8 Likes