Skip to content

Releases: msemys/esjc

v2.6.0

01 May 16:17
Compare
Choose a tag to compare
  • maintenance: schedule timer-tick with fixed delay
  • added: allow to set projection-manager (HTTP) address
  • added: allow to set maxFrameLength
  • bumped netty version to 4.1.92.Final
  • bumped slf4j version to 1.7.36

v2.5.0

01 Feb 21:20
Compare
Choose a tag to compare
  • [#65] fix: CatchUpSubscription reconnect (as suggested in #65 (comment))
  • added: CatchUpSubscriptionSettings.resubscribeOnReconnect setting, that allows to enable/disable catchup subscription automatic resubscribe-on-reconnect (by default - enabled)
  • added: CatchUpSubscription.awaitStopped(duration) and CatchUpSubscription.awaitStopped(time, unit) methods that waits until the subscription stops or the specified waiting time elapses
  • bumped netty version to 4.1.73.Final
  • bumped gson version to 2.8.9
  • bumped slf4j api version to 1.7.35

v2.4.0

17 Sep 14:38
Compare
Choose a tag to compare
  • fixed internal tasks error handling
  • avoids npe on subscriptions timeout check
  • bumped netty version to 4.1.68.Final
  • bumped gson version to 2.8.8
  • bumped slf4j api version to 1.7.32

v2.3.0

09 Oct 11:08
Compare
Choose a tag to compare
  • fix: use concurrent structures in OperationManager, otherwise some retry operations could be potentially lost
  • [#64] fix: concurrency in SubscriptionManager and IdentificationHandler
  • [#62] fix: recreate socket on each SingleEndpointDiscover.discover() call (to resolve correct IP address, when hostname IP address is changed)
  • [#59] added: reconnect instead of throwing NullPointerException("connection is null") when connection is null
  • added: allow to set custom endpoint discoverer via EventStoreBuilder.newBuilder().endpointDiscoverer(...) and EventStoreBuilder.newBuilder().endpointDiscovererFactory(...)
  • added: avoid dns lookup in SingleEndpointDiscover when address is a valid IP string (IPv4 or IPv6)
  • bumped netty version to 4.1.52.Final

v2.2.0

15 Apr 11:28
Compare
Choose a tag to compare
  • [#53] fix: when recovering catch-up subscription (onReconnect) wait for drop-event is processed and current subscription is stopped, before resubscribing
  • [#58] fix: use ConcurrentLinkedQueue for waiting operations
  • fix: always enqueue the operation and then send to server (sending directly can cause occasional out of order operations)
  • fix: incorrect order of arguments passed to Position constructor
  • bumped netty version to 4.1.48.Final
  • bumped gson version to 2.8.6
  • bumped slf4j api version to 1.7.30

v2.1.0

24 Mar 12:34
Compare
Choose a tag to compare
  • [#33] added retry count field to event in persistent subscription listener: PersistentSubscriptionListener.onEvent(PersistentSubscription, ResolvedEvent) -> PersistentSubscriptionListener.onEvent(PersistentSubscription, RetryableResolvedEvent)
  • [#40] added TLS certificate file validation (EventStoreBuilder.useSslConnection(new File("domain.csr")))
  • [#42] fixed missing node preference when building eventstore from settings
  • [#43] fixed multiple reconnects
  • [#44] fixed reconnection issue - on previous esjc versions when driver encounters channel failure (e.g: connection reset by server) it disconnects without triggering reconnection. Now it logs an error and reconnects. If for some reason, you need the previous behavior - use EventStoreBuilder.disconnectOnTcpChannelError(true)
  • fixed operations timeout check and retry on reconnect
  • EventStore.iterateXXXX and EventStore.streamXXXX methods throws specific exceptions StreamNotFoundException or StreamDeletedException (was IllegalStateException)
  • changed subscription drop due overflow reason SubscriptionDropReason.UserInitiated -> SubscriptionDropReason.ProcessingQueueOverflow
  • added option to prefer master, slave or random node in cluster endpoint discoverer (cluster.preferRandomNode(true) -> cluster.nodePreference(NodePreference.Random))
  • added eventNumber range check in EventStore.readStreamEventsBackward method
  • added EventStore.subscribeToPersistent(stream, groupName, listener, autoAck) and EventStore.subscribeToPersistent(stream, groupName, listener, userCredentials, autoAck) overloaded methods
  • added EventStoreBuilder.defaultExecutor() method
  • bumped netty version to 4.1.34.Final
  • bumped gson version to 2.8.5
  • bumped slf4j api version to 1.7.26

Many thanks to all committers!

v2.0.0

16 Jul 11:04
Compare
Choose a tag to compare
  • [#24] added 64bit event numbers support
  • [#22] added current_version to WriteEventsCompleted message and exposed stream, expectedVersion and currentVersion fields in WrongExpectedVersionException class
  • added EventStoreBuilder.connectionName(...) method that allows to set client connection name
  • added SubscriptionBufferOverflowException - more specific exception for subscription drop cause when 'client buffer too big'
  • removed expected version value wrapper ExpectedVersion.of(...) - now simply use expected version number
  • renamed class OperationTimedOutException -> OperationTimeoutException
  • renamed class HttpOperationTimedOutException -> HttpOperationTimeoutException
  • changed enum SystemEventType -> class SystemEventTypes with string constants
  • bumped netty version to 4.1.13.Final
  • bumped gson version to 2.8.1

v1.8.1

11 Jun 15:18
Compare
Choose a tag to compare
  • [#25] fixed ResolvedEvent protobuf message (allows to read streams using resolveLinkTos=true option, that contains links to hard-deleted stream)
  • [#26] fixed dropped catchup subscription still receives events

v1.8.0

03 May 19:37
Compare
Choose a tag to compare
  • [#19] fixed handling of multiple heartbeats
  • [#20] fixed timeouts not triggering when there is no server response
  • [#21] added cause to ConnectionClosedException
  • [#15] added EventStore.shutdown() method, that disconnects client from server and initiates executor services shutdown
  • java.time.Instant based timeout checks replaced with System.nanoTime() diff check (based on pull request #20)
  • added projections management support (use ProjectionManagerBuilder to build ProjectionManager instance)
  • added users management support (use UserManagerBuilder to build UserManager instance)
  • added cluster node option ClusterNodeSettings.preferRandomNode to prefer a randomly selected node instead of always preferring the master node
  • added EventStore.tryAppendToStream method (conditional-append), that returns the status of operation instead of throwing an exception in cases of stream version mismatch or stream was deleted
  • added PersistentSubscription.acknowledge(UUID[]) method, that allows persistent subscription to acknowledge messages by event ids
  • bumped netty version to 4.0.46.Final
  • bumped slf4j api version to 1.7.25

v1.7.0

18 Dec 15:05
Compare
Choose a tag to compare
  • [#13] fixed error handling when an error occurs while reading/processing tcp package - in such cases, the client will be disconnected
  • [#12] optimized and simplified stream iterators implementation
  • added java8 stream api support for reading events from eventstore (EventStore.streamXXXX methods)
  • added EventStoreBuilder.userCredentials(UserCredentials userCredentials) overloaded method
  • improved client event notification
  • exposed ExpectedVersion constants (NO_STREAM, ANY, STREAM_EXISTS) and removed corresponding static methods:
    • ExpectedVersion.noStream() -> ExpectedVersion.NO_STREAM
    • ExpectedVersion.any() -> ExpectedVersion.ANY
    • ExpectedVersion.streamExists() -> ExpectedVersion.STREAM_EXISTS
  • removed usage of java.util.Optional for fields and parameters
  • bumped slf4j api version to 1.7.22