Releases: dragonflydb/dragonfly
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
v1.6.2
Fixed #1570
Full Changelog: v1.6.1...v1.6.2
v1.6.1
v1.6.0
Dragonfly v1.6.0
New Dragonfly release! Prominent changes include:
- Support for s390x (Thanks, @iko1 )
- Fixing stability issues in the transactional framework around blocking operations (thanks to @glitch user on Discord for helping to pinpoint the issues)
- Support plain replication on the admin port with TLS enabled on the primary port (#1490 )
- Support custom permissioning on UNIX domain sockets (#1415)
- Fix a deadlock when performing the replication over the admin port (#1470)
- Atomic replica failover support.
What's Changed
- feat: add s390x architecture support by @iko1 in #1214
- feat(CI): Update weekly build image name to be
dragonfly-weekly
by @Pothulapati in #1384 - fix(docker-release): Run Docker test only if image is built by @Pothulapati in #1430
- feat(cluster): Implement
CLUSTER KEYSLOT
command by @chakaz in #1413 - fix(cluster): Fix race when setting cluster config by @chakaz in #1428
- fix: out of bounds typo by @romange in #1434
- chore: improve connection I/O errors reporting by @romange in #1436
- test(cluster): Extend cluster_mgr.py by @chakaz in #1426
- feat(server): set allowed key size 256MB by @adiholden in #1435
- feat: Implement KNN interface by @dranikpg in #1412
- fix: add numpy to regtests (needed for knn) by @dranikpg in #1454
- fix: call NotifyPending only from tx queue invocations by @dranikpg in #1439
- feat(server): add flag to set FiberQueueThreadPool thread size by @wayslog in #1452
- feat(server): add unixsocketperm support by @adiholden in #1450
- feat(server): Add missing fields to INFO PERSISTENCE command (#1408) by @kostasrim in #1438
- feat(regression github): send failed tests names to chat by @adiholden in #1459
- fix: rename memcache to memcacheD by @dranikpg in #1461
- Expose replication lag metrics by @royjacobson in #1400
- fix: failing assertion on snapshot regression tests when dbfly instance shuts down by @kostasrim in #1463
- fix: support json v1 dot path by @dranikpg in #1462
- feat(log): On startup print info to stdout by @kostasrim in #1448
- fix(server): Fix early reply from
DEBUG POPULATE
by @chakaz in #1441 - feat(debian): retain debug symbols in deb package by @Pothulapati in #1464
- fix: avoid using main_listener when migrating connections by @romange in #1471
- fix: Don't calculate replication lags when replica is not in stable sync by @royjacobson in #1472
- fix(regression): fix json report filename by @adiholden in #1465
- fix(regression): failing info persistence on snapshot pytests by @kostasrim in #1473
- docs: update contributing.md with style guidelines by @kostasrim in #1467
- bug(cluster): fix crush on flush slots with shutdown by @adiholden in #1477
- fix: Increase the duration of the seeding in test_replication_info. by @royjacobson in #1479
- feat(github regression): add link to github job by @adiholden in #1482
- cleanups: Remove unused member, rename test, remove unused forward decl. by @chakaz in #1483
- fix(cluster): Fix
CROSSSLOTS
error with multi-key operations by @chakaz in #1488 - feat(cluster): Send flush slots cmd from masters to replicas. by @chakaz in #1484
- feat(server): support command rename by @adiholden in #1489
- Add Japanese README by @eltociear in #1494
- fix: misspelled replication on pytest redis_replication by @kostasrim in #1501
- fix(regression): remove test case for info persistence by @kostasrim in #1492
- feat: global eval in exec by @dranikpg in #1443
- feat: compressed list by @dranikpg in #1474
- fix: disable prohibited eval in multi test by @dranikpg in #1505
- fix(server): Initialize ServerFamily with all listeners. by @royjacobson in #1485
- fix: avoid crashing dragonfly on parsing error of cgroups config by @romange in #1503
- feat: Support atomic replica takeover by @royjacobson in #1314
- chore: tune snyk coverage to ignore test files by @romange in #1509
- Fix a bug and add a timeout test for takeover. by @royjacobson in #1512
- fix: null deref in debug log by @royjacobson in #1513
- chore: refresh helio by @romange in #1506
- docs : add korean translated README by @brewagebear in #1518
- fix(server): fix prints to log by @adiholden in #1520
- takeover: Cancel blocking commands by @royjacobson in #1514
- feat(replication): allow non-tls connections between replica and master #1419 by @kostasrim in #1490
- Fix regression test failures on old Python versions by @royjacobson in #1521
- fix: add missing slash on startup for certain log_dir paths by @kostasrim in #1500
New Contributors
- @wayslog made their first contribution in #1452
- @brewagebear made their first contribution in #1518
Huge thanks to all the contributors! ❤️
Full Changelog: v1.4.0...v1.6.0
v1.5.0
What's Changed
- feat: add s390x architecture support by @iko1 in #1214
- feat(CI): Update weekly build image name to be
dragonfly-weekly
by @Pothulapati in #1384 - fix(docker-release): Run Docker test only if image is built by @Pothulapati in #1430
- feat(cluster): Implement
CLUSTER KEYSLOT
command by @chakaz in #1413 - fix(cluster): Fix race when setting cluster config by @chakaz in #1428
- fix: out of bounds typo by @romange in #1434
- chore: improve connection I/O errors reporting by @romange in #1436
- test(cluster): Extend cluster_mgr.py by @chakaz in #1426
- feat(server): set allowed key size 256MB by @adiholden in #1435
- feat: Implement KNN interface by @dranikpg in #1412
- fix: add numpy to regtests (needed for knn) by @dranikpg in #1454
- fix: call NotifyPending only from tx queue invocations by @dranikpg in #1439
- feat(server): add flag to set FiberQueueThreadPool thread size by @wayslog in #1452
- feat(server): add unixsocketperm support by @adiholden in #1450
- feat(server): Add missing fields to INFO PERSISTENCE command (#1408) by @kostasrim in #1438
- feat(regression github): send failed tests names to chat by @adiholden in #1459
- fix: rename memcache to memcacheD by @dranikpg in #1461
- Expose replication lag metrics by @royjacobson in #1400
- fix: failing assertion on snapshot regression tests when dbfly instance shuts down by @kostasrim in #1463
- fix: support json v1 dot path by @dranikpg in #1462
- feat(log): On startup print info to stdout by @kostasrim in #1448
- fix(server): Fix early reply from
DEBUG POPULATE
by @chakaz in #1441 - feat(debian): retain debug symbols in deb package by @Pothulapati in #1464
- fix: avoid using main_listener when migrating connections by @romange in #1471
- fix: Don't calculate replication lags when replica is not in stable sync by @royjacobson in #1472
- fix(regression): fix json report filename by @adiholden in #1465
- fix(regression): failing info persistence on snapshot pytests by @kostasrim in #1473
- docs: update contributing.md with style guidelines by @kostasrim in #1467
- bug(cluster): fix crush on flush slots with shutdown by @adiholden in #1477
- fix: Increase the duration of the seeding in test_replication_info. by @royjacobson in #1479
- feat(github regression): add link to github job by @adiholden in #1482
- cleanups: Remove unused member, rename test, remove unused forward decl. by @chakaz in #1483
- fix(cluster): Fix
CROSSSLOTS
error with multi-key operations by @chakaz in #1488 - feat(cluster): Send flush slots cmd from masters to replicas. by @chakaz in #1484
- feat(server): support command rename by @adiholden in #1489
- Add Japanese README by @eltociear in #1494
- fix: misspelled replication on pytest redis_replication by @kostasrim in #1501
- fix(regression): remove test case for info persistence by @kostasrim in #1492
- feat: global eval in exec by @dranikpg in #1443
- feat: compressed list by @dranikpg in #1474
- fix: disable prohibited eval in multi test by @dranikpg in #1505
- fix(server): Initialize ServerFamily with all listeners. by @royjacobson in #1485
- fix: avoid crashing dragonfly on parsing error of cgroups config by @romange in #1503
- feat: Support atomic replica takeover by @royjacobson in #1314
- chore: tune snyk coverage to ignore test files by @romange in #1509
New Contributors
Full Changelog: v1.4.0...v1.5.0
v1.4.0
Dragonfly v1.4.0
New Dragonfly release! Some prominent changes include:
- Support for several STREAM commands (xinfo, xtrim, read) - Thanks @Abhra303 and @andydunstall !
- Implementation of bzpopmin and zdiff functionalities - thanks to @royjacobson and @kostasrim !
- Resolving high latency issues encountered in specific corner cases: @royjacobson
- Addressing stability issues reported by our community.
I would like specifically mention the help of one of the discord members that assisted with finding
the root cause with BLPOP bug. Thank you, glitch!
In addition, @andydunstall contributed many fixes across the board, especially with BullMQ compatibility.
What's Changed
- fix(docker): Install libxml2 as part of ubuntu Dockerfile by @Pothulapati in #1239
- refactor(cluster): Move CLUSTER commands to their own methods. by @chakaz in #1230
- feat(stream) Add support for XREAD by @andydunstall in #1235
- fix: Dragonfly ignoring NOREPLY option for Memcached commands by @talbii in #1233
- fix(replication): Don't open a replication flow in non-shard threads by @royjacobson in #1234
- fix(stream): avoid using designated initializer by @Abhra303 in #1247
- fix: fix multi test by @dranikpg in #1236
- chore: factor out commandid from the server lib by @romange in #1253
- Feat bzpopmin by @royjacobson in #1232
- feature(server): Bring back inline scheduling by @royjacobson in #1130
- refactor(cluster): Move management commands from
DFLY CLUSTER
prefix toDFLYCLUSTER
. by @chakaz in #1251 - feat(cluster): cluster config delete now owned slots data by @adiholden in #1241
- chore: Update helio by @royjacobson in #1257
- fix: actually zero initialize the struct by @royjacobson in #1256
- fix: support XREAD ... STREAMS ... keys derivation by @romange in #1250
- perf: Use InlinedVector in TransactionData for the common case of single commands by @royjacobson in #1260
- chore: Try to turn on Werror in the CI by @royjacobson in #1261
- fix: S3 writes are now working with new format as well by @romange in #1252
- feat(cluster): Implement
CLUSTER INFO
. by @chakaz in #1258 - feat(cluster): Do not allow node IDs to appear more than once. by @chakaz in #1271
- fix(cluster): Fix breaking test by @chakaz in #1273
- feat: Use journal LSNs for absolute replication offsets by @royjacobson in #1242
- fix: remove xread required arguments by @andydunstall in #1263
- Update README.md by @worldsoup in #1279
- chore: Add clang workflow to CI by @royjacobson in #1220
- feat(cluster): support dflycluster myid by @adiholden in #1272
- Refactor search AST by @dranikpg in #1222
- fix: move version check earlier in the flow by @romange in #1255
- Reply with
MOVED
error for non-owned slots. by @chakaz in #1283 - fix: fix dispatch ordering by @dranikpg in #1254
- feat(cluster): dflycluster commands only under admin port by @adiholden in #1281
- feat(cluster): Implement
CLUSTER SHARDS
. by @chakaz in #1284 - feat(streams): Add support for XREAD BLOCK by @andydunstall in #1291
- feat(cluster): select not allowed in cluster mode by @adiholden in #1288
- feat(cluster): Implement
CLUSTER SLOTS
. by @chakaz in #1289 - bug(memory): read LXC memory.limit_in_bytes too by @hermanbanken in #1293
- refactor(cluster): Unify cluster-disabled error message. by @chakaz in #1296
- feat(cluster): Implement CLUSTER NODES command. by @chakaz in #1298
- chore: Silence unwanted asyncio clutter by @royjacobson in #1299
- Search: Basic shard state by @dranikpg in #1249
- bug(cluster): Fix failing cluster test. by @chakaz in #1300
- chore: improve search tests + fixes by @dranikpg in #1303
- fix: fix search test by @dranikpg in #1306
- feat(cluster): first config set drop all entries not owned by node by @adiholden in #1301
- Add bison to build process, and libxml2 to runtime by @chakaz in #1308
- fix: Batch array length before sending its contents by @romange in #1287
- Add latest dependencies. by @chakaz in #1310
- feat(server): Add versioning to dragonfly replication by @royjacobson in #1307
- fix: werror in ci and warning that slipped by by @royjacobson in #1297
- feat: Support ACKs from replica to master by @royjacobson in #1243
- refactor(cluster): Use
GetEmulatedShardInfo()
forCLUSTER INFO
. by @chakaz in #1317 - fix: Clarify logging for snapshots loading. by @royjacobson in #1312
- fix: remove redundant list assertions by @andydunstall in #1338
- feat(streams): Add support for XTRIM by @andydunstall in #1337
- Use search indices by @dranikpg in #1294
- fix: Skip optional WEIGHT param in ft.create by @dranikpg in #1340
- Chore: Clean up interface of Replica::ReadRespReply by @royjacobson in #1330
- feat(cluster): Allow actions on non-owned keys on replication port. by @chakaz in #1334
- chore: Double regression tests timeout (10m->20m) by @chakaz in #1350
- feat: Support tags in search by @dranikpg in #1341
- fix(cluster): Fix crash when getting
DFLYCLUSTER GETSLOTINFO
with no other args. by @chakaz in #1351 - fix(server): Return null when
HRANDKEY
doesn't find a key. by @chakaz in #1354 - feat(server): debug poplulate add slots option by @adiholden in #1348
- fix: fix search_test after incorrect rebase by @dranikpg in #1356
- feat(zset family): Implement ZDiff command issue #1311 by @kostasrim in #1333
- feat(cluster): Add
total_reads
andtotal_writes
toGETSLOTSINFO
. by @chakaz in #1355 - fix(cluster): Fix failing test due to automatic merge by @chakaz in #1359
- fix(replication): Restart replication upon receiving
FLUSHALL
during full sync by @chakaz in #1347 - test(cluster): Test that cluster works with a standard cluster client. by @chakaz in #1336
- chore(server): Move tests to their respective subdir by @chakaz in #1360
- chore: Add blpop crash diagnostics by @dranikpg in #1358
- fix: fix linsert pivot by @andydunstall in #1365
- fix(alpine): Add libxml2 into the build pipeline by @Pothulapati in #1363
- fix(replication): Destroy rdb saver on the same thread it was created by @chakaz in #1366
- feat(ci): Test the built docker image by @Pothulapati in #1240
- CGroup v1 detection by @talbii in #1329
- bug(debug populate): fix debug populate keys by @adiholden in #1370
- feat(cluster): Use thread-local cluster config by @chakaz in #1361
- fix(server): Do more aggressive batching. by @royjacobson in #1375
- fix(xinfo): send integer info in correct...
v1.3.0
Dragonfly v1.3.0
New Dragonfly release! Some prominent changes include:
- Support for PFADD, PFCOUNT, PFMERGE commands - thanks to @chakaz
- Extend HELLO support to AUTH and SETNAME options - thank you @rueian
- XGROUP now supports MKSTREAM option - thanks to @Abhra303 !
- Performance improvements when running MULTI/EXEC transactions (@dranikpg)
- Dragonfly can now listen on a unix domain socket without opening a TCP port (@talbii)
What's Changed
- feat: Add unicode support and replace flex with reflex. by @romange in #1143
- don't listen for TCP connections when
--port 0
is passed by @talbii in #1113 - fix(server): Tweaks for replication info by @royjacobson in #1147
- Dispatch queue backpressure and batching by @dranikpg in #1118
- Update README.md by @worldsoup in #1145
- feat: Extend parsing to field impressions by @romange in #1154
- feat(server): allow AUTH and SETNAME options in the HELLO command by @rueian in #1156
- feat: ignore MULTI/EXEC if the transaction consists of EVAL commands by @romange in #1157
- feat(server): Add support for PFADD and PFCOUNT by @chakaz in #1152
- chore: Tweak debug symbols generation for releases by @royjacobson in #1139
- fix: 'xgroup help' should show help message by @romange in #1159
- fix(server): Fix typo in CompactObj::operator== by @royjacobson in #1165
- chore: Fix errors/warnings in GCC13 by @royjacobson in #1155
- fix(server): Wrong replication state by @royjacobson in #1150
- fix: fix replica closing socket by @dranikpg in #1167
- Detect possible async calls in scripts by @dranikpg in #1122
- fix: fix script body access by @dranikpg in #1169
- fix: fix passing scripts by @dranikpg in #1170
- chore: Update helio by @royjacobson in #1171
- fix: remove preliminary socket close in replica by @dranikpg in #1172
- chore(regression tests) : remove replication tests from arm host runner by @adiholden in #1174
- feat(redis): Add crc16 redis function by @adiholden in #1173
- feat(xgroup): support MKSTREAM for xgroup create by @Abhra303 in #1176
- chore: improve xadd performance and remove redundant allocations by @romange in #1160
XREVRANGE
should expect arguments in reverse order by @talbii in #1177- PERSIST returns 0 when key has no expiry by @talbii in #1178
- Remove blpop FindFirst hop after wakeup by @dranikpg in #1168
- feat(server): Implement PFMERGE by @chakaz in #1180
- feat: simple AST for search by @dranikpg in #1175
- chore: pull helio by @dranikpg in #1182
- Enable unlock for all tests. by @chakaz in #1185
- Support fields in search mvp by @dranikpg in #1184
- fix: fix parsing nested arrays by @andydunstall in #1189
- chore: Add a basic clang-tidy config by @royjacobson in #1192
- Basic search by @dranikpg in #1187
- feat(admin): Implement admin_nopass flag by @pawelKapl in #1193
- feat(cluster): check command keys ownership by @adiholden in #1194
- chore: update helio by @romange in #1199
- feat: Implement rdb snapshot write directly into s3. by @romange in #1205
- fix: use redis.asyncio instead of aioredis by @dranikpg in #1206
- fix: fix duplicated dependency by @dranikpg in #1209
- chore: Add vlog printings every time we switch global state by @romange in #1208
- fix: fix test connection name by @dranikpg in #1211
- feat: implement ZINTERCARD by @daniel-shimon in #1197
- fix(tests):Small fix to redis replication test by @ashotland in #1213
- fix: handle no key commands in slot check by @dranikpg in #1207
- feat(server): SetConfig() for ClusterConfig. by @chakaz in #1202
- chore: Add bison to release build dependencies by @romange in #1215
- Fix: Check buffer size in JournalReader::ReadString before writing by @royjacobson in #1218
- fix: Lock before accessing slots_ by @chakaz in #1219
- feat: search json support + client tests by @dranikpg in #1210
- feat(cluser): support GETSLOTINFO by @adiholden in #1217
- fix: use strings to keep the result of GetBucketPath() by @romange in #1225
- chore(deps): bump redis from 4.3.4 to 4.4.4 in /tools by @dependabot in #1221
- Support MINID, NOMKSTREAM and LIMIT options for XADD command by @Abhra303 in #1201
- bug(server): fix cash SET mykey 123 [PX/EX] with no px arg by @adiholden in #1228
- opt: Slightly less allocations in OpaqueObjLoader::CreateHMap by @royjacobson in #1227
- feat(cluster): impl slot data delete by @adiholden in #1224
- feat(server): Implement
DFLY CLUSTER CONFIG
command. by @chakaz in #1223
New Contributors
- @rueian made their first contribution in #1156
- @Abhra303 made their first contribution in #1176
- @andydunstall made their first contribution in #1189
- @pawelKapl made their first contribution in #1193
- @daniel-shimon made their first contribution in #1197
Huge thanks to all the contributors! ❤️
Full Changelog: v1.2.1...v1.3.0