Skip to content

Releases: dragonflydb/dragonfly

v1.14.0

22 Jan 07:04
cdbeb2f
Compare
Choose a tag to compare

Dragonfly v1.14.0

This is our first release for this year. We've mainly focused on stability and performance improvements for this release.
Among other things it includes:

  • Tighter memory tracking
  • support for ACL keys
  • json parser allows '-' in field names.
  • Initial support for client tracking feature
  • XREADBLOCK fix for blocking case.

What's Changed

  • feat: DispatchTracker to replace everything by @dranikpg in #2179
  • fix(server): Call PostUpdate from LPUSH even for new keys by @chakaz in #2254
  • refactor: conn_context and reply_builder refactoring by @BorysTheDev in #2251
  • fix(connection): Add WeakRef to replace pubsub wait token by @dranikpg in #2227
  • bug(server): remove CO::READONLY for QUIT command. by @theyueli in #2263
  • chore: add a test demonstrating on how to pass a dash within json path by @romange in #2267
  • bug(hset): make hrandfield reply match Redis by @theyueli in #2266
  • feat(Server):support Verbatim strings resp type, using it for CLIENT LIST and INFO commands by @theyueli in #2264
  • feat(acl): add storage for acl keys by @kostasrim in #2257
  • fix(tiering): fix crash when item was deleted before offloaded by @adiholden in #2225
  • feat(server): Return per-type memory breakdown from INFO and /metrics by @chakaz in #2262
  • feat(acl): add acl keys to acl setuser command by @kostasrim in #2258
  • feat(acl): add acl keys to acl get command by @kostasrim in #2260
  • feat(acl): add acl keys to acl list command by @kostasrim in #2261
  • feat(acl): add validation for acl keys by @kostasrim in #2272
  • feat(acl): add acl keys to acl save/load by @kostasrim in #2273
  • feat(server): Support CLIENT TRACKING subcommand (1/2) by @theyueli in #2277
  • fix: accept '-' character when parsing json fields by @romange in #2271
  • chore: update helio by @romange in #2286
  • WIP: Auto PostUpdate() by @chakaz in #2268
  • fix(tiering): fix tiering crash on setting expire by @adiholden in #2285
  • chore: eliminate most of clang++ warnings by @romange in #2288
  • feat(acl): add acl keys to acl log command by @kostasrim in #2274
  • fix(server): Fix client pause and add test by @dranikpg in #2298
  • fix(server): handle no-key-transactional commands in multi/exec by @dranikpg in #2279
  • feat(server): Better reporting of per-type memory in /metrics by @chakaz in #2303
  • feat(server): Implement NUMSUB subcommand by @highpon in #2282
  • fix(memory): Add missing fields in connection memory by @chakaz in #2306
  • refactor(server): Refactor AddOrFind() by @chakaz in #2299
  • chore: update helio library by @romange in #2305
  • feat(cluster): Cancel blocking commands on cluster update by @dranikpg in #2255
  • feat(server): Convert DbSlice's AddOr* to return AutoUpdater by @chakaz in #2290
  • feat(server): Add dispatch queue bytes to /metrics by @chakaz in #2310
  • feat(replica): add master id on replica output for info replication by @adiholden in #2314
  • fix(server): Track all IoBuf capacity changes in Connection by @chakaz in #2309
  • refactor(DbSlice): Replace FindExt() with FindMutable() and FindReadOnly by @chakaz in #2308
  • refactor(server): Make FindFirst() read-only by @chakaz in #2317
  • fix(bug): access invalid prime table iterator by @adiholden in #2300
  • feat: add command flow for slot migration process by @BorysTheDev in #2292
  • feat(server): Support CLIENT TRACKING subcommand (2/2) by @theyueli in #2280
  • feat(server): Better accounting of DenseSet memory by @chakaz in #2325
  • feat(server): Account for RObj concrete objects by @chakaz in #2324
  • chore: remove support for save_schedule flag by @romange in #2327
  • fix(stream): make fix for XREADBLOCK function by @BorysTheDev in #2323
  • feat: introduce transaction statistics in the info output by @romange in #2328
  • chore: refactor slowlog code, no functionality changes by @romange in #2331
  • feat: add keyspace_mutations metric by @romange in #2329
  • feat: expose tx_queue_len metric by @romange in #2330
  • chore(search): Block list by @dranikpg in #2307
  • chore: refactor VersionMonitor into a separate file by @romange in #2326
  • refactor(server): Privatize PreUpdate() and PostUpdate() by @chakaz in #2322
  • feat: introduce 'debug tx' command and periodic overload logs by @romange in #2333
  • feat: track differrent patterns of multi/exec transactions by @romange in #2334
  • feat(search): Aggregator, step 1 by @dranikpg in #2332
  • feat: expose transaction types via /metrics by @romange in #2336
  • feat(server): Add reply count & latency metrics by @chakaz in #2340
  • fix: Invalid key lock strings with squashing by @dranikpg in #2341
  • bug(server): reject replicaof while loading from snapshot by @adiholden in #2338
  • chore: expose the multi length in slowlog by @romange in #2339
  • fix(server): Fix reply seconds & better metrics names by @chakaz in #2342
  • feat(makefile): Build with full debug symbols and strip in make package by @chakaz in #2343
  • fix(SimpleLruCounter): Correctly set bumped node's next by @chakaz in #2346
  • fix: relax the requirement for parsing successfully container limits by @romange in #2352
  • chore: transaction simplification by @romange in #2347
  • feat(getslotsinfo): Add memory usage per slot by @chakaz in #2355
  • refactor(generic_family): Don't allocate StringSink on the heap by @chakaz in #2356
  • chore: add "send" state to client list by @romange in #2357
  • fix "debug exec" command by @romange in #2354
  • feat(tiering): add max file size limit by @adiholden in #2344
  • feat: add SLOT-MIGRATION-STATUS cmd for source node by @BorysTheDev in #2349
  • fix: unblock transactions only if requirements are correct by @BorysTheDev in #2345
  • refactor(rdb): Expose default compression mode without direct flag by @chakaz in #2360
  • refactor(serializer): Move DUMP logic into RdbSerializer by @chakaz in #2363
  • fix(dash table): bucket count returns the number of buckets by @adiholden in #2359
  • test: Adding integration test using Relay benchmark by @theyueli in #2348
  • feat: introduce user timeout by @romange in #2361
  • chore: add comment for c_rehash in ca_cert_dir flag description by @kostasrim in #2365
  • chore: add memory usage test for skiplist encoding by @romange in #2367
  • chore: consolidate facade stats under a single struct by @romange in #2368
  • fix(test): Fix flaky test by @chakaz in #2372
  • feat(server): ...
Read more

v1.13.0

05 Dec 15:18
f39eac5
Compare
Choose a tag to compare

Dragonfly v1.13.0 - Chrismukkah edition 🔯 🎄🔯 🎄🔯

This marks our final release for the year, featuring numerous stability fixes and performance enhancements.
We recommend upgrading to this version if you are currently using versions 1.12.x or 1.11.0

Important features and changes:

  • FT.SEARCH API has been finally released in beta! Our community users has been using this API since the moment it appeared in alpha and helped us greatly to stabilise it for this release. The API supports both vector search (probably, one of the fastest vector search engines today) as well as regular structured, faceted search.
  • Fix a crash bug during client disconnect (a regression that was introduced in the previous versions)
  • Improve support for JSON path parsing in JSON api

What's Changed

Read more

v1.12.1

06 Nov 17:41
053a33d
Compare
Choose a tag to compare

Dragonfly v1.12.1

Bug fix release

Full Changelog: v1.12.0...v1.12.1

053a33d fix(rename-command): Fix subtle UB when renaming commands (#2132)
ac457a6 fix(test): Don't access null pointer (#2126)
d7cd65c fix(memcached): parsing multi key get command (#2122)

v1.12.0

03 Nov 06:36
e46dd24
Compare
Choose a tag to compare

Dragonfly v1.12.0

🎃 🎃 🎃 🎃 🎃 🎃 🎃

Important features and changes:

  • Slowlog support - thank you @UkuLoskit !
  • FT.SEARCH support! After the initial release and some feedback from early adopters we declare beta availability for SEARCH.
  • SINTECARD support - thank you @evelez7
  • Fix correctness bugs in hashmap - thank you Fernando Macho for helping us to find the root cause.
  • Fix REVRANGE bug in sorted set.
  • Improved eviction heuristic when cache_mode is enabled #2084
  • GEO API is extended further, thank you very much @azuredream !

What's Changed

  • fix: buffer overrun when passing long command name from lua by @romange in #2008
  • chore(regTests): add basic module logging and print when tests fail by @kostasrim in #2005
  • chore: Replace deprecated command with environment file by @jongwooo in #2010
  • chore(regTests): separate build and reg tests timeouts by @kostasrim in #2006
  • feat: Implement slowlog by @UkuLoskit in #1956
  • fix(server): Don't recompute shard for squashed stub tx by @dranikpg in #2017
  • feat: allow extracting the expiry time from string_set by @romange in #2020
  • opt(server): Allow round-robin keys between shards based on prefix by @chakaz in #2016
  • chore: Enable squashing by default by @dranikpg in #2011
  • fix: reject zset variadic commands with 0 keys by @romange in #2022
  • fix(server): Start periodic fiber only once init completes by @chakaz in #2023
  • chore: remove .DS_Store file by @romange in #2025
  • fix(server): Fix shardlocal eval with round-robin prefix by @chakaz in #2024
  • fix(search): Use double numeric values by @dranikpg in #2015
  • feat: add fieldttl command that returns the ttl of the member by @romange in #2026
  • fix(ubuntu-prod): Set suexec hash correctly by @Pothulapati in #2029
  • fix(server): Exclude eval from pipeline squashing by @dranikpg in #2027
  • feat(server): Support COMMAND INFO by @dranikpg in #2035
  • chore: add a debug check in slowlog by @romange in #2039
  • fix: evict open connections for users not present in the updated ACL by @azuredream in #2019
  • feat: implement SINTERCARD by @evelez7 in #1994
  • feat(acl): add config set for aclfile by @iko1 in #1978
  • feat(acl): Implement ACL GENPASS by @UkuLoskit in #2013
  • opt(server): Migrate connections which invoke Lua scripts to their target thread. by @chakaz in #2037
  • chore(regTests): print logs when regTests timeout by @kostasrim in #2031
  • chore: call debug stacktrace on SIGUSR1 by @kostasrim in #2012
  • fix: Don't crash on reaching hnsw capacity by @dranikpg in #2046
  • feat: implement fieldttl for the hash family by @romange in #2040
  • chore(search): add redis-om test by @dranikpg in #2049
  • fix: localize timeout in test_cancel_replication_immediately test by @romange in #2048
  • fix: skip setting tcp_nodelay for unix domain sockets by @dranikpg in #2033
  • wrap dragonfly_test with gdb inside a CI by @romange in #2050
  • chore: measure rss memory and track its peak by @romange in #2054
  • chore(search): Add exclusive range option by @dranikpg in #2055
  • fix(sock): Use the updated cancellation cb interface. by @royjacobson in #1940
  • fix(regTests): properly handle other error codes on timeouts by @kostasrim in #2057
  • feat: add 'memory decommit' command by @romange in #2058
  • feat(tls): support runtime tls reconfig by @andydunstall in #2047
  • fix: inject our own parser for slowlog get by @romange in #2059
  • feat(aws): add https support by @andydunstall in #2061
  • chore: add more debug info if a deadlock is caught in unit tests by @romange in #2062
  • feat: Implement options for EXPIRE command by @UkuLoskit in #2051
  • fix(search): Persist field flags by @dranikpg in #2069
  • feat(server): add memory stats for snapshot save by @adiholden in #2072
  • chore(server-family): do not log SETINFO by @kostasrim in #2065
  • fix(server): Fix crash when connection uses multiple lua scripts by @chakaz in #2073
  • fix(bptree): Reverse iteration by @chakaz in #2075
  • feat(aws): add web identity provider by @andydunstall in #2041
  • fix(docs): add missing libstdc++-static dependency info by @kostasrim in #2077
  • chore(reply_builder): add dcheck that each command invocation has rep… by @kostasrim in #2067
  • fix(requirements): conflicting dependencies redis and redis-om by @kostasrim in #2079
  • fix(replica): fix replica reconnect handing by @dranikpg in #2068
  • fix(server): Correctly set expiration from Lua scripts by @chakaz in #2080
  • fix: Correctly grow dense_set in the Reserve call by @romange in #2087
  • fix(search): Support indexing array paths by @dranikpg in #2074
  • Add number of threads to INFO by @y9rabbito in #2085
  • fix(facade): Avoid check on getsockopt SO_INCOMING_NAPI_ID by @ashotland in #2091
  • fix(AclFamily): renaming commands and subcommands by @kostasrim in #2076
  • feat(acl): add config set for acllog_max_len by @iko1 in #1979
  • chore: improve pytest ux by @romange in #2088
  • fix(ReplyGuard): set member variable on construction and remove unused by @kostasrim in #2082
  • fix(transaction): Reset reverse index in multi-tx by @dranikpg in #2086
  • chore: help users to fix a mistake of setting quotes in the flagfile by @romange in #2092
  • chore: raise pipeline squashing limit by @dranikpg in #2095
  • fix: small races on config registry and maxclients by @kostasrim in #2078
  • feat: Add GEOSEARCH support by @azuredream in #2070
  • doc(README): Explain how to use env var flags by @chakaz in #2096
  • feat(server): perform eviction upon memory pressure in cache mode by @theyueli in #2084
  • fix(server): Do not return empty array after expiration by @chakaz in #2104
  • fix(regTests): can't execute command while loading on snapshots by @kostasrim in #2110
  • fix(regTests): Wait between ACTIVE until `stable_sync by @chakaz in #2111
  • fix: more server state read in command invocation by @dranikpg in #2114
  • chore(search): Safe json validation, serialize fix by @dranikpg in #2100

New Contributors

Huge thanks to all the contributors! ❤️

🇮🇱 🇺🇦

Full Changelog: v1.11.0...v1.12.0

v1.11.0

16 Oct 09:30
c6f8f38
Compare
Choose a tag to compare

Dragonfly v1.11.0

🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱
Our beloved country is currently facing difficult times, but we will win, for hope and progress are on our side.
🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱 🇮🇱

Important features and changes:

  • Starting from v1.11.0 we support the BullMQ framework. For more information see BullMQ post and our docs.
  • Lots of ACL/Auth fixes. Specifically (IMPORTANT): we changed the default http user to be "default" instead of "user" to be consistent
    with Dragonfly ACL rules. We also removed the requirement for authenticated access to /metrics http page even if ACL are enabled.
  • STREAMS and ACL APIs are complete! Please let us know if you encounter any issues.
  • Lots of performance improvements for Sorted Sets. Now Dragonfly uses our own b+tree implementation for sorted sets by default instead
    of the old Redis skiplist implementation. We improved some memory and performance bottlenecks with listpack encoding as well.
  • Fix logrotate rules for our debian package.

What's Changed

Read more

v1.10.0

13 Sep 12:02
1da29a5
Compare
Choose a tag to compare

Dragonfly v1.10.0

Maintenance release to address the linker dependency issue #1823 .

In addition, we introduced ACL config file support for those who want to preserve ACL settings between restarts.
Please check out the changelog below for additional bug fixes and stability improvements.

What's Changed

New Contributors

  • @yancz2000 made their first contribution in #1772
  • @Equilibrium2702 made their first contribution in #1838

Huge thanks to all the contributors! ❤️

Slava Ukraini 🇺🇦

Full Changelog: v1.9.0...v1.10.0

v1.9.0

05 Sep 14:25
f94c4be
Compare
Choose a tag to compare

Dragonfly v1.9.0

This release includes a number of important stability and security fixes, as well as some features that have been requested by users for a long time:

  1. ACLs : starting from this release, you can now create multiple users in Dragonfly and control their access via acl categories. The following ACL sub-commands are now supported:
    ACL SETUSER/DELUSER/WHOAMI/LIST. Please note that ACLS are not persisted yet through process restarts.
  2. Improved sorted-sets. We rolled out our experimental support for sorted sets (aka ZSET). They require 35% less memory and are more CPU efficient, especially for large sets. To try them now with --use_zset_tree.
  3. Support for CONFIG GET/SET - now some runtime options can be changed without restarting the server (#1700).
  4. The maxclients flag now prevents the number of client connections from growing indefinitely (#1496).
  5. New flags max_multi_bulk_len and max_client_iobuf_len control the limits for large requests. The former controls how many elements can be sent via arrays (for commands like MSET, SADD etc). The latter controls maximum buffer size when accepting string blobs (#1771) .
  6. HTTP endpoint authorization: now our HTTP endpoint is protected with the same token that is passed with --requirepass=token (#1792)
    Once basic auth is set, one can access the http port via curl -u user:token localhost:6379/

What's Changed

Read more

v1.8.0

09 Aug 06:56
7c99d2d
Compare
Choose a tag to compare

Dragonfly v1.8.0

New Dragonfly release! It's a stability release.

1.7.x had a few regressions which are fixed in this release 🤞🏼.
Everyone who uses 1.7.x is advised to switch to 1.8.0

What's Changed

Full Changelog: v1.7.1...v1.8.0

v1.7.1

02 Aug 16:17
58f6ede
Compare
Choose a tag to compare

Dragonfly v1.7.1

New Dragonfly release! Prominent changes include:

  1. Partial GEO API support (GEOADD, GEOPOS, GEOHASH) (thanks @yoelsherwin )
  2. command duration metrics are now exported via Commandstats in INFO.
  3. Lots of improvements around TLS support.
  4. Dragonfly can now read RDB files by Redis 6 and Redis 7!
  5. snapshot_cron is added (#1590 ) - thanks @dor132

What's Changed

New Contributors

Huge thanks to all the contributors! ❤️

Full Changelog: v1.6.0...v1.7.1

v1.7.0

02 Aug 09:48
7673e02
Compare
Choose a tag to compare

Dragonfly v1.7.0

New Dragonfly release! Prominent changes include:

  1. Partial GEO API support (GEOADD, GEOPOS, GEOHASH) (thanks @yoelsherwin )
  2. command duration metrics are now exported via Commandstats in INFO.
  3. Lots of improvements around TLS support.
  4. Dragonfly can now read RDB files by Redis 6 and Redis 7!

What's Changed

New Contributors

Huge thanks to all the contributors! ❤️

Full Changelog: v1.6.0...v1.7.0