Releases: dragonflydb/dragonfly
v1.14.0
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
forQUIT
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
'sAddOr*
to returnAutoUpdater
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 inConnection
by @chakaz in #2309 - refactor(DbSlice): Replace
FindExt()
withFindMutable()
andFindReadOnly
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()
andPostUpdate()
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): ...
v1.13.0
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
- feat(server): Add
/clusterz
page with info on cluster by @chakaz in #2115 - add ability to set snapshot_cron flag during runtime(#1762) by @BorysTheDev in #2101
- chore: use decode_responses when creating a redis client by @romange in #2109
- docs(contributing): Fix typo in CONTRIBUTING.md by @PulkitBxtra in #2119
- fix: local grafana dasboard by @romange in #2124
- fix(acl): case insensitive parsing from files and serialization format by @kostasrim in #2123
- fix(test): Don't access null pointer by @chakaz in #2126
- feat: expose fiber responsiveness metrics by @romange in #2125
- fix(unittest): Fix regression to sticky-eviction unittest by @chakaz in #2128
- fix(server): Do not crash
HRANDFIELD
if some/all elements expired by @chakaz in #2113 - fix(DenseSet): Rename
Size()
toUpperBoundSize()
and addSizeSlow()
by @chakaz in #2130 - fix(unittest): Init with
dbfilename=
before attempting tosave
by @chakaz in #2127 - fix(memcached): parsing multi key get command by @kostasrim in #2122
- chore: Enable unit-tests in CI by @chakaz in #2129
- fix(rename-command): Fix subtle UB when renaming commands by @chakaz in #2132
- chore(search): Extend FT.INFO by @dranikpg in #2133
- Add GeoRadiusByMember support by @azuredream in #2107
- feat:add new macros {Y}, {m} and {d} to dbfilename flag by @BorysTheDev in #2118
- chore(acl): Fix STICK flags by @dranikpg in #2140
- chore(search): Fix expiry test by @dranikpg in #2136
- docs(readme): Fix README.zh-CN benchmark link by @WeihanLi in #2117
- chore(eval): Don't crash on unsupported script commands by @dranikpg in #2138
- doc: How to bind to all IPv4 IP addresses by @chakaz in #2145
- fix(regTests): increase cancel replication test timeout by @kostasrim in #2143
- feat: add SRANDMEMBER and ZRANDMEMBER by @BorysTheDev in #2148
- fix(tests): Fix flaky cluster test by @dranikpg in #2158
- chore: remove Command step argument by @romange in #2150
- chore: lower takeover test load, add comments by @dranikpg in #2151
- chore: dragonfly_connection fixes by @dranikpg in #2160
- Incorrect link to helm chart packages by @nicc777 in #2161
- fix(search): Fix replication by @dranikpg in #2159
- fix(connection): Clear dispatch queue before pipeline squashing by @dranikpg in #2163
- feat: Memory stats by @chakaz in #2162
- chore(tls): add tls config test for ca_dir by @kostasrim in #2152
- fix(stats): Do not crash upon issuing mem stats by @chakaz in #2169
- feat: add support for sticky keys in rdb #251 by @BorysTheDev in #2166
- feat(server): Implement CLIENT PAUSE by @royjacobson in #1875
- chore(facade): Introduce AwaitCurrentDispatches by @dranikpg in #2156
- fix(server): fix build after merge AwaitCurrentDispatch by @adiholden in #2176
- regression: skip client pause test utill we fix the bug by @adiholden in #2177
- fix(server): client pause fix on pipeline squash by @adiholden in #2180
- chore(server_family): add missing field used_memory_peak_human in command info by @kostasrim in #2184
- fix(json): fix json dot path by @dranikpg in #2186
- chore: Module list by @dranikpg in #2187
- fix(search): Fix vector search bugs :( by @dranikpg in #2188
- feat(server): Implement ZINTER command by @highpon in #2164
- fix(memcached): add length check for key values by @kostasrim in #2153
- fix: reduce the maxmimum running time of scan operation to ~100ms by @romange in #2195
- chore: connection fixes by @dranikpg in #2192
- fix(pytest): Fix renamed flag by @dranikpg in #2197
- chore: add missing doc for spill_file_prefix by @kostasrim in #2174
- fix(replication): fix cancel replication race by @adiholden in #2196
- fix: forbid parallel save operations by @BorysTheDev in #2172
- refactor: refactor cmd_arg_parser interface by @BorysTheDev in #2200
- feat(helm): add priority class name for pod by @Letfdsada in #2183
- fix(connection): Fix pipelined command counter by @dranikpg in #2201
- refactor(facade): Do not include / use server from facade by @chakaz in #2211
- chore: improve performance of mget operation by @romange in #2212
- fix(search): Fix score alias for knn wrapped in sort by @dranikpg in #2215
- fix(squashing): Reset base command id by @dranikpg in #2209
- feat(server): Better connection memory tracking by @chakaz in #2205
- fix: fix cmd latency units in /metrics by @romange in #2217
- Add store test case for GeoRadiusByMember by @azuredream in #2210
- fix: memcached VERSION is now parseable by php-memcached client by @romange in #2220
- fix: regression test failures by @romange in #2226
- fix(test): Fix connection context access by @dranikpg in #2228
- Start slot migration by @BorysTheDev in #2218
- fix(server): Unwatch keys during connection close by @dranikpg in #2231
- fix(server): Save element expirations for hash sets & sets by @chakaz in #2223
- feat(bitops_family): implement bitfield command by @kostasrim in #2221
- fix(server): initialize replica acked lsn by @adiholden in #2236
- fix: wrong assert check in dash segment by @romange in #2238
- feat(bitops_family): implement bitfield_ro command by @kostasrim in #2222
- fix: assign threadlocal data structures during connection migration by @romange in #2237
- add new method to CmdArgParser by @BorysTheDev in #2244
- fix(server): Fix crash when using MEMORY STATS commands by @chakaz in #2240
- fix: remove string copy in SendMGetResponse by @romange in #2246
- fix(search): Small improvements by @dranikpg in #2248
- feat: add slot-migration-status command by @BorysTheDev in #2239
- chore: add benchmarks for a small cloud instance by @romange in https://github...
v1.12.1
v1.12.0
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
- @jongwooo made their first contribution in #2010
- @azuredream made their first contribution in #2019
- @evelez7 made their first contribution in #1994
- @y9rabbito made their first contribution in #2085
Huge thanks to all the contributors! ❤️
🇮🇱 🇺🇦
Full Changelog: v1.11.0...v1.12.0
v1.11.0
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
- fix: Add missing encodings to strEncoding by @royjacobson in #1798
- fix: add maxmemory_policy item to info memory section by @romange in #1802
- Update Dockerfile.alpine-dev by @dranikpg in #1803
- chore: add macos daily build by @romange in #1795
- feat(search): sized vectors by @dranikpg in #1788
- fix: alpine weekly pipeline by @romange in #1811
- feat (hset): Support arguments (count, withvalues) in HRANDFIELD by @theyueli in #1804
- Remove ICU library by @dranikpg in #1812
- bug(server): multi cleanup on error by @adiholden in #1813
- chore(AclFamily): Move some of the regressions tests to unit and add by @kostasrim in #1816
- feat(stream): add support for xpending command by @Abhra303 in #1806
- chore(AclFamily): remove unused using decl from acl_family_test by @kostasrim in #1817
- feat(stream): add support for xclaim command by @Abhra303 in #1372
- docs: update README.zh-CN.md by @yancz2000 in #1772
- chore: partially revert adjust batching behavior to reduce network by @kostasrim in #1821
- feat(search): HNSW by @dranikpg in #1799
- fix: possible segfault bug by @romange in #1822
- fix(aws): initialise aws in a proactor by @andydunstall in #1818
- fix: Reply within async_dispatch block in squashed pipeline by @dranikpg in #1825
- Revert "chore: partially revert adjust batching behavior to reduce network" by @dranikpg in #1824
- feat(AclFamily): load/store aclfile by @kostasrim in #1820
- feat(snapshot): add snapshot storage by @andydunstall in #1827
- fix: regression tests for acl family test by @kostasrim in #1826
- fix(regression-tests): correct path for acl files by @kostasrim in #1829
- feat(CI): Configure sccache to work with GCS by @royjacobson in #1815
- Revert "feat(CI): Configure sccache to work with GCS" by @royjacobson in #1833
- skip test_multidim_knn by @adiholden in #1834
- fix(search-parser): fix AND, OR, NOT parsing issue by @Equilibrium2702 in #1838
- feat(snapshot): move load path to snapshot storage by @andydunstall in #1830
- fix(AclFamily): move acl test files to pytest by @kostasrim in #1843
- Add build_rpm script and rpm spec by @romange in #1831
- Support 'databases' alias for CONFIG GET by @romange in #1849
- chore(regression): send chat notificaiton only on main branch by @adiholden in #1847
- Fix a potential crash in OnBreakCb by @romange in #1850
- fix(tls): User friendly logging of OpenSSL errors by @royjacobson in #1851
- opt(lua): Coordinate single-shard Lua evals in remote thread by @chakaz in #1845
- feat(debug): Adds a DEBUG STACKTRACE subcommand by @royjacobson in #1848
- feat(server): Getting flags from the environment variables by @aidarbek in #1810
- feat(snapshot): add support for snapshot recovery from S3 by @andydunstall in #1839
- fix: dfly_main small typo on unix_socket flag by @kostasrim in #1853
- chore: enable search lib on Apple by @romange in #1854
- feat(tests): unset test DFLY env variables by @andydunstall in #1856
- feat(snapshot): fix build on macos by @andydunstall in #1861
- fix(ServerFamily): proper initialization of FileSnapshotStorage when replicaof flag is used by @kostasrim in #1858
- feat(AclFamily): add acl commands by @kostasrim in #1844
- Run unit tests in macos build by @romange in #1859
- fix: fix json.arrappend not allowing passing JSON objects by @UkuLoskit in #1867
- chore: build rpm package for the release by @romange in #1866
- fix(Auth): authenticate with any password for default user by @kostasrim in #1868
- tests: choose open ports randomally by @royjacobson in #1569
- chore: Fix regression test after #1569 by @royjacobson in #1872
- chore: Add a context manager to DflyInstance so we don't forget to close them. by @royjacobson in #1873
- feat(replication): Use a ring buffer with messages to serve replication. by @royjacobson in #1835
- fix: weekly build by @romange in #1871
- feat(AclFamily): add acl log by @kostasrim in #1865
- feat: Span-all no-key transactional commands by @dranikpg in #1864
- fix: Disable Int<> calls in cmd_arg_parser_test for MacOS by @dranikpg in #1880
- feat(AclFamily): add acl users command by @kostasrim in #1882
- feat(AclFamily): add acl cat command by @kostasrim in #1883
- feat(AclFamily): add acl getuser command by @kostasrim in #1884
- feat(AclFamily): add acl dryrun command by @kostasrim in #1894
- fix(regression-tests): increase waiting delay for df startup by @kostasrim in #1893
- fix: improve performance of listpack sorted sets by @romange in #1885
- chore: optimize BPTreeNode::BSearch by @romange in #1891
- chore: Introduce basic deadlock detector for tests by @romange in #1896
- fix: make blocking_controller_test being built on macos by @romange in #1903
- fix: Better error handling in search algorithm by @dranikpg in #1881
- bug(server): zadd wrong insert when non unique members by @adiholden in #1906
- run regression tests on CI by @adiholden in #1874
- fix(server): Flip tcp_nodelay to on by default by @royjacobson in #1910
- bug(server): global command stalls on server load with pipeline mode by @adiholden in #1909
- fix: avoid calling 'sink_->Write()' with an empty buffer by @romange in #1912
- doc(server): Copy important note from transactions doc to the code by @chakaz in #1913
- fix: Correctly persist vector indices by @dranikpg in #1905
- opt(server): Call
reserve()
with correct argument by @chakaz in #1914...
v1.10.0
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
- fix: Add missing encodings to strEncoding by @royjacobson in #1798
- fix: add maxmemory_policy item to info memory section by @romange in #1802
- Update Dockerfile.alpine-dev by @dranikpg in #1803
- chore: add macos daily build by @romange in #1795
- feat(search): sized vectors by @dranikpg in #1788
- fix: alpine weekly pipeline by @romange in #1811
- feat (hset): Support arguments (count, withvalues) in HRANDFIELD by @theyueli in #1804
- Remove ICU library by @dranikpg in #1812
- bug(server): multi cleanup on error by @adiholden in #1813
- chore(AclFamily): Move some of the regressions tests to unit and add by @kostasrim in #1816
- feat(stream): add support for xpending command by @Abhra303 in #1806
- chore(AclFamily): remove unused using decl from acl_family_test by @kostasrim in #1817
- feat(stream): add support for xclaim command by @Abhra303 in #1372
- docs: update README.zh-CN.md by @yancz2000 in #1772
- chore: partially revert adjust batching behavior to reduce network by @kostasrim in #1821
- feat(search): HNSW by @dranikpg in #1799
- fix: possible segfault bug by @romange in #1822
- fix(aws): initialise aws in a proactor by @andydunstall in #1818
- fix: Reply within async_dispatch block in squashed pipeline by @dranikpg in #1825
- Revert "chore: partially revert adjust batching behavior to reduce network" by @dranikpg in #1824
- feat(AclFamily): load/store aclfile by @kostasrim in #1820
- feat(snapshot): add snapshot storage by @andydunstall in #1827
- fix: regression tests for acl family test by @kostasrim in #1826
- fix(regression-tests): correct path for acl files by @kostasrim in #1829
- feat(CI): Configure sccache to work with GCS by @royjacobson in #1815
- Revert "feat(CI): Configure sccache to work with GCS" by @royjacobson in #1833
- skip test_multidim_knn by @adiholden in #1834
- fix(search-parser): fix AND, OR, NOT parsing issue by @Equilibrium2702 in #1838
- feat(snapshot): move load path to snapshot storage by @andydunstall in #1830
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
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:
- 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. - 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
. - Support for
CONFIG GET/SET
- now some runtime options can be changed without restarting the server (#1700). - The
maxclients
flag now prevents the number of client connections from growing indefinitely (#1496). - New flags
max_multi_bulk_len
andmax_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) . - 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 viacurl -u user:token localhost:6379/
What's Changed
- feat(server): add oom guard by @adiholden in #1650
- fix(server): update denyoom flag for all commands by @adiholden in #1651
- test(server): Run all unit tests with
--force_epoll
by @chakaz in #1672 - chore: Refactor SortedMap by @romange in #1666
- fix(VersionMonitor): request to update on older version by @kostasrim in #1674
- feat(server): support config set for some flags by @adiholden in #1624
- opt(server): Execute lua on target shard, if it's 1 by @chakaz in #1639
- introduce
--replicaof
flag by @talbii in #1583 - test(server): test transaction locked keys by @adiholden in #1669
- chore: Connection fixes by @dranikpg in #1663
- fix: fix dchecks by @dranikpg in #1681
- chore: refactor a common code into a function by @romange in #1685
- fix(daily-builds): temporarily comment out bullmq tests by @Abhra303 in #1679
- opt(server): Run Lua on remote thread only if it's a different thread by @chakaz in #1684
- chore: get rid of cmdstats_map by @romange in #1687
- chore: move RdImpl functions together by @romange in #1694
- fix(ci): use auth mechanism with tls helm values by @Pothulapati in #1696
- feat(helm) - Enable configuring service type LoadBalancer with a Static IP by @mutiadavid in #1689
- chore: implemente User and UserRegistry classes by @kostasrim in #1693
- chore: several improvements around sorted map by @romange in #1699
- security: Fix the password hashing in UserRegistry. by @royjacobson in #1702
- fix: allow integer tokens in search queries by @dranikpg in #1701
- feat: Update search index on expiry by @dranikpg in #1697
- fix: MONITOR now works for multi transactions by @dranikpg in #1675
- feat: Pipeline squashing by @dranikpg in #1619
- fix: Fix squashing, pytest arg formatting by @dranikpg in #1712
- fix: fix batching during dispatch mode changes by @dranikpg in #1713
- feat: Support unicode strings in search by @dranikpg in #1698
- feat: json paths in search by @dranikpg in #1695
- feat: introduce partial DfImpl implementation for sorted_map by @romange in #1714
- feat: implement GetRange/GetLexRange for bptree. by @romange in #1715
- chore: add acl categories to all commands by @kostasrim in #1711
- fix: Add small timeout to monitor by @dranikpg in #1718
- replication: fix misleading log message about full sync by @royjacobson in #1717
- chore: clean up save by @dranikpg in #1709
- feat: implement DeleteRange functions in DfImpl by @romange in #1716
- tools: Hash defrag script by @dranikpg in #1723
- fix: Make restore accept ttl in ms by @dranikpg in #1724
- feat(AclFamilly): add acl list command by @kostasrim in #1722
- chore: Add a daily coverage run by @royjacobson in #1437
- chore: Mark slow pytests as 'slow' so they can be excluded. by @royjacobson in #1720
- fix: Correctly read container limits when running under k8s by @talbii in #1692
- fix(AclFamily): commands parsing and error handling by @kostasrim in #1726
- feat(AclFamily): add acl setuser command by @kostasrim in #1725
- feat: search index persistence by @dranikpg in #1721
- fix: add proper printing of sha256 passwords by @kostasrim in #1728
- chore(gh-workflows): add regression tests to release job by @kostasrim in #1665
- fix(ACL): Fix the iteration over categories loop in AclToString by @royjacobson in #1731
- chore: Split the build & test into 2 stages by @royjacobson in #1733
- fix: Fix inconsistency when deleting dash entries by @romange in #1734
- feat: Defragmentation for hash values by @dranikpg in #1727
- chore: add clear metric for the fragmentation waste by @romange in #1735
- fix: fix search test by @dranikpg in #1739
- chore: integrate sccache by @romange in #1738
- chore: cover zset over bptree implementation in the CI. by @romange in #1736
- feat(AclFamily): add AUTH for acl members by @kostasrim in #1732
- fix: fix index loading by @dranikpg in #1742
- fix: the bug where iobuf should be enlarged during the replication by @romange in #1744
- feat(server): support multi eval in lock ahead mode by @adiholden in #1662
- fix: extend CI running time by @romange in #1749
- fix: fix defrag stats by @dranikpg in #1740
- fix: fix memcache bugs by @romange in #1745
- feat(server): Support limiting the number of open connections. by @royjacobson in #1670
- fix: Run defrag on dbs > 0 as well by @dranikpg in #1737
- fix(server): rdb loader catch bad alloc by @adiholden in #1748
- docs: add
snapshot_cron
flag in README (English and zh-CN) by @Niennienzz in #1729 - fix: broken memcached error reporting by @kostasrim in #1741
- feat(search): named return values by @dranikpg in #1746
- bug(server): command stats show origin command name by @adiholden in #1761
- fix(replication): Handle errors instead of crashing. by @royjacobson in #1757
- fix: make Dragonfly compatible with older systems by @romange in #1755
- fix(server): service exit on rdb load fail by @adiholden in #1750
- feat: add validation of acl users by @kostasrim in #1743
- fix(zset): correct the wrong calculation of range.maxex by @theyueli in #1759
- chore: move rdb save related logic into auxillary file by @romange in https://github...
v1.8.0
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
- fix(server): Do not crash on parse error by @chakaz in #1631
- chore: update helio by @kostasrim in #1634
- fix: remove empty hop for non-expiring transactions by @dranikpg in #1605
- Fix socket code in replication by @royjacobson in #1622
- feat(server): Add
--lock_on_hashtags
mode. by @chakaz in #1611 - fix: remove coordinator_index_ from tx & fix short circuit by @dranikpg in #1640
- feat: Add GetRank to bptree API by @romange in #1638
- feat: Fix rank for delete operations by @romange in #1644
- Add "DEBUG OBJHIST" by @romange in #1635
- hotfix: snapshot endless loop on exit. by @dor132 in #1647
- fix: Add selective non-atomic squash dispatch by @dranikpg in #1641
- feat: Use const ConnectionContext in VerifyCommand by @dranikpg in #1633
- fix(server): Increase default timeout by @chakaz in #1653
- feat: Use compressed sorted set for search by @dranikpg in #1648
- feat: add ScoreMap that maps sds strings to doubles by @romange in #1656
- feat: FtList, FtDropIndex and FtInfo by @dranikpg in #1649
- chore: Iterate over bptree_set. by @romange in #1654
- feat: Add LowerBound and DeleteRangeByRank by @romange in #1655
- fix(rdb_load): load listpack encoded zset by @kostasrim in #1646
- fix(pytest): Raise exception if instance.stop timed out by @dranikpg in #1660
- feat: Add DeleteByScore method by @romange in #1664
- chore: Save snapshots as
.tmp
first to avoid file corruption by @talbii in #1623 - feat: Refactor command verification before execution by @dranikpg in #1652
- chore: Add names to fibers that were missing them by @royjacobson in #1667
- chore: update helio by @romange in #1668
Full Changelog: v1.7.1...v1.8.0
v1.7.1
Dragonfly v1.7.1
New Dragonfly release! Prominent changes include:
- Partial GEO API support (GEOADD, GEOPOS, GEOHASH) (thanks @yoelsherwin )
- command duration metrics are now exported via Commandstats in INFO.
- Lots of improvements around TLS support.
- Dragonfly can now read RDB files by Redis 6 and Redis 7!
snapshot_cron
is added (#1590 ) - thanks @dor132
What's Changed
- fix: zunion and zunionstore zero numkeys bug by @rounaknandanwar in #1522
- Fix regression test failures. by @chakaz in #1529
- feat(stream): add support for xreadgroup command by @Abhra303 in #1475
- fix: add tls-ca-cert-file flag to allow tls certificate validation by @kostasrim in #1515
- fix(regression test): fix in takeover tests by @adiholden in #1530
- chore: update jsoncons dependency by @iko1 in #1066
- chore: simplify SendMonitor function by @romange in #1534
- feat: do not process lua script if sha exists in cache by @kostasrim in #1537
- chore: import geo related files to Dragonfly repo by @romange in #1540
- chore: refactor zset_family by @romange in #1542
- refactor(facade): Add includes for standard library headers. by @Cory-Kramer in #1538
- feat: implement two geo commands GEOADD/GEOHASH by @romange in #1543
- fix: weekly alpine build by @romange in #1555
- chore: Remove robj reference from zset_family by @romange in #1554
- chore: disable persistent journaling feature by @romange in #1549
- feat: Add black formatter to the project by @kostasrim in #1544
- chore: update ci action versions by @romange in #1557
- chore: eliminate futher robj references in zset_family code by @romange in #1556
- Refactor replication code by @royjacobson in #1507
- chore: introduce sorted_map by @romange in #1558
- Update README.md by @worldsoup in #1559
- feat(server):export role as Prometheus metric by @ashotland in #1560
- fix(server, metrics):gauge metric value can't be text by @ashotland in #1564
- chore: rename dfly_ metrics to dragonfly_ by @romange in #1568
- fix(rdb): Fix loading of small integers and remove code duplication by @royjacobson in #1571
- feat: add replication over tls by @kostasrim in #1525
- test(replication): add admin port replication tests by @kostasrim in #1561
- feat: introduce config set command by @romange in #1574
- chore: improve memory estimations by @romange in #1567
- bug(server): multi exec eval by @adiholden in #1541
- Fix(regression test): test_tls_replication by @adiholden in #1580
- Command duration by @talbii in #1552
- fix(VersionMonitor): improper version update to older version by @kostasrim in #1577
- docs: Add openSUSE dependencies installation instructions by @binjamil in #1585
- Fix(server): command duration metrics by @adiholden in #1587
- feat(github-actions): add bullmq tests in daily builds by @Abhra303 in #1511
- chore(VersionMonitor): replace std::vector with absl::InlinedVector by @kostasrim in #1589
- feat: add support for GeoPos command by @yoelsherwin in #1576
- Update README.zh-CN.md by @byronhe in #1573
- refactor(VersionMonitor): improve readability and add proper RAII to ssl_ctx by @kostasrim in #1578
- Remove the option to start TLS without any server certificate. by @royjacobson in #1562
- feat: complete GEOADD functionalities (options + multiple parameters) by @yoelsherwin in #1592
- chore(rdb): support rdb version 11 by @kostasrim in #1579
- feat: support for GEODIST added by @yoelsherwin in #1594
- sec: Adjust flag validation for TLS. by @royjacobson in #1582
- Use mimalloc with Lua. by @chakaz in #1600
- fix: Fix faulty logic that forces multi transactions to run as global by @romange in #1598
- Fix(regression test): fix test_flushall_in_full_sync by @adiholden in #1597
- tests: Add a password to TLS configurations by @royjacobson in #1603
- opt(server): Short-circuit ExecuteAsync(). by @chakaz in #1601
- feat: very minimal code that adds b-tree to the codebase by @romange in #1596
- feat(server): Use hashtags for sharding in emulated cluster mode. by @chakaz in #1602
- fix: fix multi test by @dranikpg in #1604
- bug(server): multi atomicity fix by @adiholden in #1593
- fix: add Transaction::Conclude by @dranikpg in #1606
- Add delete functionality to the b+tree by @romange in #1607
- fix: refactor RunCbOnFirstNonEmptyBlocking by @dranikpg in #1608
- feat: support for cron expressions based snapshot. by @dor132 in #1599
- fix: simplify ScheduleInShard by @dranikpg in #1610
- fix(test): Fix failing tests. by @chakaz in #1612
- feat: Remove batch locks from non-atomic squashing by @dranikpg in #1613
- feat: support for cron expressions based snapshot (update). by @dor132 in #1620
- chore: disable multi-squashing by @romange in #1627
- chore: update helio by @kostasrim in #1626
New Contributors
- @rounaknandanwar made their first contribution in #1522
- @Cory-Kramer made their first contribution in #1538
- @binjamil made their first contribution in #1585
- @yoelsherwin made their first contribution in #1576
- @byronhe made their first contribution in #1573
- @dor132 made their first contribution in #1599
Huge thanks to all the contributors! ❤️
Full Changelog: v1.6.0...v1.7.1
v1.7.0
Dragonfly v1.7.0
New Dragonfly release! Prominent changes include:
- Partial GEO API support (GEOADD, GEOPOS, GEOHASH) (thanks @yoelsherwin )
- command duration metrics are now exported via Commandstats in INFO.
- Lots of improvements around TLS support.
- Dragonfly can now read RDB files by Redis 6 and Redis 7!
What's Changed
- fix: zunion and zunionstore zero numkeys bug by @rounaknandanwar in #1522
- Fix regression test failures. by @chakaz in #1529
- feat(stream): add support for xreadgroup command by @Abhra303 in #1475
- fix: add tls-ca-cert-file flag to allow tls certificate validation by @kostasrim in #1515
- fix(regression test): fix in takeover tests by @adiholden in #1530
- chore: update jsoncons dependency by @iko1 in #1066
- chore: simplify SendMonitor function by @romange in #1534
- feat: do not process lua script if sha exists in cache by @kostasrim in #1537
- chore: import geo related files to Dragonfly repo by @romange in #1540
- chore: refactor zset_family by @romange in #1542
- refactor(facade): Add includes for standard library headers. by @Cory-Kramer in #1538
- feat: implement two geo commands GEOADD/GEOHASH by @romange in #1543
- fix: weekly alpine build by @romange in #1555
- chore: Remove robj reference from zset_family by @romange in #1554
- chore: disable persistent journaling feature by @romange in #1549
- feat: Add black formatter to the project by @kostasrim in #1544
- chore: update ci action versions by @romange in #1557
- chore: eliminate futher robj references in zset_family code by @romange in #1556
- Refactor replication code by @royjacobson in #1507
- chore: introduce sorted_map by @romange in #1558
- Update README.md by @worldsoup in #1559
- feat(server):export role as Prometheus metric by @ashotland in #1560
- fix(server, metrics):gauge metric value can't be text by @ashotland in #1564
- chore: rename dfly_ metrics to dragonfly_ by @romange in #1568
- fix(rdb): Fix loading of small integers and remove code duplication by @royjacobson in #1571
- feat: add replication over tls by @kostasrim in #1525
- test(replication): add admin port replication tests by @kostasrim in #1561
- feat: introduce config set command by @romange in #1574
- chore: improve memory estimations by @romange in #1567
- bug(server): multi exec eval by @adiholden in #1541
- Fix(regression test): test_tls_replication by @adiholden in #1580
- Command duration by @talbii in #1552
- fix(VersionMonitor): improper version update to older version by @kostasrim in #1577
- docs: Add openSUSE dependencies installation instructions by @binjamil in #1585
- Fix(server): command duration metrics by @adiholden in #1587
- feat(github-actions): add bullmq tests in daily builds by @Abhra303 in #1511
- chore(VersionMonitor): replace std::vector with absl::InlinedVector by @kostasrim in #1589
- feat: add support for GeoPos command by @yoelsherwin in #1576
- Update README.zh-CN.md by @byronhe in #1573
- refactor(VersionMonitor): improve readability and add proper RAII to ssl_ctx by @kostasrim in #1578
- Remove the option to start TLS without any server certificate. by @royjacobson in #1562
- feat: complete GEOADD functionalities (options + multiple parameters) by @yoelsherwin in #1592
- chore(rdb): support rdb version 11 by @kostasrim in #1579
- feat: support for GEODIST added by @yoelsherwin in #1594
- sec: Adjust flag validation for TLS. by @royjacobson in #1582
- Use mimalloc with Lua. by @chakaz in #1600
- fix: Fix faulty logic that forces multi transactions to run as global by @romange in #1598
- Fix(regression test): fix test_flushall_in_full_sync by @adiholden in #1597
- tests: Add a password to TLS configurations by @royjacobson in #1603
- opt(server): Short-circuit ExecuteAsync(). by @chakaz in #1601
- feat: very minimal code that adds b-tree to the codebase by @romange in #1596
- feat(server): Use hashtags for sharding in emulated cluster mode. by @chakaz in #1602
- fix: fix multi test by @dranikpg in #1604
- bug(server): multi atomicity fix by @adiholden in #1593
- fix: add Transaction::Conclude by @dranikpg in #1606
- Add delete functionality to the b+tree by @romange in #1607
- fix: refactor RunCbOnFirstNonEmptyBlocking by @dranikpg in #1608
New Contributors
- @rounaknandanwar made their first contribution in #1522
- @Cory-Kramer made their first contribution in #1538
- @binjamil made their first contribution in #1585
- @yoelsherwin made their first contribution in #1576
- @byronhe made their first contribution in #1573
Huge thanks to all the contributors! ❤️
Full Changelog: v1.6.0...v1.7.0