Changelog
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.
[1.3.4] - 2024-11-19
Fix
- the logic of provided cast function
castToDate
has been overhauled, so that dates represented as Unix timestamp in millisecond that ranges from-2147483648
(1969-12-07T03:28:36.352Z
) to2147483647
(1970-01-25T20:31:23.647Z
) are now properly converted into their expected date.
[1.3.3] - 2024-10-25
Fix
- Bug introduced with version
v1.3.2
, where insufficient service permissions prevented GraalVM cache to be initialized when custom cast functions were employed.
[1.3.2] - 2024-10-18
Fix
- introduce support for TLS/SSL connection for storage component
[1.3.1] - 2024-09-24
Fixed
- When Control Plane Operator closes the grpc client the Projection Storer is able to reconnect to it again when it re-opens without having to restart the service
Update
- update service dependencies and Java build image to
21.0.4_7-jdk-jammy
[1.3.0] - 2024-06-04
Added
- added support for JS ESM modules, in particular
- support for new cast function signature, that is:
export default function(messageObject, fieldName, logger) {
const myValue = messageObject[fieldName]
// do some custom logic...
return myValue
} - kafka message adapter can be loaded as ESM modules, for example:
export default function myEsmMessageAdapter(message, primaryKeys, logger) {
// ...adapter logic
}
- support for new cast function signature, that is:
Fixed
- cast function are executed with their own separate bindings, to avoid naming clash.
- when a Javascript custom cast function returns a mixed untyped Object (e.g.
[1, 2, 1.2]
), now the service properly maps the type of each element into the internal one.
[1.2.3] - 2024-05-27
Fixed
- when a Javascript custom cast function returns a Javascript Date object, now the service properly maps the type into the internal one
[1.2.2] - 2024-05-16
Changed
- when the storage component receives an empty list of projection records, instead of treating it as an error now it logs a warning message and it proceeds processing the other topic-partition ingestion events
[1.2.1] - 2024-05-07
Changed
- now Kafka consumer enters an unhealthy state as soon as a single partition reaches the maximum number of processing attempts
[1.2.0] - 2024-05-03
Added
- extend configuration parsing capabilities, so that secrets can be either written directly as plaintext
in the configuration file, loaded from an environment variable or from a file (one file per secret or
using a
.ini
file to group multiple secrets under the same file)
[1.1.1] - 2024-04-23
Added
- introduce support for GRPC as communication protocol in Runtime Management component
Changed
- improved logging messages for internal communication errors to clarify their cause and how to solve it
- Kafka consumer rebalance logic has been revised, adding a deadline to the wait for records processing end. In this manner rebalance operations do not hang indefinitely
Fixed
- when internal timeout error (
FD_PS_E7001
) is raised, now the service does not hang indefinitely when it is stopped
[1.1.0] - 2024-04-12
Added
- introduce support for Runtime Management features, such as pause and resume of consumption from ingestion topics
Changed
- set ingestion consumer to adopt
org.apache.kafka.clients.consumer.StickyAssignor
partition assigner - relax the constraint where an ingestion consumer was not ready when no partition was assigned to it
- relax Kafka configuration constrain on auto topic creation
Fixed
- when any projection-update topic configuration is not provided, the service now warns the user that the configuration is missing such topics, instead of throwing. This enables use cases where the only goal of projection storer is to ingest change events, process and store them without notifying downstream components
[1.0.1] - 2023-12-19
Fixed
- when an ingestion event representing a
DELETE
operation is processed, in case it is not possible to extract thebefore
property from the message itself, the service tries to retrieve it from the storage system. In case it does not find it, thebefore
property of theDELETE
operation is then set to the projection record's key as fallback. - when employing
custom
message adapter, when an empty payload is received, it ensured that a buffer of zero length is sent to the user-defined implementation. In this manner, they can design their own logic to properly treat such cases.
Changed
- service dependencies were updated
- unused error codes were removed
[1.0.0] - 2023-11-09
This is the initial release of Projection Storer service. A brief overview regarding the service can be found here while an in depth explanation describing how to configure the service can be found here