Redpanda v26.2 Release Notes
Features
- Redpanda Enterprise (excludes Redpanda BYOC/Dedicated/Serverless) now supports major version rollback via ‘unfinalized’ upgrades.
rpk cluster upgrade finalizeandrpk cluster upgrade statusmanage deferred (unfinalized) major-version upgrades. (#30930) - Shadowing from non-Redpanda Schema Registries using the HTTP Schema Registry API. rpk shadow provides support for the new Schema Registry Sync option
shadow_schema_registry_apiin Shadow Links. (#30860) - Schema Registry sync shadow links now enforce the link's
max_source_requests_per_secondsetting (default 30 requests/sec) when reading from the source registry, and honor a throttling source'sRetry-Afterresponse header. (#31101) - Schema Registry shadowing now exports its sync totals as
shadow_link_schema_registry_*counters on the internal and public metrics endpoints, labelled byshadow_link_name. (#31067) - Shadow links can now mirror RBAC roles from the source cluster to the destination. Configure role sync on the link with a sync interval and role-name filters to select which roles are kept in sync. (#30946)
- rpk now supports
role_sync_optionswhen creating a Shadow Link. (#30909) - Shadowing now supports Cloud Topics. (#30073)
- Tiered Storage V2 beta. A new
default_redpanda_storage_mode_tiered_implcluster config (tiered_v1|tiered_v2, defaulttiered_v1) selects whether thetieredvalue of theredpanda.storage.modetopic property refers to classic Tiered Storage or the new version of tiered storage. Tiered Storage v2 is a beta feature in v26.2. (#30966) - New read-only
redpanda.storage.mode.impltopic property reports the exact implementation of every topic's storage mode (unset|local|tiered_v1|tiered_v2|cloud), and can be supplied on topic creation to select the storage mode precisely. Topics using thetiered_v2implementation (beta) can only be created once the whole cluster runs v26.2. (#30966) - Schema Registry context support is now enabled by default. Subjects of the form
:.context:subjectare parsed into a separate context. See the upgrade considerations before upgrading clusters that may have stored literal:.-prefixed subject names. (#30365) - Schema Registry now accepts
/contexts/{context}/...prefixed URLs on all endpoints, allowing serde clients to target a non-default context by configuring their base URL (e.g.schema.registry.url=http://host:8081/contexts/.myctx). (#30189) - Add OAUTHBEARER SASL mechanism support to rpk, enabling OIDC-based authentication for the Kafka client, admin API, and schema registry. Pass the token via
--password(raw value ortoken:<TOKEN>format) with--sasl-mechanism OAUTHBEARER. (#30169) - #30222 Add OAUTHBEARER SASL mechanism support to the admin API endpoint used by
rpk debug remote-bundle start, enabling remote debug bundle collection against clusters configured with OAUTHBEARER authentication. (#30225) rpk debug remote-bundle startnow supports OAUTHBEARER (OIDC) profiles. Pass the bearer token via--password(orkafka_api.sasl.passwordin the rpk profile) whensasl.mechanismis OAUTHBEARER. (#30277)- Adds a new
layoutkey to the Iceberg translation mode as a config string, in the value section.layoutsupportsnestedandflat;flatis the default and matches previous behavior. (#30917) - Iceberg translation now supports schema registry contexts. Configure a topic to resolve schemas in a context via the
redpanda.schema.registry.contexttopic property. (#30132) - Added per-entity Kafka quota metrics. Set
kafka_per_entity_quota_metricstotrue(defaultfalse, no restart) to expose per-entity throttling and throughput counters for produce, fetch, and partition-mutation quotas. (#30832) - Add
rpk checkas a new managed plugin for production readiness validation. It checks cluster health, broker configuration, security settings, replication factors, licensing, TLS, and Kubernetes resource configuration against the official production readiness checklists. Supports auto-install, upgrade, and uninstall viarpk check install,rpk check upgrade, andrpk check uninstall. (#30146) - Add
rpk k8s, a new managed plugin for interacting with Redpanda clusters running on Kubernetes. On first use, rpk auto-downloads, checksum-verifies, and caches the plugin; manage it explicitly withrpk k8s install/upgrade/uninstall. (#30833) - Added an admin API endpoint to cancel an in-progress controller (raft0) reconfiguration. (#30918)
- Added
redpanda_cluster_health_*Prometheus metrics (public and internal endpoints) exposing the same inputs asrpk cluster health, includingnodes_down,leaderless_partitions,under_replicated_partitions,unhealthy_reasons, and ametadata_age_secondsfreshness gauge. Disabled by default; enable with the newhealth_monitor_metrics_enabledcluster property. (#30769) - Expose estimated cloud instance hardware capacity (vCPUs, memory, disk, network bandwidth, and IOPS) as Prometheus metrics, derived from the detected cloud instance type. (#30742)
rpk --print-treeemits the full rpk command tree as a single JSON document, suited for LLMs and automation. (#30380)rpk redpanda admin broker listnow includes a--detailedflag with additional per-path disk usage information, and supports the--format json/yamlflag. (#30096)- Added
rpk cloud auth tokento print the current cloud auth token. (#29964) - New metric
vectorized_kafka_leadership_changescounts leadership changes in a topic. (#30117) - New cluster config
oidc_http_proxy_urlroutes OIDC discovery and JWKS fetches through an HTTP forward proxy. Set to a URL of the formhttp://host:portorhttps://host:portto enable; leave unset (the default) to connect to the OIDC endpoint directly. Live-reloadable, no broker restart required. (#30268) - New cluster configs
oidc_http_proxy_username/oidc_http_proxy_passwordadd HTTP Basic authentication to the OIDC forward proxy; (#30738) - New configuration
iceberg_rest_catalog_credentials_host: the hostname to connect to for retrieving role-based credentials for the Iceberg REST catalog, for cases where the REST catalog uses a different credentials source than cloud storage. (#30284)
Improvements
max_concurrent_producer_idsandmax_transactions_per_coordinatornow default to 100,000 and 10,000 respectively (previously unlimited), reducing memory usage from accumulated producer state. Existing explicit overrides are unaffected. (#30058)- Prevent oversized allocations/OOMs when using a large number of ACLs in Redpanda. (#30967)
- Prevent oversized allocations in the Kafka layer when using large consumer groups. (#30744)
- The
schema_registry_cache_schema_countmetric now includes atypelabel (AVRO, JSON, PROTOBUF), replacing the single per-context gauge with one gauge per schema type per context. Dashboards or alerts that query this metric without filtering on type should be updated to sum across the label, e.g.sum by (context) (redpanda_schema_registry_cache_schema_count). (#30725) - Avoid potential oversized allocations in the segment index materialization path. (#30236)
- Iceberg Topics will stop creating new Parquet files if there is a large backlog of files not yet committed to the Iceberg catalog, and the Iceberg Topics Coordinator now commits to the catalog in chunks — both changes help avoid an OOM when the catalog has rejected Redpanda commits for a prolonged period. (#30958)
- Fixed unnecessary memory allocations/deallocations on the L0 write path in Cloud Topics. (#30980)
- Avoid recompression of unchanged batches in the local storage and Cloud Topics compaction implementation. (#30669)
- Optimize compaction logic, especially for large batches. (#30740)
- Optimize the ACL authorization path for all callers (Kafka handlers, schema registry, Pandaproxy, and Iceberg). (#30829)
- Optimize the
segment_meta_cstore::insert_entries()path for the generic append case. (#30601) - Adds a
kafka_fetch_read_coalescing_enabledcluster property. When enabled, partition reads and serialized responses for high fan-out workloads are shared instead of duplicated across responses. (#31010) - Make the fetch path more resilient to errors in single partitions. (#30097)
- Improve shadowing failover latency on shadow links with large topic counts. (#30089)
- Improves false positive detection in the cloud storage scrubber to filter out compacted reuploads. (#30062)
- Added a new cluster property
iceberg_default_schema_case_insensitive(yes/no/auto, defaultauto) that determines whether the Iceberg subsystem compares field names case-insensitively.autoattempts to detect this automatically for AWS Glue, which addresses a sporadic issue where Glue returns field names lower-cased instead of verbatim. (#30459) - Purging an Iceberg table managed by the filesystem catalog will now delete all of the table's files, not just the metadata files. (#30691)
- The Iceberg translation state REST endpoint now returns a partition state entry for every partition of the topic and reports the topic's
partition_count. (#30576) - The controller leader is now observable on the public metrics endpoint via the new
redpanda_raft_leader_forgauge (1 on the controller leader, 0 otherwise). (#30826) - Adds the option to configure Schema Registry to use internal RPCs for interacting with the schemas topic, removing the need for explicit authN/Z or ephemeral credentials. (#30046)
- Alters the behavior of restart-required cluster configs so that changes are invisible to Redpanda internals until a node actually restarts; pending changes and restart status still appear in the admin API as before. (#30109)
- Better guard against malformed requests when parsing Kafka messages. (#30191)
- Don't error on potentially unknown cluster properties when issuing removal requests through the admin API. (#30054)
- Downgraded the "attempted to load identical license, doing nothing" admin API log message from info to debug, reducing log noise when operators or automation reapply the same enterprise license on a schedule. (#30188)
- #18422 The internal HTTP client (cloud storage, IAM credential refresh, OIDC, metrics reporter) now tries all DNS-resolved addresses when connecting instead of just one, improving connectivity to dual-stack (IPv4/IPv6) endpoints and failing fast when an endpoint is down. (#30796)
rpk ai <sub>now reads the active cloud profile's cached AI Gateway URL and only contacts the public API when the cache is empty, removing an extra round trip on every plugin invocation. (#30327)rpk debug bundlenow samples/proc/interrupts,/proc/softirqs, and/proc/diskstatstwice so support can compute counter deltas. (#30279)rpk redpanda adminis deprecated and folded intorpk cluster. Userpk cluster brokersfor decommission/recommission,rpk cluster info -b --detailedto list brokers,rpk cluster config list --node-id <ID>to query a broker's view of the cluster config,rpk cluster loggers {list,set}to manage broker log levels, andrpk cluster partitions list --node-ids <ID>to filter partitions by broker. (#30332)- Redpanda's install setup script now downloads packages from
linux.pkg.redpanda.cominstead of Cloudsmith. (#30557) - Decommission may now cancel a stalled cluster node add. (#30377)
- Various internal consensus lifecycle improvements. (#31022)
- Add
--format json|yaml|text|helpto 20 rpk commands, including cluster maintenance status, cluster config status, profile list, plugin list, and more. (#30194) - Add
Group:principal support torpk security role assign/unassign, and remove the explicit--groupflag to prevent confusion. (#29987) - rpk: all column headers are now standardized to avoid whitespace, using hyphens instead of underscores. (#30310)
- Updated the default console image version in
rpk containercommands to v3.8.0. (#30954)
Bug Fixes
- Patched krb5 against CVE-2026-40355 (null pointer dereference) and CVE-2026-40356 (integer underflow) in NegoEx message parsing, both exploitable by an unauthenticated remote attacker to crash the process (CVSS 8.7). (#30537)
- Upgraded OpenSSL from 3.5.5 to 3.5.6 to address CVE-2026-31790, which could allow an attacker supplying a malformed RSA public key to trigger use of uninitialized memory during RSA key encapsulation. (#30238)
- Upgraded OpenSSL from 3.5.6 to 3.5.7 to resolve 10 CVEs (CVE-2026-45447, CVE-2026-45446, CVE-2026-45445, CVE-2026-42770, CVE-2026-42769, CVE-2026-42766, CVE-2026-42764, CVE-2026-34183, CVE-2026-34182, CVE-2026-34180). (#30797)
- Upgraded libxml2 to v2.15.3 to fix CVE-2026-6732, a type confusion vulnerability in XSD validation. (#30392)
- Upgraded the base container image from Ubuntu Noble to 24.04 to address a Snyk-flagged vulnerability. (#30694)
- Security: prevent the default OpenSSL config from being loaded from the host machine (
OPENSSL_CONFenv var or/etc/ssl/openssl.cnf) in self-hosted installations, ensuring only Redpanda configs control crypto and TLS settings. (#29763) - Prevents a potential oversized allocation in Kafka protocol parsing of tagged fields. (#30160)
- Avoid OOM under memory fragmentation when there are many ACLs. (#30368)
- Fixed a cloud topics epoch fencing race where a failed epoch bump could later admit a stale-epoch write, poisoning the partition log and crashing all replicas of the partition. (#31110)
- Fixed a potential broker crash (use-after-free) in the cloud topics metastore when accessing raft state during leadership changes. (#31048)
- Fixed a cluster membership lock that could occur when a node was decommissioned while being added as a controller (raft0) learner. (#30926)
- Fixed a reactor stall in the producer state cache when many producers are unevictable due to in-flight requests or open transactions. (#29991)
- Fixed a rare condition where Tiered Storage metadata spillover could get permanently stuck on partitions with small, frequent segments, leaving orphaned spillover manifest objects in the bucket. (#31081)
- Fixed internal topics being autocreated with incorrect properties. (#31236)
- Fixed compaction incorrectly assigning future timestamps to records compacted from strictly-past input. (#30998)
- #30815 Fixed a raft pre-vote livelock where a follower recovering behind a live leader could repeatedly start elections, leaving partitions under-replicated and stalling
acks=allproduce with request timeouts. (#30817) - Fixes a bug in OffsetForLeaderEpoch handling with tiered topics that could cause consumers to reset their fetch position to the beginning of the log held in cloud storage. (#31060)
- Fixes a bug in cloud topics compaction that could cause repeated no-op compactions if the topic uses retention or transactions. (#31122)
- Fixes a bug where Cloud Topics with the compact cleanup policy would have log retention policies applied to them. (#31104)
- Fixes a bug where fetches against tiered storage could fail when retention advances past all segments and new segments are added. (#30303)
- Fixes a crash that could occur in the Cloud Topics metastore upon certain errors during metastore database compaction. (#30730)
- Fixes a hang that could be caused by many concurrent multipart uploads. (#30919)
- Fixes a potential deadlock arising from a race between raft snapshots and transaction operations. (#30207)
- Fixes a rare crash due to a race condition between transaction-related operations and partition shutdown. (#30081)
- Fixes a rare race condition between snapshots and compaction of consumer offset partitions resulting in dangling open transactions. (#30071)
- Fixes a reactor stall seen when there are a large number of pending files in the Iceberg Topics coordinator. (#30868)
- Fixes a wedge in multi-output transforms where a produce failure on one output topic silently stalled the processor instead of restarting it. (#30836)
- Fixes an issue that prevented raft followers across high-RTT links from establishing connections long enough to receive heartbeat request replies. (#30486)
- Fixes an issue where cluster linking would not replicate the partition start offset. (#30996)
- Fix an issue where multi-part delete requests were rejected by ABS when using OAuth (unexpected headers). (#30133)
- Fix an issue where slow replication could cause audit log produce RPCs to pile up effectively unbounded, eventually exhausting memory on the server shard. (#30041)
- Fix an issue with Cloud Topics garbage collection where deleting all cloud topics could leave stale objects in the bucket forever. (#30200)
- Fix consumer group lag metrics inflated after retention or trim-prefix. (#30822)
- Fix consumer group lag metrics reporting 0 for read-replica topics. (#30873)
- Fixed shadow link replication advancing the shadow partition start offset past the source partition's start offset when a replicator resumes after a shadow partition leadership change. (#30785)
- Fixed the
vectorized_rpc_client_requests_pendinggauge drifting over time. (#30264) - Fix tiered storage I/O remaining throttled at the previously configured rate after
cloud_storage_max_throughput_per_shardwas unset. (#30319) - Fix an assertion crash in the cloud storage self-test when a multipart upload part failed mid-sequence. (#30344)
- Fix a process abort when the tiered storage cache's local disk fills up while a segment download is in progress on a non-zero shard. (#30335)
- Allow combining
aws_sigv4Iceberg REST catalog authentication with thestscloud credentials source. (#30548) - Correctly decode variable-length Avro decimal payloads on the ingest path. (#30516)
- Fix Iceberg map columns being unreadable from strict Parquet readers (e.g. Apache Spark) due to a missing
LogicalType.MAPannotation in the written Parquet schema. (#30454) - Fix corruption of negative decimal partition values in Iceberg manifests for decimal columns whose precision does not require 16 bytes (e.g.
decimal(10,2)). (#30516) - Fix parsing of Iceberg table metadata whose sort orders use the spec-canonical singular
source-idfield (e.g. metadata produced by Unity Catalog). (#30475) - Fix schema evolution incorrectly rejecting new optional Iceberg columns whose nested types contain structurally-required fields (e.g. maps, whose keys are always required). (#30585)
- Iceberg REST catalog credential refresh requests were being sent to the wrong host when
cloud_storage_credentials_hostwas set; the host override intended for cloud storage was being applied globally. (#30284) - The day partition transform now produces a date-typed partition column (matching the Iceberg spec) instead of an integer. (#30515)
- Fixed Avro schema lookup false negatives when equivalent nested primitive schemas used simple form (e.g.
"string") and object form (e.g.{"type":"string"}). (#30565) - Fixed schema registry returning a 40403 error when looking up Avro schemas that use unqualified named type references (e.g.
"Inner") against registered schemas using fully-qualified references (e.g."com.example.Inner") within the same namespace. (#30127) - #30374 Schema Registry: fixed protobuf compatibility checks incorrectly failing with
MESSAGE_REMOVEDwhen a map field is removed. (#30400) - #30398 Fixed a bug in the schema registry where adding a new required field to a JSON schema was incorrectly allowed under
BACKWARDcompatibility mode. (#30525) - #30414 Fixed a bug where a double metric registration could occur when STS credentials were used for both Iceberg and Tiered Storage systems. (#30489)
- Fixed a leak in the Iceberg translation subsystem where per-partition metrics were not released after a partition was removed from a broker. (#30701)
- Fixed a spurious storage
parser.cc — Stopping parser, short readerror that could be logged when a segment was flushed concurrently with an in-flight append (e.g. during raft recovery). (#30660) - REST proxy and schema registry now return
{"error_code": 404, "message": "..."}for unmatched routes, matching the envelope clients already parse. (#30417) - Metrics that previously ignored
disable_public_metrics(raft_learners_gap_bytes,cluster_members_backend_queued_node_operations,cluster_partition_num_with_broken_rack_constraint) now honor it. (#30720) - Changes to
cloud_storage_throughput_limit_percentnow take effect at runtime instead of being ignored until restart. (#30230) - Invalidates LSM iterators when exceptions are thrown. (#30348)
- admin:
GET /v1/cluster/health_overviewnow always includesnodes_in_recovery_mode, even when empty. (#30640) - report Iceberg-disabled topics as
DISABLEDin thetranslation_stateresponse. (#30761) - rpk/debug/bundle: dedup admin addresses across host forms. (#30403)
Full changelog: v26.2.0-dev...v26.2.1