v1.24.0
Dragonfly v1.24.0
It's a maintenance release with mostly performance and bug fixes for edge cases.
Some prominent changes include:
- feat: add HEXPIRE and FIELDEXPIRE by @NegatioN #3780
- fix BITPOS command responses by @Diskein #3910
- add allcommands/nocommands to ACL rules by @Lakshyadevelops #3783
What's Changed
- fix: Fix flaky
test test_acl_revoke_pub_sub_while_subscribed
by @chakaz in #3768 - chore: Forbid replicating a replica by @chakaz in #3779
- fix: GETRANGE params validation by @BorysTheDev in #3781
- fix: bitop do not add dst key if result is empty by @kostasrim in #3751
- chore(acl_family): add allcomands and nocommands by @Lakshyadevelops in #3783
- chore: remove goto statements by @kostasrim in #3791
- chore: ScheduleInternal refactoring by @romange in #3794
- test: update test_noreply_pipeline to prevent false fail by @BorysTheDev in #3801
- fix: bitcount invalid range by @BorysTheDev in #3792
- fix(generic_family): Update indexes in the RESTORE and RENAME commands by @BagritsevichStepan in #3803
- chore: cleanup not used opcodes in replication by @adiholden in #3804
- chore: tune TieredStorageTest.MemoryPressure by @romange in #3805
- fix: make sure dfly_bench reliably connects by @romange in #3802
- chore: reformat listpack according to valkey 8 by @romange in #3810
- fix: empty strings and Nan in the sort command by @BorysTheDev in #3809
- chore: refactor XRead by @dranikpg in #3775
- chore: singlehop XREAD by @dranikpg in #3817
- chore: introduce an optimized integer compare algorithm for lists by @romange in #3813
- chore: add a benchmark comparing lpStringToInt64 to SimpleAtoi by @romange in #3815
- feat(rdb_load): add support for loading huge sets by @andydunstall in #3807
- chore: now it's not needed to allocate quicklistIter on heap by @romange in #3814
- fix(rdb_load): fix loading huge hmaps with ttl by @andydunstall in #3825
- chore: allow config set notify_keyspace_events by @kostasrim in #3790
- chore: do not close connections at the end of pytest by @kostasrim in #3811
- fix(rdb_load): fix appending to an expired key by @andydunstall in #3829
- chore: add logs to test_acl_cat_commands_multi_exec_squash by @kostasrim in #3826
- chore: optimize element removal for integer lists by @romange in #3827
- refactor: remove CmdArgParser::ToUpper() by @BorysTheDev in #3831
- chore: add pending_ops to disk stats by @romange in #3837
- feat(rdb_load): add support for loading huge hmaps and zsets by @andydunstall in #3823
- add dense_set.SetExpiryTime in preparation for fieldexpire by @NegatioN in #3780
- test: more stabe test_bgsave_and_save by @adiholden in #3843
- chore: WrapSds from family_utils.h by @dranikpg in #3818
- chore: add defrag logic for sets by @kostasrim in #3833
- chore: extend RobjWrapper::sz_ to 2^56 by @romange in #3849
- feat(rdb_load): add support for loading huge lists by @andydunstall in #3850
- fix(rdb_load): fix partial reads dropping elements by @andydunstall in #3853
- refactor: refactor fakeredis tests by @cunla in #3852
- chore: simplify CloneBatch code by @romange in #3862
- feat: add HEXPIRE and FIELDEXPIRE by @NegatioN in #3842
- chore: improve performance of ClearInternal by @romange in #3863
- chore: Remove DenseSet::AddOrFindDense and AddSds by @romange in #3864
- chore: Implement AddMany method by @romange in #3866
- chore: ClearInternal now can clear partially by @romange in #3867
- feat(rdb_load): add support for loading huge streams by @andydunstall in #3855
- chore: Refactor AddMany by @romange in #3869
- chore: run memory decommit after snapshot load/save by @kostasrim in #3828
- chore: reduce usage of ToUpper by @romange in #3874
- opt: Optimize
AllocationTracker
to be efficient when enabled by @chakaz in #3875 - chore: allow rdb version 12 by @kostasrim in #3860
- chore: lock keys for optimistic transactions by @kostasrim in #3865
- fix: Do not publish to connections without context by @chakaz in #3873
- fix: Do not kill Dragonfly on failed
DFLY LOAD
by @chakaz in #3892 - chore: collection size by @dranikpg in #3844
- chore: skip flaky test_noreply_pipeline by @kostasrim in #3903
- fix(cluster): fix unknown migration error by @andydunstall in #3899
- chrore: parse cgroup v2 by @kostasrim in #3857
- feat(search): STOPWORDS by @dranikpg in #3851
- chore: schedule chains by @romange in #3819
- fix!: fix BITPOS command responses (#3893) by @Diskein in #3910
- fix: prevents Dragonfly from blocking in epoll during snapshotting by @romange in #3911
- fix: macos build by @romange in #3912
- chore(search): Rax TreeMap by @dranikpg in #3909
- chore: Add
--allocator_tracker
for default tracking by @chakaz in #3901 - chore: relax assertion in test_noreply_pipeline by @kostasrim in #3908
- feat(search): Prefix search* by @dranikpg in #3913
- fix: pre-commit ci workflow by @kostasrim in #3917
- fix: Support replicating Valkey and Redis 7.2 by @chakaz in #3927
- feat(server): use listpack node encoding for list by @adiholden in #3914
- fix: Fix
test_flushall_in_full_sync
by @chakaz in #3929 - fix: dragonfly_connection should only access the original reply_builder by @romange in #3924
- chore(search): Fix deprecated functions by @dranikpg in #3933
New Contributors
- @Lakshyadevelops made their first contribution in #3783
- @NegatioN made their first contribution in #3780
- @Diskein made their first contribution in #3910
Huge thanks to all the contributors! ❤️
Full Changelog: v1.23.0...v1.24.0