All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
N/A
N/A
- Simplified key management for Event Node
- AsyncHttpRequest case insensitivity for headers, cookies, path parameters and session key-values
- Make built-in configuration management optional
Added HTTP relay feature in rest-automation project
N/A
- Improved hazelcast retry and peer discovery logic
- Refactored rest-automation's service gateway module to use AsyncHttpRequest
- Info endpoint to show routing table of a peer
- Simple configuration management is added to event-node, hazelcast-presence and kafka-presence monitors
- Added
BeforeApplication
annotation - this allows user application to execute some setup logic before the main application starts. e.g. modifying parameters in application.properties - Added API playground as a convenient standalone application to render OpenAPI 2.0 and 3.0 yaml and json files
- Added argument parser in rest-automation helper app to use a static HTML folder in the local file system if arguments
-html file_path
is given when starting the JAR file.
N/A
- Kafka publisher timeout value changed from 10 to 20 seconds
- Log a warning when Kafka takes more than 5 seconds to send an event
- getRoute() method is added to PostOffice to facilitate RBAC
- The route name of the current service is added to an outgoing event when the "from" field is not present
- Simple RBAC using YAML configuration instead of code
N/A
Updated Spring Boot to v2.2.1
Multi-tenancy support for event streams (Hazelcast and Kafka). This allows the use of a single event stream cluster for multiple non-prod environments. For production, it must use a separate event stream cluster for security reason.
N/A
- logging framework changed from logback to log4j2 (version 2.12.1)
- Use JSR-356 websocket annotated ClientEndpoint
- Improved websocket reconnection logic
- Distributed tracing implemented in platform-core and rest-automation
- Improved HTTP header transformation for rest-automation
N/A
language pack API key obtained from environment variable
N/A
rest-core subproject has been merged with rest-spring
N/A
- Periodic routing table integrity check (15 minutes)
- Set kafka read pointer to the beginning for new application instances except presence monitor
- REST automation helper application in the "extensions" project
- Support service discovery of multiple routes in the updated PostOffice's exists() method
- logback to set log level based on environment variable LOG_LEVEL (default is INFO)
N/A
Minor refactoring of kafka-connector and hazelcast-connector to ensure that they can coexist if you want to include both of these dependencies in your project. This is for convenience of dev and testing. In production, please select only one cloud connector library to reduce memory footprint.
Add inactivity expiry timer to ObjectStreamIO so that house-keeper can clean up resources that are idle
N/A
- Disable HTML encape sequence for GSON serializer
- Bug fix for GSON serialization optimization
- Bug fix for Object Stream housekeeper
By default, GSON serializer converts all numbers to double, resulting in unwanted decimal point for integer and long. To handle custom map serialization for correct representation of numbers, an unintended side effect was introduced in earlier releases. List of inner PoJo would be incorrectly serialized as map, resulting in casting exception. This release resolves this issue.
- Store-n-forward pub/sub API will be automatically enabled if the underlying cloud connector supports it. e.g. kafka
- ObjectStreamIO, a convenient wrapper class, to provide event stream I/O API.
- Object stream feature is now a standard feature instead of optional.
- Deferred delivery added to language connector.
N/A
N/A
- Route substitution for simple versioning use case
- Add "Strict Transport Security" header if HTTPS (https://tools.ietf.org/html/rfc6797)
- Event stream connector for Kafka
- Distributed housekeeper feature for Hazelcast connector
System log service
Refactoring of Hazelcast event stream connector library to sync up with the new Kafka connector.
Language-support service application for Python, Node.js and Go, etc. Python language pack project is available at https://github.com/Accenture/mercury-python
N/A
- replace Jackson serialization engine with Gson (
platform-core
project) - replace Apache HttpClient with Google Http Client (
rest-spring
) - remove Jackson dependencies from Spring Boot (
rest-spring
) - interceptor improvement
N/A
N/A
- Move safe.data.models validation rules from EventEnvelope to SimpleMapper
- Apache fluent HTTP client downgraded to version 4.5.6 because the pom file in 4.5.7 is invalid
Added retry logic in persistent queue when OS cannot update local file metadata in real-time for Windows based machine.
N/A
pom.xml changes - update with latest 3rd party open sources dependencies.
platform-core
- Support for long running functions so that any long queries will not block the rest of the system.
- "safe.data.models" is available as an option in the application.properties. This is an additional security measure to protect against Jackson deserialization vulnerability. See example below:
#
# additional security to protect against model injection
# comma separated list of model packages that are considered safe to be used for object deserialization
#
#safe.data.models=com.accenture.models
rest-spring
"/env" endpoint is added. See sample application.properties below:
#
# environment and system properties to be exposed to the "/env" admin endpoint
#
show.env.variables=USER, TEST
show.application.properties=server.port, cloud.connector
N/A
platform-core
Use Java Future and an elastic cached thread pool for executing user functions.
N/A
Hazelcast support is added. This includes two projects (hazelcast-connector and hazelcast-presence).
Hazelcast-connector is a cloud connector library. Hazelcast-presence is the "Presence Monitor" for monitoring the presence status of each application instance.
platform-core
The "fixed resource manager" feature is removed because the same outcome can be achieved at the application level. e.g. The application can broadcast requests to multiple application instances with the same route name and use a callback function to receive response asynchronously. The services can provide resource metrics so that the caller can decide which is the most available instance to contact.
For simplicity, resources management is better left to the cloud platform or the application itself.
N/A
N/A