Changelog
Release notes
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.
Version 4.0.21, 11/14/2024
Added
Support for user function to return a Mono reactive response object
Removed
N/A
Changed
- Update netty to version 4.1.115.Final to address security vulnerability in 4.1.114
- Move reactor-core library from rest-spring-3 to platform-core
Version 4.0.20, 11/13/2024
Added
For ease of configuration, added "com.accenture" to the base packages so that user applications do not need to include it to use the event-script-engine module.
Removed
if-then-else pipeline feature in event-script
Changed
- Update Event Script syntax for consistency
- Fix error in counting number of compiled flows
Version 4.0.16, 11/10/2024
Added
Generate unique flow instance ID as reference during flow execution.
Removed
N/A
Changed
Save the original correlation-ID from the calling party in a flow instance and return this value to the calling party at the end of flow execution.
Version 4.0.15, 11/7/2024
Added
N/A
Removed
N/A
Changed
renamed StartFlow to FlowExecutor
Version 4.0.14, 11/7/2024
Added
N/A
Removed
N/A
Changed
- Health check function can return either a text string or a Map
- StartFlow API updates
Version 4.0.13, 11/5/2024
Added
Added helper class "StartFlow" to start a flow, including internal flows without HTTP or Kafka.
Removed
N/A
Changed
- Bugfix for empty YAML file to avoid null pointer exception
- Sort event scripts for orderly logging in the CompileFlows validation process
Version 4.0.12, 10/31/2024
Added
New feature to support resolution of more than one environment variable for a parameter using the ConfigReader
Removed
N/A
Changed
Update OSS modules 1. classgraph version 4.8.177 2. kotlin version 2.0.21 3. guava version 33.3.1-jre 4. jUnit version 5 jupiter
Adjusted all unit tests to use jUnit 5
Version 4.0.11, 10/28/2024
Added
New features to support: 1. multiple preload override config file 2. multiple flow list config files
Removed
- unused class "UnauthorizedObj" in platform-core
- commons-io dependency in Kafka-Standalone subproject
Changed
- Unit test for the preload override feature
- JavaDoc for the MainApplication
Version 4.0.10, 10/24/2024
Added
N/A
Removed
N/A
Changed
- OSS update - Spring Boot 3.3.5
- Security patch for CR/LF exploit for HTTP cookie
Version 4.0.9, 10/18/2024
Added
Added Kafka Raft for the Kafka-standalone app.
Removed
Removed zookeeper from Kafka-standalone app.
Changed
Update spring framework verison 6.1.14 to avoid vulnerability in webflux
Version 4.0.8, 10/9/2024
Added
- Partial support of Active Profile using the "spring.profiles.active" parameter
- Hierarchy of flows
Removed
N/A
Changed
N/A
Version 4.0.7, 10/1/2024
Added
A generic "no-op" function for use in event scripts.
Removed
Feature to ping a function without payload and headers.
Changed
Simplified api-playground application
Version 4.0.6, 9/27/2024
Added
- HTTP request Cookie value filtering using RFC-6265 strict syntax
Removed
- Automatic index page redirection filter for Spring Boot
Changed
- Upgrade SHA-1 to SHA-512 algorithm in CryptoAPI utility
- Fix security vulnerability associated with HTTP request header and cookie manipulation
Version 4.0.5, 9/24/2024
Added
N/A
Removed
- Feature for automatic PoJo transport in EventEnvelope and MsgPack
- Feature for safe.data.model deserialization
- Benchmark-server is no longer required
Changed
- Update OSS versions - vertx 4.5.10, kotlin 2.0.20, spring boot 3.3.4
Version 4.0.4, 9/5/2024
Added
New feature for AsyncHttpClient to render small streaming HTTP response (i.e. chunked binary data) as byte array.
For details, Please refer to Appendix III, Developer Guide
Removed
N/A
Changed
Bugfix for parsing default value of environment variable in ConfigReader. This resolves an issue when the special character colon (":") is used more than once in the default value.
Version 4.0.3, 9/4/2024
Added
The "preload override" feature is added. This allows overriding a reusable composable library with a set of new route names that are unique for use in an event flow configuration script.
For details, Please refer to Chapter 4, Developer Guide
Removed
N/A
Changed
N/A
Version 4.0.2, 8/31/2024
Added
- New "classpath" namespace for input data mapping
- Support for input data mapping to handle subset of input request body as a Map or PoJo
Removed
N/A
Changed
- Remove the class "type" variable from AsyncHttpRequest
- Improve the "removeElement" method in MultiLevelMap
- Make HTTP input request header labels key-insensitive
- Update Spring Boot to version 3.3.3
Version 4.0.1, 8/19/2024
Added
new File read/write feature in Event Script's I/O data mapping
Removed
N/A
Changed
- Update Spring Boot to version 3.3.2
- Update Guava to version 33.3.0-jre
- Update Vertx to version 4.5.9
- Update Kotlin to version 2.0.10
- Change "upstream" to "dependency" in the "/health" endpoint
Version 4.0.0, 6/24/2024
This version merges Event Script into the Mercury Composable repository.
Added
N/A
Removed
N/A
Changed
- Update Spring Boot to version 3.3.1
- Update Guava to version 33.2.1-jre
- Update Vertx to version 4.5.8
- Update Kotlin to version 2.0.0
- Update classgraph to version 4.8.174
- Optional reply event for a flow configuration
Kafka-standalone is still using Spring Boot 3.2.5 due to compatibility issue
Version 3.1.5, 5/1/2024
This version supercedes 3.1.4 due to updated data structure for static content handling.
Added
- Added optional static-content.no-cache-pages in rest.yaml
- AsyncHttpClientLoader
Removed
N/A
Changed
- Updated data structure for static-content section in rest.yaml
- Fixed bug for setting multiple HTTP cookies
- Unified configuration file prefix "yaml."
Version 3.1.4, 4/28/2024
Added
Added optional static content HTTP-GET request filter in rest.yaml
Removed
N/A
Changed
Updated syntax for static-content-filter
Version 3.1.3, 4/24/2024
Added
N/A
Removed
N/A
Changed
Enhanced OptionalService annotation.
Version 3.1.2, 4/17/2024
Added
Added "app-config-reader.yml" file in the resources folder so that you can override the default application configuration files.
Removed
N/A
Changed
- Open sources library update (Spring Boot 3.2.5, Vertx 4.5.7)
- Improve AppConfigReader and ConfigReader to use the app-config-reader.yml file.
- Enhanced OptionalService annotation.
Version 3.1.1, 2/8/2024
Added
- AutoStart to run application as Spring Boot if the rest-spring-3 library is packaged in app
- Configurable "Event over HTTP" - automatic forward events over HTTP using a configuration
- Support user defined serializer with PreLoad annotation and platform API
Removed
- Bugfix: removed websocket client connection timeout that causes the first connection to drop after one minute
Changed
- Open sources library update (Spring Boot 3.2.2, Vertx 4.5.3 and MsgPack 0.9.8)
- Rename application parameter "event.worker.pool" to "kernel.thread.pool"
Version 3.1.0, 1/5/2024
Added
- Full integration with Java 21 Virtual Thread
- Default execution mode is set to "virtual thread"
- KernelThreadRunner annotation added to provide optional support of kernel threads
Removed
- Retired Spring Boot version 2
- Hazelcast and ActiveMQ network connectors
Changed
platform-core engine updated with virtual thread
Version 3.0.7, 12/23/2023
Added
Print out basic JVM information before startup for verification of base container image.
Removed
Removed Maven Shade packager
Changed
Updated open sources libraries to address security vulnerabilities
- Spring Boot 2/3 to version 2.7.18 and 3.2.1 respectively
- Tomcat 9.0.84
- Vertx 4.5.1
- Classgraph 4.8.165
- Netty 4.1.104.Final
- slf4j API 2.0.9
- log4j2 2.22.0
- Kotlin 1.9.22
- Artemis 2.31.2
- Hazelcast 5.3.6
- Guava 33.0.0-jre
Version 3.0.6, 10/26/2023
Added
Enhanced Benchmark tool to support "Event over HTTP" protocol to evaluate performance efficiency for commmunication between application containers using HTTP.
Removed
N/A
Changed
Updated open sources libraries
- Spring Boot 2/3 to version 2.7.17 and 3.1.5 respectively
- Kafka-client 3.6.0
Version 3.0.5, 10/21/2023
Added
Support two executable JAR packaging system: 1. Maven Shade packager 2. Spring Boot packager
Starting from version 3.0.5, we have replaced Spring Boot packager with Maven Shade. This avoids a classpath edge case for Spring Boot packager when running kafka-client under Java 11 or higher.
Maven Shade also results in smaller executable JAR size.
Removed
N/A
Changed
Updated open sources libraries
- Spring-Boot 2.7.16 / 3.1.4
- classgraph 4.8.163
- snakeyaml 2.2
- kotlin 1.9.10
- vertx 4.4.6
- guava 32.1.3-jre
- msgpack 0.9.6
- slj4j 2.0.9
- zookeeper 3.7.2
The "/info/lib" admin endpoint has been enhanced to list library dependencies for executable JAR generated by either Maven Shade or Spring Boot Packager.
Improved ConfigReader to recognize both ".yml" and ".yaml" extensions and their uses are interchangeable.
Version 3.0.4, 8/6/2023
Added
N/A
Removed
N/A
Changed
Updated open sources libraries
- Spring-Boot 2.7.14 / 3.1.2
- Kafka-client 3.5.1
- classgraph 4.8.161
- guava 32.1.2-jre
- msgpack 0.9.5
Version 3.0.3, 6/27/2023
Added
- File extension to MIME type mapping for static HTML file handling
Removed
N/A
Changed
- Open sources library update - Kotlin version 1.9.0
Version 3.0.2, 6/9/2023
Added
N/A
Removed
N/A
Changed
- Consistent exception handling for Event API endpoint
- Open sources lib update - Vertx 4.4.4, Spring Boot 2.7.13, Spring Boot 3.1.1, classgraph 4.8.160, guava 32.0.1-jre
Version 3.0.1, 6/5/2023
In this release, we have replace Google HTTP Client with vertx non-blocking WebClient. We also tested compatibility up to OpenJDK version 20 and maven 3.9.2.
Added
When "x-raw-xml" HTTP request header is set to "true", the AsyncHttpClient will skip the built-in XML serialization so that your application can retrieve the original XML text.
Removed
Retire Google HTTP client
Changed
Upgrade maven plugin versions.
Version 3.0.0, 4/18/2023
This is a major release with some breaking changes. Please refer to Chapter-10 (Migration guide) for details. This version brings the best of preemptive and cooperating multitasking to Java (version 1.8 to 19) before Java 19 virtual thread feature becomes officially available.
Added
- Function execution engine supporting kernel thread pool, Kotlin coroutine and suspend function
- "Event over HTTP" service for inter-container communication
- Support for Spring Boot version 3 and WebFlux
- Sample code for a pre-configured Spring Boot 3 application
Removed
- Remove blocking APIs from platform-core
- Retire PM2 process manager sample script due to compatibility issue
Changed
- Refactor "async.http.request" to use vertx web client for non-blocking operation
- Update log4j2 version 2.20.0 and slf4j version 2.0.7 in platform-core
- Update JBoss RestEasy JAX_RS to version 3.15.6.Final in rest-spring
- Update vertx to 4.4.2
- Update Spring Boot parent pom to 2.7.12 and 3.1.0 for spring boot 2 and 3 respectively
- Remove com.fasterxml.classmate dependency from rest-spring
Version 2.8.0, 3/20/2023
Added
N/A
Removed
N/A
Changed
- Improved load balancing in cloud-connector
- Filter URI to avoid XSS attack
- Upgrade to SnakeYaml 2.0 and patch Spring Boot 2.6.8 for compatibility with it
- Upgrade to Vertx 4.4.0, classgraph 4.8.157, tomcat 9.0.73
Version 2.7.1, 12/22/2022
Added
- standalone benchmark report app
- client and server benchmark apps
- add timeout tag to RPC events
Removed
N/A
Changed
- Updated open sources dependencies
- Netty 4.1.86.Final
- Tomcat 9.0.69
- Vertx 4.3.6
- classgraph 4.8.152
-
google-http-client 1.42.3
-
Improved unit tests to use assertThrows to evaluate exception
- Enhanced AsyncHttpRequest serialization
Version 2.7.0, 11/11/2022
In this version, REST automation code is moved to platform-core such that REST and Websocket service can share the same port.
Added
- AsyncObjectStreamReader is added for non-blocking read operation from an object stream.
- Support of LocalDateTime in SimpleMapper
- Add "removeElement" method to MultiLevelMap
- Automatically convert a map to a PoJo when the sender does not specify class in event body
Removed
N/A
Changed
- REST automation becomes part of platform-core and it can co-exist with Spring Web in the rest-spring module
- Enforce Spring Boot lifecycle management such that user apps will start after Spring Boot has loaded all components
- Update netty to version 4.1.84.Final
Version 2.6.0, 10/13/2022
In this version, websocket notification example code has been removed from the REST automation system. If your application uses this feature, please recover the code from version 2.5.0 and refactor it as a separate library.
Added
N/A
Removed
Simplify REST automation system by removing websocket notification example in REST automation.
Changed
- Replace Tomcat websocket server with Vertx non-blocking websocket server library
- Update netty to version 4.1.79.Final
- Update kafka client to version 2.8.2
- Update snake yaml to version 1.33
- Update gson to version 2.9.1
Version 2.5.0, 9/10/2022
Added
New Preload annotation class to automate pre-registration of LambdaFunction.
Removed
Removed Spring framework and Tomcat dependencies from platform-core so that the core library can be applied to legacy J2EE application without library conflict.
Changed
- Bugfix for proper housekeeping of future events.
- Make Gson and MsgPack handling of integer/long consistent
Updated open sources libraries.
- Eclipse vertx-core version 4.3.4
- MsgPack version 0.9.3
- Google httpclient version 1.42.2
- SnakeYaml version 1.31
Version 2.3.6, 6/21/2022
Added
Support more than one event stream cluster. User application can share the same event stream cluster for pub/sub or connect to an alternative cluster for pub/sub use cases.
Removed
N/A
Changed
Cloud connector libraries update to Hazelcast 5.1.2
Version 2.3.5, 5/30/2022
Added
Add tagging feature to handle language connector's routing and exception handling
Removed
Remove language pack's pub/sub broadcast feature
Changed
- Update Spring Boot parent to version 2.6.8 to fetch Netty 4.1.77 and Spring Framework 5.3.20
- Streamlined language connector transport protocol for compatibility with both Python and Node.js
Version 2.3.4, 5/14/2022
Added
N/A
Removed
- Remove swagger-ui distribution from api-playground such that developer can clone the latest version
Changed
- Update application.properties (from spring.resources.static-locations to spring.web.resources.static-locations)
- Update log4j, Tomcat and netty library version using Spring parent 2.6.6
Version 2.3.3, 3/30/2022
Added
Enhanced AsyncRequest to handle non-blocking fork-n-join
Removed
N/A
Changed
Upgrade Spring Boot from 2.6.3 to 2.6.6
Version 2.3.2, 2/21/2022
Added
Add support of queue API in native pub/sub module for improved ESB compatibility
Removed
N/A
Changed
N/A
Version 2.3.1, 2/19/2022
Added
N/A
Removed
N/A
Changed
- Update Vertx to version 4.2.4
- Update Tomcat to version 5.0.58
- Use Tomcat websocket server for presence monitors
- Bugfix - Simple Scheduler's leader election searches peers correctly
Version 2.3.0, 1/28/2022
Added
N/A
Removed
N/A
Changed
- Update copyright notice
- Update Vertx to version 4.2.3
- Bugfix - RSA key generator supporting key length from 1024 to 4096 bits
- CryptoAPI - support different AES algorithms and custom IV
- Update Spring Boot to version 2.6.3
Version 2.2.3, 12/29/2021
Added
- Transaction journaling
- Add parameter
distributed.trace.aggregation
in application.properties such that trace aggregation may be disabled.
Removed
N/A
Changed
- Update JBoss RestEasy library to 3.15.3.Final
- Improved po.search(route) to scan local and remote service registries. Added "remoteOnly" selection.
- Fix bug in releasing presence monitor topic for specific closed user group
- Update Apache log4j to version 2.17.1
- Update Spring Boot parent to version 2.6.1
- Update Netty to version 4.1.72.Final
- Update Vertx to version 4.2.2
- Convenient class "UserNotification" for backend service to publish events to the UI when REST automation is deployed
Version 2.2.2, 11/12/2021
Added
- User defined API authentication functions can be selected using custom HTTP request header
- "Exception chaining" feature in EventEnvelope
- New "deferred.commit.log" parameter for backward compatibility with older PowerMock in unit tests
Removed
N/A
Changed
- Improved and streamlined SimpleXmlParser to handle arrays
- Bugfix for file upload in Service Gateway (REST automation library)
- Update Tomcat library from 9.0.50 to 9.0.54
- Update Spring Boot library to 2.5.6
- Update GSON library to 2.8.9
Version 2.2.1, 10/1/2021
Added
Callback function can implement ServiceExceptionHandler to catch exception. It adds the onError() method.
Removed
N/A
Changed
Open sources library update - Vert.x 4.1.3, Netty 4.1.68-Final
Version 2.1.1, 9/10/2021
Added
- User defined PoJo and Generics mapping
- Standardized serializers for default case, snake_case and camelCase
- Support of EventEnvelope as input parameter in TypedLambdaFunction so application function can inspect event's metadata
- Application can subscribe to life cycle events of other application instances
Removed
N/A
Changed
- Replace Tomcat websocket server engine with Vertx in presence monitor for higher performance
- Bugfix for MsgPack transport of integer, long, BigInteger and BigDecimal
Version 2.1.0, 7/25/2021
Added
- Multicast - application can define a multicast.yaml config to relay events to more than one target service.
- StreamFunction - function that allows the application to control back-pressure
Removed
"object.streams.io" route is removed from platform-core
Changed
- Elastic Queue - Refactored using Oracle Berkeley DB
- Object stream I/O - simplified design using the new StreamFunction feature
- Open sources library update - Spring Boot 2.5.2, Tomcat 9.0.50, Vert.x 4.1.1, Netty 4.1.66-Final
Version 2.0.0, 5/5/2021
Vert.x is introduced as the in-memory event bus
Added
- ActiveMQ and Tibco connectors
- Admin endpoints to stop, suspend and resume an application instance
- Handle edge case to detect stalled application instances
- Add "isStreamingPubSub" method to the PubSub interface
Removed
- Event Node event stream emulator has been retired. You may use standalone Kafka server as a replacement for development and testing in your laptop.
- Multi-tenancy namespace configuration has been retired. It is replaced by the "closed user group" feature.
Changed
- Refactored Kafka and Hazelcast connectors to support virtual topics and closed user groups.
- Updated ConfigReader to be consistent with Spring value substitution logic for application properties
- Replace Akka actor system with Vert.x event bus
- Common code for various cloud connectors consolidated into cloud core libraries
Version 1.13.0, 1/15/2021
Version 1.13.0 is the last version that uses Akka as the in-memory event system.
Version 1.12.66, 1/15/2021
Added
- A simple websocket notification service is integrated into the REST automation system
- Seamless migration feature is added to the REST automation system
Removed
Legacy websocket notification example application
Changed
N/A
Version 1.12.65, 12/9/2020
Added
- "kafka.pubsub" is added as a cloud service
- File download example in the lambda-example project
- "trace.log.header" added to application.properties - when tracing is enabled, this inserts the trace-ID of the transaction in the log context. For more details, please refer to the Developer Guide
- Add API to pub/sub engine to support creation of topic with partitions
- TypedLambdaFunction is added so that developer can predefine input and output classes in a service without casting
Removed
N/A
Changed
- Decouple Kafka pub/sub from kafka connector so that native pub/sub can be used when application is running in standalone mode
- Rename "relay" to "targetHost" in AsyncHttpRequest data model
- Enhanced routing table distribution by sending a complete list of route tables, thus reducing network admin traffic.
Version 1.12.64, 9/28/2020
Added
If predictable topic is set, application instances will report their predictable topics as "instance ID" to the presence monitor. This improves visibility when a developer tests their application in "hybrid" mode. i.e. running the app locally and connect to the cloud remotely for event streams and cloud resources.
Removed
N/A
Changed
N/A
Version 1.12.63, 8/27/2020
Added
N/A
Removed
N/A
Changed
Improved Kafka producer and consumer pairing
Version 1.12.62, 8/12/2020
Added
New presence monitor's admin endpoint for the operator to force routing table synchronization ("/api/ping/now")
Removed
N/A
Changed
Improved routing table integrity check
Version 1.12.61, 8/8/2020
Added
Event stream systems like Kafka assume topic to be used long term. This version adds support to reuse the same topic when an application instance restarts.
You can create a predictable topic using unique application name and instance ID. For example, with Kubernetes, you can use the POD name as the unique application instance topic.
Removed
N/A
Changed
N/A
Version 1.12.56, 8/4/2020
Added
Automate trace for fork-n-join use case
Removed
N/A
Changed
N/A
Version 1.12.55, 7/19/2020
Added
N/A
Removed
N/A
Changed
Improved distributed trace - set the "from" address in EventEnvelope automatically.
Version 1.12.54, 7/10/2020
Added
N/A
Removed
N/A
Changed
Application life-cycle management - User provided main application(s) will be started after Spring Boot declares web application ready. This ensures correct Spring autowiring or dependencies are available.
Bugfix for locale - String.format(float) returns comma as decimal point that breaks number parser. Replace with BigDecimal decimal point scaling.
Bugfix for Tomcat 9.0.35 - Change Async servlet default timeout from 30 seconds to -1 so the system can handle the whole life-cycle directly.
Version 1.12.52, 6/11/2020
Added
- new "search" method in Post Office to return a list of application instances for a service
- simple "cron" job scheduler as an extension project
- add "sequence" to MainApplication annotation for orderly execution when more than one MainApplication is available
- support "Optional" object in EventEnvelope so a LambdaFunction can read and return Optional
Removed
N/A
Changed
- The rest-spring library has been updated to support both JAR and WAR deployment
- All pom.xml files updated accordingly
- PersistentWsClient will back off for 10 seconds when disconnected by remote host
Version 1.12.50, 5/20/2020
Added
- Payload segmentation
For large payload in an event, the payload is automatically segmented into 64 KB segments. When there are more than one target application instances, the system ensures that the segments of the same event is delivered to exactly the same target.
- PersistentWsClient added - generalized persistent websocket client for Event Node, Kafka reporter and Hazelcast reporter.
Removed
N/A
Changed
- Code cleaning to improve consistency
- Upgraded to hibernate-validator to v6.1.5.Final and Hazelcast version 4.0.1
- REST automation is provided as a library and an application to handle different use cases
Version 1.12.40, 5/4/2020
Added
N/A
Removed
N/A
Changed
For security reason, upgrade log4j to version 2.13.2
Version 1.12.39, 5/3/2020
Added
Use RestEasy JAX-RS library
Removed
For security reason, removed Jersey JAX-RS library
Changed
- Updated RestLoader to initialize RestEasy servlet dispatcher
- Support nested arrays in MultiLevelMap
Version 1.12.36, 4/16/2020
Added
N/A
Removed
For simplicity, retire route-substitution admin endpoint. Route substitution uses a simple static table in route-substitution.yaml.
Changed
N/A
Version 1.12.35, 4/12/2020
Added
N/A
Removed
SimpleRBAC class is retired
Changed
- Improved ConfigReader and AppConfigReader with automatic key-value normalization for YAML and JSON files
- Improved pub/sub module in kafka-connector
Version 1.12.34, 3/28/2020
Added
N/A
Removed
Retired proprietary config manager since we can use the "BeforeApplication" approach to load config from Kubernetes configMap or other systems of config record.
Changed
- Added "isZero" method to the SimpleMapper class
- Convert BigDecimal to string without scientific notation (i.e. toPlainString instead of toString)
- Corresponding unit tests added to verify behavior
Version 1.12.32, 3/14/2020
Added
N/A
Removed
N/A
Changed
Kafka-connector will shutdown application instance when the EventProducer cannot send event to Kafka. This would allow the infrastructure to restart application instance automatically.
Version 1.12.31, 2/26/2020
Added
N/A
Removed
N/A
Changed
- Kafka-connector now supports external service provider for Kafka properties and credentials. If your application implements a function with route name "kafka.properties.provider" before connecting to cloud, the kafka-connector will retrieve kafka credentials on demand. This addresses case when kafka credentials change after application start-up.
- Interceptors are designed to forward requests and thus they do not generate replies. However, if you implement a function as an EventInterceptor, your function can throw exception just like a regular function and the exception will be returned to the calling function. This makes it easier to write interceptors.
Version 1.12.30, 2/6/2020
Added
- Expose "async.http.request" as a PUBLIC function ("HttpClient as a service")
Removed
N/A
Changed
- Improved Hazelcast client connection stability
- Improved Kafka native pub/sub
Version 1.12.29, 1/10/2020
Added
- Rest-automation will transport X-Trace-Id from/to Http request/response, therefore extending distributed trace across systems that support the X-Trace-Id HTTP header.
- Added endpoint and service to shutdown application instance.
Removed
N/A
Changed
- Updated SimpleXmlParser with XML External Entity (XXE) injection prevention.
- Bug fix for hazelcast recovery logic - when a hazelcast node is down, the app instance will restart the hazelcast client and reset routing table correctly.
- HSTS header insertion is optional so that we can disable it to avoid duplicated header when API gateway is doing it.
Version 1.12.26, 1/4/2020
Added
Feature to disable PoJo deserialization so that caller can decide if the result set should be in PoJo or a Map.
Removed
N/A
Changed
- Simplified key management for Event Node
- AsyncHttpRequest case insensitivity for headers, cookies, path parameters and session key-values
- Make built-in configuration management optional
Version 1.12.19, 12/28/2019
Added
Added HTTP relay feature in rest-automation project
Removed
N/A
Changed
- 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
Version 1.12.17, 12/16/2019
Added
- 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.
Removed
N/A
Changed
- Kafka publisher timeout value changed from 10 to 20 seconds
- Log a warning when Kafka takes more than 5 seconds to send an event
Version 1.12.14, 11/20/2019
Added
- 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
Removed
N/A
Changed
Updated Spring Boot to v2.2.1
Version 1.12.12, 10/26/2019
Added
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.
Removed
N/A
Changed
- logging framework changed from logback to log4j2 (version 2.12.1)
- Use JSR-356 websocket annotated ClientEndpoint
- Improved websocket reconnection logic
Version 1.12.9, 9/14/2019
Added
- Distributed tracing implemented in platform-core and rest-automation
- Improved HTTP header transformation for rest-automation
Removed
N/A
Changed
language pack API key obtained from environment variable
Version 1.12.8, 8/15/2019
Added
N/A
Removed
rest-core subproject has been merged with rest-spring
Changed
N/A
Version 1.12.7, 7/15/2019
Added
- 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)
Removed
N/A
Changed
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.
Version 1.12.4, 6/24/2019
Added
Add inactivity expiry timer to ObjectStreamIO so that house-keeper can clean up resources that are idle
Removed
N/A
Changed
- 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.
Version 1.12.1, 6/10/2019
Added
- 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.
Removed
N/A
Changed
N/A
Version 1.11.40, 5/25/2019
Added
- 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
Removed
System log service
Changed
Refactoring of Hazelcast event stream connector library to sync up with the new Kafka connector.
Version 1.11.39, 4/30/2019
Added
Language-support service application for Python, Node.js and Go, etc. Python language pack project is available at https://github.com/Accenture/mercury-python
Removed
N/A
Changed
- 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
Version 1.11.33, 3/25/2019
Added
N/A
Removed
N/A
Changed
- 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
Version 1.11.30, 3/7/2019
Added
Added retry logic in persistent queue when OS cannot update local file metadata in real-time for Windows based machine.
Removed
N/A
Changed
pom.xml changes - update with latest 3rd party open sources dependencies.
Version 1.11.29, 1/25/2019
Added
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
Removed
N/A
Changed
platform-core
Use Java Future and an elastic cached thread pool for executing user functions.
Fixed
N/A
Version 1.11.28, 12/20/2018
Added
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.
Removed
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.
Changed
N/A
Fixed
N/A