Skip to content

Commit 7bd57b1

Browse files
authored
Merge pull request #88 from SamBarker/announce-0.9.0
Announce 0.9.0
2 parents 4fc6a24 + f913bb6 commit 7bd57b1

File tree

1 file changed

+43
-0
lines changed

1 file changed

+43
-0
lines changed

_posts/2024-12-17-release-0_9_0.md

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
layout: post
3+
title: "Kroxylicious release 0.9.0"
4+
date: 2024-12-17 00:00:00 +0000
5+
author: "Sam Barker"
6+
author_url: "https://github.com/SamBarker"
7+
# noinspection YAMLSchemaValidation
8+
categories: kroxylicious releases
9+
tags: [ "releases", "kroxylicious", "kafka 3.9" ]
10+
---
11+
12+
The Kroxylicious project is very pleased to announce the release of [Kroxylicious 0.9.0](https://github.com/kroxylicious/kroxylicious/releases/tag/v0.9.0). This release introduces support for Apache Kafka 3.9.
13+
14+
We generally expect Kroxylicious to be both forwards- and backwards-compatible across Kafka versions just like the Apache Kafka client and broker. While we tested with pre-release versions of Apache Kafka 3.9 we discovered after it was released that we had missed a case in the protocol version negotiation. When the version of the `ApiVersions` RPC was updated we were unable to decode the response. In the 0.9.0 release we adopt the same behaviour as the Kafka broker and respond with API version 0 if we do not support the protocol version requested by the client - we have also expanded our test coverage to get earlier warnings of similar issues in the future.
15+
16+
This release also marks the introduction of our new state machine for handling connections. We have evolved the state machine at the core of the proxy to separate out the state carried at various stages of the connection lifecycle and provide stronger rules around transitions between states. This is still a work in progress due to the wide-ranging implications it has, however we think it gives us a stronger core to base everything else around. This does, for the moment, limit our ability to offer authentication offload support, we do intend to restore this eventually (please do get in touch if this use case is important to you via [Slack](https://kroxylicious.slack.com) or [GitHub](https://github.com/kroxylicious/kroxylicious/issues) or even [bsky](https://bsky.app/profile/kroxylicious.io)).
17+
18+
There are many quality of life improvements in [this release](https://github.com/kroxylicious/kroxylicious/releases/tag/v0.9.0) (in no particular order)
19+
20+
- Ensure we now respond with errors instead of closing the connection when there are problems encrypting records ([#1630](https://github.com/kroxylicious/kroxylicious/pull/1630)).
21+
- We've made it easier for Filter authors to generate error responses of their own ([#1630](https://github.com/kroxylicious/kroxylicious/pull/1630)).
22+
- We realised forwarding partial requests from the record validation filter in the face of validation failures was a bad idea so it now rejects the whole batch ([#1657](https://github.com/kroxylicious/kroxylicious/pull/1657)).
23+
- We can now use EC2 instance metadata to authenticate against AWS Key Management Service ([#1442](https://github.com/kroxylicious/kroxylicious/pull/1442)).
24+
- We now support mutual TLS authentication on the downstream (or client side) of the proxy ([#1631](https://github.com/kroxylicious/kroxylicious/pull/1631)).
25+
- Key Management Systems (KMS) now have more lifecycle callbacks to better manage shared resources ([#1498](https://github.com/kroxylicious/kroxylicious/pull/1498)).
26+
- We now default to Log4J 2 [Async logging](https://logging.apache.org/log4j/2.x/manual/async.html) - this is mostly a performance optimisation, but we think it should address some issues we have observed with logging in kubernetes environments ([#1673](https://github.com/kroxylicious/kroxylicious/pull/1673)).
27+
28+
This release upgrades Kroxylicious to Jackson 2.18 which [changes](https://github.com/FasterXML/jackson-databind/issues/4785#issuecomment-2463105965) how Jackson handles constructor detection, which may lead to issues when parsing config for custom filters.
29+
If after the upgrade you observe issues similar to
30+
```
31+
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Invalid type definition for type `com.fasterxml.jackson.databind.tofix.CreatorResolutionTest$HostPort`: Argument #0 of Creator [method com.fasterxml.jackson.databind.tofix.CreatorResolutionTest$HostPort#parse(java.lang.String)] has no property name (and is not Injectable): can not use as property-based Creator
32+
```
33+
then you need to add `@JsonCreator(mode = JsonCreator.Mode.DELEGATING)` to the constructor one expects Jackson to use.
34+
35+
See the [Changelog](https://github.com/kroxylicious/kroxylicious/blob/main/CHANGELOG.md#090) for a full list of changes and summary of Deprecations, Changes and Removals.
36+
37+
Lastly, we are very pleased to announce that this Kroxylicious release contains first time contributions from:
38+
- [Calum Murray](https://github.com/Cali0707)
39+
- [Alan Robinson](https://github.com/alanrobinson-dwp)
40+
41+
### Feedback
42+
43+
Please let us know, through [Slack](https://kroxylicious.slack.com), [GitHub](https://github.com/kroxylicious/kroxylicious/issues) or even [bsky](https://bsky.app/profile/kroxylicious.io)), if you find the project interesting or helpful and especially if you have deployed it in production.

0 commit comments

Comments
 (0)