Releases: aiven/inkless
Inkless 0.38
Inkless version 0.38
Docker Images
docker pull ghcr.io/aiven/inkless:0.38
docker pull ghcr.io/aiven/inkless:latestKafka Versions
- Kafka 4.1.2:
inkless-4.1.2-0.38
What's Changed
- feat(inkless:config): Enforce diskless.allow.from.classic.enable by @giuseppelillo in #546
- feat(inkless): Parse request and response of InitDisklessLog by @giuseppelillo in #545
- feat(inkless): Orchestrate classic-to-diskless migration by @giuseppelillo in #536
- feat(inkless:metadata): Remove topic already diskless from InitDisklessLog Controller API by @giuseppelillo in #547
- MINOR: update Kafka version variables to 4.2.0-inkless-SNAPSHOT by @giuseppelillo in #548
- refactor(inkless): Refactor InitDisklessLog flow and add integration tests by @giuseppelillo in #549
- fix(inkless:metrics): Fix double-counting of diskless topic and partition metrics by @jeqo in #552
- fix(inkless:consume): handle error path in lastOffsetForLeaderEpoch by @jeqo in #554
- fix(inkless:migration): bypass diskless/remote-storage mutual exclusion for classic-to-diskless migration by @jeqo in #555
- feat(inkless): allow reading from UnifiedLog for diskless topics by @giuseppelillo in #553
- fix(inkless:migration): fix classic-to-diskless migration validation by @jeqo in #558
- feat(inkless:docker): add diskless tiered storage unification demo by @jeqo in #559
- feat(inkless:config): enforce diskless feature flag dependency chain by @jeqo in #560
- feat(inkless): POD-2386 Allow remote.storage.enabled when diskless is enabled by @viktorsomogyi in #556
- refactor(inkless): Split InitDisklessLogManager logic into separate components by @giuseppelillo in #561
- MINOR: Fix potential leak when closing resources by @jlprat in #565
- fix(inkless:migration): Fix InitDisklessLogManager gaps during partition registration by @giuseppelillo in #566
- fix(inkless): Add InitDisklessLog JSON conversion to RequestConvertToson by @giuseppelillo in #570
- feat(inkless): Init diskless log on Control Plane by @giuseppelillo in #563
- refactor(inkless): Rename disklessStartOffset to classicToDisklessStartOffset by @giuseppelillo in #572
- feat(inkless:consume): Add time-to-first-byte (TTFB) metric for storage reads by @jeqo in #575
- feat(inkless): POD-2392 Implement consolidating partition tracking by @viktorsomogyi in #567
- feat(inkless): Abort transactions on partition sealing by @giuseppelillo in #573
- fix(inkless:migration): Avoid deadlock in InitDisklessLogBatchQueue by @giuseppelillo in #578
- fix(inkless): Create Partition object even when diskless is enabled by @giuseppelillo in #574
- feat(inkless): Set migrating partitions in KRaft metadata by @giuseppelillo in #580
- fix(cache): respect max-idle=-1 (disable idle eviction) by @AnatolyPopov in #470
- feat(inkless): POD-2393 Add DisklessLeaderEndPoint to handle fetch requests by @viktorsomogyi in #568
- feat(inkless): POD-2398 Integration test for consolidation produce path by @viktorsomogyi in #569
- feat(inkless): Support basic ListOffset for hybrid topics by @giuseppelillo in #577
- fix(inkless): Stop replicating after migration to diskless is completed by @giuseppelillo in #585
- feat(inkless): POD-2394 Implement read path for consolidated logs by @viktorsomogyi in #583
- feat(inkless): Support ListOffsets for all cases of diskless partitions by @giuseppelillo in #584
New Contributors
- @viktorsomogyi made their first contribution in #556
Full Changelog: inkless-release-0.37...inkless-release-0.38
Inkless 0.37
Inkless version 0.37
Docker Images
docker pull ghcr.io/aiven/inkless:0.37
docker pull ghcr.io/aiven/inkless:latestKafka Versions
- Kafka 4.0.2:
inkless-4.0.2-0.37 - Kafka 4.1.2:
inkless-4.1.2-0.37
What's Changed
Some important refactoring and bug-fixes where introduced:
- feat(produce): optimize AppendCompleter to complete futures first by @Mwea in #529
- refactor(inkless): cache LogConfig in InklessMetadataView by @jeqo in #474
- refactor(inkless): improve thread pool lifecycle management by @jeqo in #475
- feat(inkless): add bytes limit to cache by @jeqo in #544
- refactor(inkless:consume): replace ByteRange.coalesce with BoundingRangeAlignment strategy by @jeqo in #532
Ongoing development of classic-to-diskless topic switcher feature has been merged:
- feat(storage:inkless): InitDisklessLog Diskless Controller API by @giuseppelillo in #528
- feat(metadata:diskless): implement managed replicas for diskless topics by @jeqo in #492
- feat(metadata:diskless): add controller metrics for diskless topics by @jeqo in #503
- feat(inkless): implement InitDisklessLog Controller API by @giuseppelillo in #531
- feat(inkless): Seal the local log when a topic is migrated from classic to diskless by @giuseppelillo in #533
- feat(diskless): add managed replicas routing to metadata transformer by @jeqo in #504
- feat(inkless): Add metrics for sealed partitions by @giuseppelillo in #534
- feat(storage:inkless): add control plane method for getting the producer states by @giuseppelillo in #530
- refactor(metadata:diskless): preserve leader epoch in metadata by @jeqo in #539
- feat(controller:diskless): enable immediate partition reassignment by @jeqo in #537
- feat(controller:diskless): add partitions support for diskless topics by @jeqo in #540
- feat(inkless): Expose InitDisklessLog controller API by @giuseppelillo in #541
- test(metadata:diskless): add integration tests for managed replicas by @jeqo in #542
- docs(docker:inkless): add managed replicas demo with test procedure by @jeqo in #543
- docs(inkless): add managed replicas documentation by @jeqo in #535
Tooling for our releases and upstream sync procedures have been merged as well:
New Contributors
Full Changelog: inkless-release-0.36...inkless-release-0.37
Release 0.36
What's Changed
- fix(inkless): Fix error message when diskless.enable and remote.stora… by @giuseppelillo in #516
- chore(build): Set Docker API version 1.44 in Gradle config by @giuseppelillo in #519
- fix(inkless:test): Fix KafkaConfigTest for CLASSIC_REMOTE_STORAGE_FORCE_EXCLUDE_TOPIC_REGEXES_CONFIG by @giuseppelillo in #521
- feat(inkless:config): disallow setting diskless.enable if diskless storage system is disabled by @giuseppelillo in #520
Full Changelog: inkless-release-0.35...inkless-release-0.36
Docker Images
docker pull ghcr.io/aiven/inkless:0.36
docker pull ghcr.io/aiven/inkless:latestKafka Versions
- Kafka 4.0.0:
inkless-4.0.0-0.36 - Kafka 4.1.1:
inkless-4.1.1-0.36
Release 0.35
What's Changed
- chore(inkless:release): add gh workflows to release inkless artifacts by @jeqo in #489
- chore(inkless): Update demo and documentation for GHCR images by @jeqo in #497
- chore(inkless:sync): upstream Apache Kafka 2025-11-21 (before 4.3.0-SNAPSHOT) by @jeqo in #499
- chore(ci): replace usage of JDK 23 with 25 by @giuseppelillo in #502
- chore(ci): use Docker API version 1.44 by @giuseppelillo in #509
- Disallow setting remote.storage.enable when diskless.enable is set to true by @giuseppelillo in #513
- feat(metadata): Introduce ClassicTopicRemoteStorageForcePolicy by @giuseppelillo in #514
- storage: add metrics constructor to InMemoryStorage by @jjaakola-aiven in #510
Full Changelog: inkless-release-0.34...inkless-release-0.35
Kafka-base tags
- Kafka 4.0:
inkless-4.0.0-0.35 - Kafka 4.1:
inkless-4.1.1-0.35
Docker images
docker pull ghcr.io/aiven/inkless:4.1.1-0.35
docker pull ghcr.io/aiven/inkless:4.0.0-0.35Release 0.34
What's Changed
- docs(inkless): add az-alignment feature documentation by @jeqo in #481
- docs(inkless): fix relation with kips on client-az awareness by @jeqo in #485
- docs(inkless): fix performance docs by @jeqo in #482
- docs(inkless): update readme with new sections and glossary by @jeqo in #483
- docs(inkless): update architecture diagram by @jeqo in #487
- refactor(metadata:diskless): fail on topic creation with replica assignment by @jeqo in #488
- chore(storage:inkless): add jooq classes by @jeqo in #490
- fix(storage:metrics): eagerly initialize meters with only topicType tag by @jeqo in #493
- Allow switching diskless.enable from false to true by @giuseppelillo in #486
Full Changelog: inkless-release-0.33...inkless-release-0.34
Kafka-base tags
- Kafka 4.0:
inkless-4.0.0-0.34 - Kafka 4.1:
inkless-4.1.1-0.34
Docker images
docker pull ghcr.io/aiven/inkless:4.1.1-0.34
docker pull ghcr.io/aiven/inkless:4.0.0-0.34Release 0.33
What's Changed
- refactor(inkless:metrics): only add topic-type tag on all topic stats by @jeqo in #472
- docs(inkless): add versioning strategy by @jeqo in #479
Full Changelog: inkless-release-0.32...inkless-release-0.33
Kafka-base tags
- Kafka 4.0:
inkless-4.0.0-0.33 - Kafka 4.1:
inkless-4.1.1-0.33
Docker images
docker pull ghcr.io/aiven/inkless:4.1.1-0.33
docker pull ghcr.io/aiven/inkless:4.0.0-0.33Release 0.32
Inkless Release 0.32
This release marks the transition to a new versioning strategy for Inkless. Going forward, versions use a global iteration counter that
is comparable across Kafka base branches. See versioning strategy for details.
Versioning change
Previous format: inkless-<kafka-version>-rc<N> (per-branch counters)
New format: inkless-<kafka-version>-<inkless-version> (global counter)
This makes it clear when different Kafka-based builds contain the same Inkless features.
Kafka-base tags
- Kafka 4.0.0:
inkless-4.0.0-rc32 - Kafka 4.1.1:
inkless-4.1.1-rc1
Changes since inkless-4.0.0-rc31 (636a1ea)
- Rate-limited fetch for lagging consumers (#467)
- Non-blocking fetch completion (#464)
- Remote fetches run only on data executor (#466)
Baseline
Based on commit d6c49967b15c. Subsequent releases will increment from 0.33.
4.0.0-inkless-rc32
inkless-4.0.0-rc32 feat(inkless:consume): add rate-limited fetch for lagging consumers (…
v4.1.0-inkless-SNAPSHOT 2025-06-02 1748876737
fix(inkless): measure commit wait from submission (#311) Instead of measuring the uncovered "wait for upload", start measuring the time since submission, to account for the wait time on the single threaded pool.
4.0.0-inkless
chore(inkless): add jooq classes