All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
ARGUS-44166
- Improve logging of ServiceResponseContext when
debugOpenRequests
is enabled, including timestamp and thread name. - Add metric and print warning logs for all connections older than a configurable limit
connectionAgeWarningLimit
. - Add metrics to ServiceV1HttpClient for service invocations, service timeouts and gateway timeouts (as seen from client) for each priority port.
- Add metric to ServiceProxy to count usage of circuit breaker.
ARGUS-44166
- Added option
debugOpenRequests
to log service/method of open SPI client requests onServiceV1HttpClient.getMetrics()
ARGUS-44160
- Ensure that ClientResultSet is closed when using
.iterator()
ARGUS-43963
- Added HTTP client pool metrics to the ServiceV1HttpClient
ARGUS-43696
- Add Serializer metrics in ServiceClient
ARGUS-43419
- Ensure closing of
ResultSet
inServiceInvocationHandler
after handling streaming result. - Invoke
ResultSet.cancel()
if an error occurs duringServiceInvocationHandler
handling of resultset
The ServiceInvocationHandler
already closes the enclosing ServiceSession
after handling a ResultSet
.
However, in some situations, the ResultSet
may have its own session, so the handler must also close this resource.
ARGUS-43494
- Reduce excessive logging on checked exceptions in
ServiceInvocationHandler
.
ARGUS-43191
- Implementing optional
CircuitBreakerHandler
inServiceProxy
. - If enabled, this handler will early reject requests to Jetty if the server thread pool is (near) empty, instead of queueing requests. This will lead to rejecting requests early, instead returning 503, allowing an upstream load balancer to forward the request to other instances.
ARGUSUSER-7540
- Ensure proper close of resources in ClientResultSet.
- Define new
Resource
extendingCloseable
withcancel()
- Extend ResultSet as
Resource
- Ensure cancelling of underlying
Resource
whenClientResultSet
is cancelled.
ARGUS-43191
- Add thread pool metrics in
ServiceProxy
ARGUS-43192
ServiceV1HttpClient
throwsServiceTimeoutException
on connect timeout.- Added configuration option
ServiceV1HttpClient.setConnectionTimeoutSeconds(long)
to configure non-default connection timeout. Defaults to 3 minutes (HttpClient default).
ARGUS-39520
- Upgraded to Jetty 10
- Note that this upgrade requires clients using the
service-proxy
to also move to Jetty10.
ARGUS-42621
- Flush response buffer on ServiceProxy keepalive, to avoid gateway timeout
- Use per-server configured ObjectMapper in ResultSetParser to configure max size for parsing large ResultSet response objects
ARGUS-42553
- Add
ServiceClient.setReadMaxStringLength(int)
andServiceProxy.setReadMaxStringLength(int)
to allow configuring max SPI document size
ARGUS-42524
- Improve error handling for gateway timeout
ARGUS-42345
- Added
ServiceClient.closeThreadResources()
to allow client threads to close HTTP client resources which are dangling after SPI invocations. - Added implicit invocation of
ServiceClient.closeThreadResources()
at the end of every service proxy server-side handling inServiceV1Servlet
, to ensure that any downstream clients are closed when the handler is done.
ARGUS-42087
- The current serviceproxy implementation opens the request session in a different thread than the thread used to execute the actual method, causing the method invocation to open its own session instead, which is then not kept open after the method is done.
- This change runs the method execution using the request thread, and runs the keepalive generation in a separate thread.
ARGUS-41771
- Fix resolving of primitive types in ServiceInvocationHandler
ARGUS-40424
- Small improvements for API proxy
ARGUS-40424
- Implement api proxy
ARGUSUSER-6576
- Upgraded messaging to 1.4.0.
This upgrade introduces JMS RequestSink protocol V4, and removes support for protocol versions V1 and V2.
- Upgrading clients must ensure that service topic is configured and set.
- Upgrading clients should enable protocol version V4, to enable flow control of streaming responses.
- For clients having V4 enabled, a new method
ServiceProxy.setNextResponseWindowSize(int)
allows client to set the response window size for the next request. This can be used to e.g. reduce memory pressure if each response segment in the client invocation response is expected to be very large.
ARGUS-35165
- Renamed generic "errors" metric in ServiceMessageClient to "streamingInterrupted" to clearly indicate the purpose.
ARGUS-33367
- Upgraded nexus-staging-maven-plugin in order to fix deployment to Maven Central.
ARGUS-32473
- Made project build with JDK17 (failed on javadoc generation).
- Upgraded dependencies to the newest minor/bugfix versions.
- Swapped
javax.inject
artefact to Jakarta.
ARGUS-33344
- Ensure
ServiceMessageHandler
closesResultSet
after processing
ARGUS-32839
- Ensure
ServiceMessageClient
will invokeRequestHandler.close()
when thread is interrupted. - Ensure
ServiceMessageHandler
cancels/interrupts ongoing call future when receivingabort()
ARGUS-32084
- Exposing
KafkaToHazelcastHandler.getQueueSize()
ARGUS-31871
- Properly shut down worker threads on InterruptedException in Hazelcast consumer pipeline.
ARGUS-31809
- Made termination timeout configurable in
HazelcastTransactionalConsumerHandler
ARGUS-31391
- Add new package
hazelcast5-consumer
which uses Hazelcast 4 or 5
- Replace package
hazelcast-consumer
withhazelcast-consumer5
- Update other client code to use Hazelcast 4 or 5
ARGUS-31387
- Improved error handling in KafkaToHazelcastHandler and HazelcastTransactionalConsumer.
- Changed default value for
keepThreadAliveOnException
totrue
. - Changed
bulk.failed.count
metric to only report if a configurable error threshold is exceeded (default threshold is 3, change withpermittedConsecutiveErrors
option). - Changed
queue.offer.error.count
metric toqueue.offer.timeout.count
. - Added additional metrics
bulk.accepted.count
andbulk.rejected.count
.
ARGUS-31292
- Add improved exception handling to
KafkaToHazelcastHandler.KafkaWorker
ARGUS-29853
- use DocumentSource instead of
KafkaDocumentSource
inKafkaToHazelcastHandler
constructor.
ARGUS-30461
KafkaToHazelcastHandler
is now using its own internalKafkaWorker
thread to poll batches of documents. This allows the handler to roll back the entire batch if writing to Hazelcast fails.- Added new metric
bulk.failed.count
to theHazelcastTransactionalConsumer
.