D

Dragonfly

D
Dragonfly Database v2.1

v2.1

Dragonfly v2.1 This release is important because starting from this version, it changes how teams can use our software in production. Starting from v2.1.0 the project moves from BUSL-1.1 to the Dragonfly Source-Available License (DSAL). For more details, please read https://www.dragonflydb.io/blog/introducing-dragonfly-enterprise Besides this much of the work is hardening. ACL enforcement is stric…

D
Dragonfly Database v2.1.0

v2.1.0: feat(metrics): export snapshot and replica disconnect counters (#8740)

Export two pieces of persistence and replication state that were only visible in INFO or in the logs: dragonfly_rdb_serialize_total: INFO's rdb_save_count, which counts record writes of single-file RDB serialization rather than completed saves. dragonfly_save_in_progress: 1 while a background save runs. dragonfly_replica_disconnects_total{reason="closed|error|timeout"} on the master. A replica dro…

D
Dragonfly Database v0.5

i2.0.5: fix(server): spread slot-based sharding with Fibonacci hashing

With --experimental_cluster_shard_by_slot, Shard() mapped keys with KeySlot(key) % shard_num. CRC16 slots of structured key sets can share a residue modulo the shard count, piling keys onto a single shard thread. Map the slot through Fibonacci hashing and a multiply-shift range reduction instead. This breaks slot-number patterns while keeping contiguous slot ranges evenly balanced, and avoids the…

D
Dragonfly Database v40.12

i1.40.12

fix(server): Conclude single shard BLMOVE in one hop when data is ava…

D
Dragonfly Database v0.4

i2.0.4: fix(server): Fix omits cause inconsistencies during migrations

Port of #8619 to the v2.0 branch. The migration streamer traversed buckets with visit_empty=false, so empty buckets were never stamped with the snapshot version. Journal omits into those empty buckets (behind the traversal cursor) were then silently dropped, causing inconsistencies on the target during slot migration. RestoreStreamer::Run now visits empty buckets so ProcessBucket stamps them with…

D
Dragonfly Database v2.0.2

v2.0.2

This is a patch release. What's Changed Fixed a crash when DFLYMIGRATE was sent to a server that is not in cluster mode. It now returns the standard "Cluster is disabled" error (#8290). Fixed a crash on glob patterns with many * wildcards in KEYS, SCAN/HSCAN/SSCAN/ZSCAN MATCH, ACL key patterns, PSUBSCRIBE and CONFIG GET. Matching is now iterative, so it no longer overflows the fiber stack, and it…

D
Dragonfly Database v0.1

i2.0.1: fix(facade): track partial-send progress in SinkReplyBuilder (#7536)

fix(facade): track partial-send progress in SinkReplyBuilder SinkReplyBuilder::Send() called Write(), which hides the partial-write loop, and stamped the send timestamp only once. On slow or throttled links a send that was still progressing looked stuck: send_delay_seconds and send-wait-time kept growing, and --send_timeout closed live connections. Narrow the builder's sink to util::FiberSocketBas…

D
Dragonfly Database v2.0.0

v2.0.0

Dragonfly v2.0.0 We have been waiting three years to bump the major version. While this specific release does not add new major features by itself, it marks a significant milestone in our maturity, performance, and production readiness. Dragonfly v2.0.0 expands Redis and Valkey compatibility with Valkey 9 RDB loading, GEOSEARCHSTORE, and improved replication backlog controls. Performance work redu…

D
Dragonfly Database v40.8

i1.40.8: fix(server): make connection memory accounting constant time (#8245)

Track subscription and WATCH allocations at mutation sites, reuse MULTI byte totals, and cache ACL glob memory when credentials are installed. Keep a single O(1) memory-accounting path and make recursive container traversal explicit. Adapt the backport to v1.40 without introducing script ACL snapshots or authentication expiry. Preserve existing script behavior and save AUTH's selected database bef…

D
Dragonfly Database v1.40.2

v1.40.2

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 writ…

D
Dragonfly Database v40.6

i1.40.6

fix(server): Extend journal omits to omit only on-change, add support…

D
Dragonfly Database v40.4

i1.40.4

feat(tiering): Repack scan (disabled by default)

D
Dragonfly Database v40.3

i1.40.3

fix: export small bins entries bytes in metrics

D
Dragonfly Database v40.2

i1.40.2: backport: mem accounting fix, journal flushslots in tx (#8061)

backport: semantic backport of mem accounting fix from 2ce7149 Signed-off-by: Abhijat Malviya abhijat@dragonflydb.io fix(cluster): journal FLUSHSLOTS from inside the flush transaction (#8032) fix(cluster): journal FLUSHSLOTS from inside the flush transaction fix: review comments (cherry picked from commit 50eea0c) Signed-off-by: Abhijat Malviya abhijat@dragonflydb.io Co-authored-by: Volodymyr Yavd…

D
Dragonfly Database v1.40.1

v1.40.1

This is a patch release. What's Changed Fixed connection-state handling in squashed pipelines. Commands following AUTH, SELECT, HELLO, CLIENT, or RESET now observe the updated connection state instead of stale authentication, database, or RESP protocol state (#8016). Fixed compressed QList node memory accounting and defragmentation (#8011, #8014). Full Changelog: v1.40.0...v1.40.1

D
Dragonfly Database v1.40.0

v1.40.0

Dragonfly v1.40.0 This is one of our biggest releases yet—both in terms of feature quality, total contributions, and the highest number of external contributors in the last two years. This release delivers major new functionality alongside a large body of correctness and stability fixes for tiered storage, replication, pub/sub, and the experimental V2 I/O loop. We added a new data type: Cuckoo Fil…

D
Dragonfly Database v39.11

i1.39.11: chore(hll): sync hyperloglog.c with valkey upstream (#7961)

chore(hll): sync hyperloglog.c with valkey upstream Re-syncs src/redis/hyperloglog.c, forked from valkey 56ec1ff1c two years ago, with upstream 06d30f293, and keeps upstream's formatting so future syncs stay cheap. Imported from upstream: CVE-2025-32023: run-length overflow guards on every sparse opcode, not just VAL. A payload whose XZERO runs sum past INT_MAX wrapped the idx cursor negative and…

D
Dragonfly Database v39.10

i1.39.10

fix(squash): avoid mutable cross-thread access on shared reply builde…

D
Dragonfly Database v39.9

i1.39.9: fix(facade): preserve pub/sub order on unsubscribe (v1 IO loop) (#7909)

Since v1.38 the async_dispatch_quota anti-starvation logic in AsyncFiber could run a pipelined command such as UNSUBSCRIBE ahead of pub/sub messages that were queued before it, once the quota was reached. Running UNSUBSCRIBE early sets subscriptions to 0, so the still-queued messages are discarded and the subscriber loses messages published before it unsubscribed. Gate the quota-based pipeline pre…

D
Dragonfly Database v39.8

i1.39.8

feat(pubsub): close stuck subscribers to avoid publisher throttling (…

D
Dragonfly Database v39.6

i1.39.6: test: skip V2-only pause tests under V1 (#7822)

The regression matrix runs the suite with --df enable_resp_io_loop_v2 set to both false and true. That flag overrides the @dfly_args default, so the two V2-only CLIENT PAUSE tests ran under V1 and failed on their assert is_resp_io_loop_v2 guard. Replace the assert with a pytest.skip so the tests skip cleanly on the V1 leg instead of failing, while still running under V2.