Occurrent 0.10.0 is now available with bug fixes and other improvements. The EventStore API has changed somewhat, but it should still be backward compatible. What’s changed is that the “write” methods no longer returns void but an instance of WriteResult. The WriteResult contains the id and version of the stream. The version can be very useful when implementing e.g. a REST API so that you can implement a “read your own write” strategy. Expect more data to be added to WriteResult in the future. This has been implemented for all event stores (including the reactive implementations).

Changelog:

  • The event store API’s now returns an instance of org.occurrent.eventstore.api.WriteResult when writing events to the event store (previously void was returned). The WriteResult instance contains the stream id and the new stream version of the stream. The reason for this change is to make it easier to implement use cases such as “read your own writes”.
  • The blocking ApplicationService org.occurrent.application.service.blocking.ApplicationService now returns WriteResult instead of void.
  • Fixed bug in InMemoryEventStore that accidentally could skip version numbers when new events were inserted into the database.
  • Improved detection of duplicate cloud event’s in all MongoDB event stores
  • Fixed a bug where WriteConditionNotFulfilledException was not thrown when a stream was updated by several threads in parallel (fixed for all mongodb event store implementations)
  • Upgraded Spring Boot from 2.4.2 to 2.4.4
  • Upgraded reactor from 3.4.2 to 3.4.4
  • Upgraded spring-data-mongodb from 3.1.1 to 3.1.7
  • Upgraded lettuce-core from 6.0.1 to 6.1.0
  • Upgraded mongo java client from 4.1.1 to 4.2.2
  • Upgraded spring-aspects from 5.2.9.RELEASE to 5.3.5
  • Upgraded spring-retry from 1.3.0 to 1.3.1
  • Upgraded kotlin from 1.4.31 to 1.4.32
  • Upgraded kotlinx-collections-immutable-jvm from 0.3.2 to 0.3.4