# Release 3.5.1 (/release-notes/v3-5-1)



**Released September 27, 2026.** Kafka share groups (KIP-932) are generally available, and kmq can update itself. The operator and the Helm chart are unchanged from [3.5.0](/release-notes/v3-5-0).

## Artifacts [#artifacts]



| Artifact                 | Version                                                                       |
| ------------------------ | ----------------------------------------------------------------------------- |
| kmq                      | `v3.5.1`                                                                      |
| Server image             | `europe-docker.pkg.dev/kubemq/images/kubemq-next:v3.5.1`                      |
| Server image (FIPS)      | `europe-docker.pkg.dev/kubemq/images/kubemq-next-fips:v3.5.1`                 |
| Operator image           | `europe-docker.pkg.dev/kubemq/images/kubemq-operator-next:v3.4.0` (unchanged) |
| Helm chart `kubemq-next` | 3.4.0 (unchanged; it installs server `v3.5.0`)                                |

## Before you upgrade [#before-you-upgrade]

* **Kafka share groups: upgrade every server before share traffic resumes.** This release adds new cluster commands for share groups, controlled by `CONNECTORS_KAFKA_SHARE_FEATURE_VERSION` (default `2`). A server still on an older release stops when it meets one of them, and keeps stopping until it is upgraded; on a 3-server cluster this can cost the cluster its majority. Before a rolling upgrade, do one of these:

  * Stop share consumers and per-group configuration changes until every server runs 3.5.1, then upgrade normally.
  * Set `CONNECTORS_KAFKA_SHARE_FEATURE_VERSION=1` on each server as you upgrade it, and raise it to `2`, with a restart, once every server is upgraded. At `1`, the new share-group features are unavailable: share groups cannot be deleted, per-group configuration writes and `read_committed` share groups are refused, and lock renewal is off.

  Downgrading is supported only if the setting stayed at `1` the whole time. Do not set `share.isolation.level=read_committed` until every server runs 3.5.1.
* **New share groups start at the latest offset**, as in Apache Kafka. Existing groups keep their position. To start new groups at the earliest offset, as before, set `CONNECTORS_KAFKA_SHARE_AUTO_OFFSET_RESET=earliest`.
* **Share groups count against `CONNECTORS_KAFKA_MAX_GROUPS`**, the limit that already applies to classic consumer groups. A share group counts until `DeleteGroups` removes it.
* **Rolling restarts count a delivery attempt.** Every share record in flight when a partition's leader changes counts one delivery attempt, including on each server restart of a rolling upgrade. Keep the per-group delivery limit at the default of 5 or higher.

## Changes [#changes]

* **Kafka share groups are generally available**, certified with the Java `KafkaShareConsumer` 4.3 and the Kafka 4.3 console tools on a single server and on 3-server clusters. See [Share groups](/connectors/kafka/how-to/share-groups).
* **Share-group administration:** `ListGroups` with the type filter, `DeleteGroups` once no consumer is attached, per-group settings through `kafka-configs.sh --entity-type groups`, and `read_committed` share groups.
* **Share-group monitoring:** the `kubemq_kafka_share_group_lag`, `kubemq_kafka_share_group_in_flight` and `kubemq_kafka_share_group_redelivered` metrics, `GET /api/kafka/share-groups`, share groups on the dashboard's consumer-groups tab, and `kmq kafka share-groups`.
* **Kafka fixes:** a node that became the Kafka coordinator right after it became ready now loads the committed offsets, and a clustered topic-configuration reload that fails no longer serves empty settings or loses an acknowledged change.
* **kmq updates itself.** `kmq update` installs the latest kmq release, and `kmq version --check` reports whether a newer one exists. On Windows the update is scheduled rather than applied at once.

## Known issues [#known-issues]

* Images are published for `linux/amd64` only. Release [3.5.2](/release-notes/v3-5-2) adds `linux/arm64`.
* No default connector image is published. Set `spec.image` on every `KubemqConnector`.
