# Dragonfly v1.40.2 - Product: Dragonfly (https://whatsnew.fyi/product/dragonfly) - Vendor: DragonflyDB - Date: 2026-09-03 - Version: v1.40.2 - Original notes: https://github.com/dragonflydb/dragonfly/releases/tag/v1.40.2 - Permalink: https://whatsnew.fyi/product/dragonfly/releases/v1.40.2 What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. --- - **fixed** — Values loaded during full sync or RDB-DFS load are no longer incorrectly pushed into the cool-tier cache - **changed** — Replace separate write-depth limit with single tiered_max_pending_bytes cap covering both in-flight reads and writes, and export read/write/total usage as metrics - **added** — Add tiered_serialization_inflight_bytes_cap to throttle snapshot serialization when too many outstanding tiered reads exist, preventing unbounded memory growth - **fixed** — Bound small-bins traversal with TraverseBySegmentOrder to prevent entries from being skipped or revisited when the table resizes mid-scan - **added** — Export small-bin entries-bytes usage in metrics and INFO - **added** — Add background repack scan that repacks small-bins buckets with excessive wasted space, disabled by default with tiered_repack_scan_budget_us=0 - **fixed** — Bound DeleteExpiredStep traversal with TraverseBySegmentOrder - **fixed** — Fix journal omit breaking on stash bucket - **changed** — Split journal omit optimization into two independent decisions for skipping forced snapshot serialization versus skipping journal write, and add TTL propagation for EXPIRE writes that skip serialization - **fixed** — Fix memory-accounting bug and journal FLUSHSLOTS from inside flush transaction to avoid replication inconsistency during slot migration - **fixed** — Reject memcached keys longer than 250-byte protocol limit to prevent unbounded VALUE reply buffer overflow ###### What's Changed **Tiered storage (disk offload)** * fix(tiering): Don't cool on load — values loaded during full sync / RDB-DFS load were incorrectly pushed into the cool-tier cache; loading is no longer treated as a candidate for cooling since it isn't client traffic. * fix(tiering): Replace the separate write-depth limit with a single `tiered_max_pending_bytes` cap that covers both in-flight reads and writes, and export read/write/total usage as metrics. * fix(tiering): Add `tiered_serialization_inflight_bytes_cap` — snapshot serialization now throttles/waits when there are too many outstanding tiered reads, preventing unbounded memory growth from delayed entries during snapshotting. * fix: Bound small-bins traversal with `TraverseBySegmentOrder` (same class of fix as `DeleteExpiredStep` in #8129), preventing entries from being skipped or revisited when the table resizes mid-scan; also exports additional tiering metrics/settings. * fix: Export small-bin entries-bytes usage in metrics/`INFO`. * feat(tiering): Add a background "repack scan" that repacks small-bins buckets with excessive wasted space; **disabled by default** (`tiered_repack_scan_budget_us=0`). **Replication / journal** * fix(server): Bound `DeleteExpiredStep` traversal with `TraverseBySegmentOrder` (#8129) * fix(server): Fix journal omit breaking on stash bucket (#8157) * fix(server): Split the "journal omit" optimization into two independent decisions — skipping forced snapshot serialization vs. skipping the journal write — since the former no longer requires the latter; also adds TTL propagation for `EXPIRE` writes that skip serialization. * backport(cluster): Fix memory-accounting bug and journal `FLUSHSLOTS` from inside the flush transaction, avoiding replication inconsistency during slot migration (#8061, backports #8032) **Protocol** * fix(facade): Reject memcached keys longer than the 250-byte protocol limit (#8213). Previously, a long key (e.g. written via the Redis port) could be echoed back unbounded in a memcached `VALUE` reply, overflowing the reply buffer. Advisory: it is advised to upgrade to this release due to the correctness bug with journaling #8157