Dragonfly v1.22.0
Some prominent changes include:
- Lots of stability fixes around JSON and Search APIS:
#3459, #3284, #3537, #3544,#3580, #3582, #3578, #3591, #3597, #3539 - Support
HELLO AUTH
handshake: #3486 - Implement FT.TAGVALS: #3493
- Introduce Dragonfly specific lua pragmas: #3517
- Memcache now replicates flags correctly: #3538
- Memcache API now supports absolute timestamps as well: #3607
- PEXPIRETIME and EXPIRETIME are implemented by @Eunoia1729 - thank you!
- Last but not least, a significant contribution by @cunla: a massive test suite, likely the largest in Dragonfly's history, with 12K lines of code. This contribution has sparked further efforts to enhance Dragonfly's compatibility and stability. The initial results are included in this release.
What's Changed
- fix: missing logs on ci timeout by @kostasrim in #3452
- fix: JSON.MSET command by @BorysTheDev in #3459
- chore: integrate quicklist changes from valkey by @romange in #3440
- feat(json_family): Add support of the JSON legacy mode by @BagritsevichStepan in #3284
- fix: pytest teardown exception in os.remove(LAST_LOGS) by @kostasrim in #3463
- chore: change how we track memory_budget during evictions by @romange in #3457
- chore: add timeout to replication sockets by @romange in #3434
- chore(server): Remove old blocking debug by @dranikpg in #3460
- chore: SinkReplyBuilder2 with vec batching by @dranikpg in #3454
- feat: Allow pre-declaring Lua SHAs to run with undeclared keys by @chakaz in #3465
- chore(server): Use parser more in list_family by @dranikpg in #3461
- fix: Make replica's
REPLCONF IP-ADDRESS
optional by @chakaz in #3473 - chore: make tiered_test more reliable by @romange in #3477
- chore(facade): Update SinkReplyBuilder2 by @dranikpg in #3474
- refactor: set info_replication_valkey_compatible=true by @BorysTheDev in #3467
- chore: relax the version check in test_replicate_old_master by @romange in #3478
- chore: Download Dragonfly versions only when needed by @chakaz in #3479
- fix: division by zero bug by @romange in #3482
- test: fix test_scripts by @BorysTheDev in #3485
- chore(facade): RedisReplyBuilder2 base by @dranikpg in #3475
- chore(facade): MCReplyBuilder2 by @dranikpg in #3480
- chore(facade): RedisReplyBuilder2 (extensions) by @dranikpg in #3481
- fix: big value serialization corner cases by @kostasrim in #3430
- fix: HELLO AUTH with non default user by @kostasrim in #3486
- fix: flake in teardown of test_unknown_dfly_env by @kostasrim in #3487
- fix: test_replicate_old_master missing serialization_max_chunk_size by @kostasrim in #3498
- chore: add logs to debug tiered memory failures by @romange in #3499
- feat: implement FT.TAGVALS by @romange in #3493
- test: fix test_acl_deluser by @BorysTheDev in #3488
- fix: sanitizers post failure on google chat by @kostasrim in #3496
- chore(generic_family): Fix bad data format error in the RESTORE command by @BagritsevichStepan in #3501
- fix: sanitizers false positives by @kostasrim in #3495
- feat: Expose replica_reconnect_count for Prometheus metrics by @BagritsevichStepan in #3370
- fix: pytest warnings by @kostasrim in #3497
- fix: missing virtual destructors in ReplyBuilder2 by @kostasrim in #3506
- chore: split engine_shard file from engine_shard_set by @romange in #3507
- chore: introduce a secondary TaskQueue for shards by @romange in #3508
- fix: clang warnings by @romange in #3509
- chore: reduce pipelining latency by reusing existing shard fibers by @romange in #3494
- fix: bugs around the growth of a tiered file by @romange in #3516
- chore: Change Lua embedded flags syntax by @chakaz in #3517
- feat(cluster): Allow appending RDB to existing store by @chakaz in #3505
- fix: disable ThreadLocalMutex when big value ser is off by @kostasrim in #3521
- chore(io): Introduce (carefully) new io with use_new_io flag by @dranikpg in #3513
- chore(io): Optimize repeated ReservePiece calls by @dranikpg in #3525
- fix: disable sanitizers false positive by @kostasrim in #3522
- chore(config): make pipeline_squash configurable by @dranikpg in #3529
- chore(traffic loger): use pipelining and print/analyze commands by @dranikpg in #3527
- fix: skip empty objects on load and replication by @kostasrim in #3514
- fix: deadlock in Heartbeat() by @kostasrim in #3530
- fix(search_family): Add error on creating indexes from non-zero databases by @BagritsevichStepan in #3537
- fix: macos build by @kostasrim in #3536
- fix: MC flags size and serialization #3134 by @BorysTheDev in #3538
- fix(transaction): Don't set continuation for blocking by @dranikpg in #3540
- fix: named volume permissions in docker by @romange in #3518
- fix(jsonpath): Add JsonPath grammar for the child identifier in brackets by @BagritsevichStepan in #3533
- fix: build errors in sanitizers daily workflow by @kostasrim in #3542
- test: tests using fakeredis to check compatibility by @cunla in #3534
- chore: fix search replication by @dranikpg in #3547
- chore: add deallocation logs in the allocation tracker by @romange in #3549
- fix: fakeredis tests support python 3.10 by @cunla in #3550
- feat(server_family): Add backup/restore Prometheus metrics by @BagritsevichStepan in #3520
- docs: Fakeredis tests README by @cunla in #3552
- fix: zinterstore correctly finds weights by @romange in #3554
- fix(search_family): Fix query parsing for the integer tags in OR expression by @BagritsevichStepan in #3544
- chore(server): Fix watch by @dranikpg in #3557
- chore(search): fix numeric index query in rev order by @dranikpg in #3555
- chore: allow limiting pipelining queue by length by @romange in #3551
- fix: add unsupported_server_types to fakeredis tests by @cunla in #3560
- fix: string compatibility issues by @romange in #3564
- fix(server): Fix ZRANGEBYLEX limit params by @dranikpg in #3562
- fix: compatibility around list and string commands by @romange in #3565
- chore(server): Unify zset arg parsing by @dranikpg in #3563
- fix: compatibility around list,string and sort commands by @romange in #3568
- chore(server): Sort correctly in ZINTER by @dranikpg in #3566
- chore(server): Unify zset boolean operations into single function by @dranikpg in #3567
- chore(transaction): More blocking tests by @dranikpg in #3546
- fix: delete empty dense sets in HGetGeneric by @kostasrim in #3543
- chore(search): Silence query parser error by @dranikpg in #3570
- chore: improve compatibility of set and ping commands by @romange in #3569
- fix: disable failing test_cron_snapshot_failed_saving by @kostasrim in #3571
- fix: disable test_cluster_flushall_during_migration by @kostasrim in #3573
- chore: add -Wthread-analysis and annotate (part 1/2) by @kostasrim in #3502
- feat(generic_family): Implement EXPIRETIME and PEXPIRETIME commands by @Eunoia1729 in #3524
- chore: allow running dragonfly pytests in repeat by @romange in #3577
- fix(json_family): Fix json get crash due to an invalid json path by @BagritsevichStepan in #3580
- fix(json_family): Fix JSON.GET crash for the multiple legacy mode paths by @BagritsevichStepan in #3582
- fix: return an error when invalid number of arguments is passed. by @romange in #3584
- feat: add oom_deny_ratio to mutable config by @romange in #3585
- fix: warning as error on sanitizers build by @kostasrim in #3587
- feat: add escaping symbols for tag search by @BorysTheDev in #3578
- fix: skip test_replica_reconnections_after_network_disconnect by @kostasrim in #3589
- docs(readme): Fix data mistake by @DerickIT in #3590
- chore: remove DflyVersion::VER0 by @romange in #3593
- refactor: remove double conversion from str to number to str in search by @BorysTheDev in #3591
- chore(deps): bump aiohttp from 3.8.4 to 3.10.2 in /tests/dragonfly by @dependabot in #3600
- refactor: remove toUpper() from cmd_arg_parser by @BorysTheDev in #3599
- fix: JSON.STRAPPEND by @romange in #3597
- chore(deps): bump golang.org/x/net from 0.7.0 to 0.23.0 in /contrib/charts/dragonfly by @dependabot in #3601
- chore(deps): bump gopkg.in/yaml.v3 from 3.0.0-20210107192922-496545a6307b to 3.0.0 in /tools/replay by @dependabot in #3603
- chore(deps): bump google.golang.org/protobuf from 1.26.0 to 1.33.0 in /contrib/charts/dragonfly by @dependabot in #3604
- fix: xreadgroup replies as a map for RESP3 by @romange in #3576
- chore: enable experimental_new_io by default. by @romange in #3605
- fix(server_family): Remove search indexes during the FLUSHALL command by @BagritsevichStepan in #3539
- feat(acl): add pub/sub by @kostasrim in #3574
- chore: enable -Werror=thread-safety and add missing annotations (part 2/2) by @kostasrim in #3595
- feat: add slave_repl_offset to the replication section. by @romange in #3596
- fix(json_family): Fix JsonFromString method by @BagritsevichStepan in #3602
- fix(grafana): Fix grafana dragonfly dashboard datasource by @applike-ss in #3608
- fix: debug crash inside parsing of ZRANGE by @romange in #3611
- chore: run fakeredis flow with the debug build by @romange in #3612
- chore: Split
--cluster_announce_ip
and--replica_announce_ip
by @chakaz in #3615 - fix: fix expiration processing for set command by @BorysTheDev in #3607
- fix pytest: use generic random dbfilename in tests by @adiholden in #3617
- fix(bug): zinter command should run on replica by @adiholden in #3620
- fix(test_auth_resp3_bug): release build failing by @kostasrim in #3621
- chore: improve debug logs in dragonfly_connection by @romange in #3624
- fix: edge cases around mismatched path in json code by @romange in #3609
- test: fix search tests by @BorysTheDev in #3625
- refactor: remove extra code from CmdArgParser by @BorysTheDev in #3619
- fix: limit parsing in zrange commands by @romange in #3626
- chore: disable big value ser on reg tests by @kostasrim in #3629
- fix: crash when passing empty arguments by @romange in #3627
- fix: 'renamenx foo foo' should return 0 if foo exists by @romange in #3630
- fix: debug help printed layout by @kostasrim in #3635
- fix: crash during SORT DESC call by @romange in #3637
New Contributors
- @cunla made their first contribution in #3534
- @Eunoia1729 made their first contribution in #3524
- @DerickIT made their first contribution in #3590
- @applike-ss made their first contribution in #3608
Full Changelog: v1.21.0...v1.22.0