Repository navigation
v0.7.0
Two mistakes that used to pass silently now fail where they are made: publishing an integration event outside a transaction, and taking an aggregate lock inside one. Both can be switched back to a warning. Scheduled jobs no longer need Redis in a single-instance environment.
Breaking
- Acquiring an aggregate lock inside a transaction now throws
IllegalStateException, throughAggregateLocksand@AggregateLockalike. Such a lock is released before the transaction commits, so the next holder reads data from before the commit; nothing reported it. Re-entering a lock the thread already holds is not affected. Setddk.concurrency.lock.inside-transaction=warnorignoreto keep the old behaviour.AggregateLocksbuilt with the existing four-argument constructor does not check - Publishing an integration event outside a transaction now throws
IllegalStateException. Such an event was never delivered, and with Spring Modulith it left an incomplete publication record behind, all without a word in the log. The check runs before the event is recorded. Setddk.event.outside-transaction=warnorignoreto keep an application running while its publishing code is fixed
Added
ddk.job.lock.store=localkeeps scheduled job locks in the memory of the current process, so jobs with@SchedulerLockrun in an environment without Redis. Single instance only, and never chosen automatically