Skip to content
This repository was archived by the owner on Jul 4, 2025. It is now read-only.

Release 0.40.18 Spring Boot 3.2.*

Pre-release
Pre-release

Choose a tag to compare

@cloudcreate-dk cloudcreate-dk released this 25 Nov 13:58
· 131 commits to main since this release
ec40e15

What's Changed

Full Changelog: 0.40.17...0.40.18

  • Clarified Inbox/Outbox UnitOfWork/transaction handling
  • Improved lag logging in SubscriberGlobalOrderMicrometerMonitor
  • All Classes.forName now use a classloader when converting Fully Qualified Java Class names to Class instances.
  • Added getClassLoader and setClassLoader to JSONSerializer to encapsulate setting the class loader on the underlying JSON serializer implementation.
  • Added new methods to AggregateEventStreamPersistenceStrategy
    • resolveGlobalEventOrderSequenceName
    • findLowestGlobalEventOrderPersisted
  • Added EventStore#findLowestGlobalEventOrderPersisted(AggregateType)
  • PostgresqlDurableSubscriptionRepository
    • Added EventStore a constructor argument
    • Removed HandleAwareUnitOfWorkFactory<?> unitOfWorkFactory argument from PostgresqlDurableSubscriptionRepository, which acquires the HandleAwareUnitOfWorkFactory from the EventStore
    • createResumePoint now uses EventStore.findLowestGlobalEventOrderPersisted to lookup the lowest GlobalEventOrder persisted and uses this value if it's greater than the provided onFirstSubscriptionSubscribeFromAndIncludingGlobalOrder (which typically defaults to GlobalEventOrder#FIRST_GLOBAL_EVENT_ORDER)
      • This solves an issue where (Re)Subscriptions after the EventStream table(s) have been truncated, but the corresponding GlobalEventOrder sequence hasn't been reset, would result in a slow catchup towards the lowest persisted GlobalEventOrder, due to EventStream Gap detection being cautious with regards to how fast Subscriptions increase the global-event-order range that's included in EventStore polling requests.
  • Switched to use log-level DEBUG for SqlExecutionTimeLogger.logException, instead of level ERROR
  • Improved PostgresqlEventStreamGapHandler log output
  • Improved the OptimisticAppendToStreamException detection in SeparateTablePerAggregateTypePersistenceStrategy and removed the cause exception from OptimisticAppendToStreamException and AppendToStreamException
  • Improved OptimisticAppendToStreamException testing in SingleTenantPostgresqlEventStoreIT
  • Improved EventJSON, EventMetaDataJSON, EventMetaData and PersistedEvent - added unit tests
  • Improved EventStoreSubscriptionManager_subscribeToAggregateEventsAsynchronously_IT test
  • Moved Lifecycle to the Shared module - kept Lifecycle in Foundation for backwards compatibility
  • EventBus now extends Lifecycle
  • Redesigned the LocalEventBus
    • Removed Optional's from constructors and introduced a Builder
    • async publisher code, which now has improved Overflow handling. It supports controlling the Flux backpressure buffer size, queue task cap size, overflow max retries
    • Improved shutdown logic
  • Improved EventStoreEventBus
    • Removed Optional's from constructors
  • Added equals/hashCode/toString to EventJSONTest
  • Added BeforeCommitProcessingStatus return value to UnitOfWorkLifecycleCallback#beforeCommit to allow GenericHandleAwareUnitOfWorkFactory and SpringTransactionAwareEventStoreUnitOfWorkFactory to rerun the beforeCommit phase to capture aggregate changes resulting from in-transaction event handling (e.g. from code listening to the EventBus)
  • Changed the UnitOfWorkLifecycleCallback in FlexAggregateRepository and StatefulAggregateRepository to return BeforeCommitProcessingStatus.REQUIRED as long as each beforeCommit run returns changes to aggregates.
  • Added info method to UnitOfWork
  • Added debug logging of UnitOfWork#info in UnitOfWorkFactory
  • Added copying PersistedEvent's list in PersistedEvents since the associated lists are reset in EventStoreManagedUnitOfWork across beforeCommit runs
  • Adjusted before/after commit callback logic in SpringTransactionAwareEventStoreUnitOfWorkFactory
  • Renamed Spring EventStore integration test classes from being called "Test" to "IT"
  • Added ReactiveProperties to EssentialsComponentsConfiguration to allow controlling the LocalEventBus/EventStoreEventBus properties
  • Updated README.md
  • Added support for exclusivelySubscribeToAggregateEventsInTransaction in EventStoreSubscriptionManager (work in progress)
  • Added InTransactionEventProcessor (work in progress)

Updated to Kotlin 2.0.21
Updated 3rd party dependencies

  • Spring Boot 3.2.12
  • Spring Framework 6.1.15
  • Reactor 2023.0.12
  • Spring Data MongoDB 4.2.12
  • Spring Data JPA 3.2.12
  • mongodb-driver-sync 4.11.5
  • log4j-to-slf4j 2.24.2
  • micrometer 1.12.13
  • micrometer-tracing 1.2.12
  • netty 4.1.115.Final
  • JUnit 5.11.3
  • TestContainers 1.20.4
  • JDBI 3.47.0
  • Jackson 2.18.1
  • LogBack 1.5.12

Updated Maven plugins

  • maven-javadoc-plugin 3.10.1
  • maven-dependency-plugin 3.8.1
  • maven-failsafe-plugin / maven-surefire-plugin 3.5.2
  • versions-maven-plugin 2.18.0
  • dependency-check-maven 11.1.0