-
Notifications
You must be signed in to change notification settings - Fork 910
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
chore: reduce pipelining latency by reusing existing shard fibers #3494
Conversation
4df9c8d
to
747e361
Compare
src/server/multi_command_squasher.cc
Outdated
fb2::BlockingCounter bc(num_shards); | ||
|
||
auto cb = [this, tx, bc]() mutable { | ||
this->SquashedHopCb(tx, EngineShard::tlocal()); | ||
bc->Dec(); | ||
}; | ||
|
||
for (unsigned i = 0; i < sharded_.size(); ++i) { | ||
if (!sharded_[i].cmds.empty()) | ||
shard_set->Add(i, cb); | ||
} | ||
bc->Wait(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Damn, yes, that's wasteful. nit: we have AwaitRunningOnShardQueue (though without predicate filter)
1863186
to
9dd5c07
Compare
This one actually is something I wanted to report. Also I saw that running many evalsha in pipeline causes huge spikes occasionally - p999 are getting close to 500ms. Seems like this would fix the issue? Or should I create a ticket? We are running latest 1.21.1. |
713fc90
to
c26415a
Compare
To prove the benefits, run `./dfly_bench --pipeline=50 -n 20000 --ratio 0:1 --qps=0 --key_maximum=1` Before: the average pipelining latency was 10ms After: the average pipelining latency is 5ms. Avg latency: pipelined_latency_usec / total_pipelined_squashed_commands Also, improved counting of squashed commands - to count actual squashed ones. Finally, remove global non-atomic mode: it has bugs with blocking commands and we used it only for tests anyways. Signed-off-by: Roman Gershman <roman@dragonflydb.io>
@RafalBielickiIM could you post an sample lua script here? do you use hashtags in your database? |
shard_set->AddL2(i, cb); | ||
} | ||
bc->Wait(); | ||
#else |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I kept it to keep debugging why there is a memory blow up with RunBlockingInParallel
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah but you still have to rebuild it, so copy paste replace would've done it 😛
We have 2 CPU + 8GB requests on those pods. (LIMIT is 3CPU & 12GB) Looking at traces we see spikes when running 10+ EVALSHA in pipeline. Example LUAs run in there
OR
@romange Maybe you have a suggestion for different config? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
👍🏻
@RafalBielickiIM it probably belongs to Discussions section and not to this PR. The short answer is that this PR won't help you with your use-case., sorry. |
You can try swapping import redis
import time
s = """
redis.pcall('GET', 'NEX')
for i = 1, 20 do
redis.apcall('PEXPIRE', 'key' .. i, 0)
end
"""
r = redis.Redis()
sha = r.script_load(s)
for _ in range(10):
p = r.pipeline(transaction=False)
for _ in range(50):
p.evalsha(sha, 0)
s = time.time()
p.execute()
print(1000 * (time.time() - s)) |
But I think the latency is caused by the fact the script touches multiple shards so it has tail latency which can not be avoided. |
So the last write commands can be squashed with apcall. But with 10 tail writes and 2-3 shards it's effect is questionable |
And for the rate limiting script consider using |
…22.0 ) (#5336) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/dragonflydb/dragonfly](https://redirect.github.com/dragonflydb/dragonfly) | minor | `v1.21.4` -> `v1.22.0` | --- ### Release Notes <details> <summary>dragonflydb/dragonfly (ghcr.io/dragonflydb/dragonfly)</summary> ### [`v1.22.0`](https://redirect.github.com/dragonflydb/dragonfly/releases/tag/v1.22.0) [Compare Source](https://redirect.github.com/dragonflydb/dragonfly/compare/v1.21.4...v1.22.0) ##### Dragonfly v1.22.0 Some prominent changes include: - Lots of stability fixes around JSON and Search APIS: [#​3459](https://redirect.github.com/dragonflydb/dragonfly/issues/3459), [#​3284](https://redirect.github.com/dragonflydb/dragonfly/issues/3284), [#​3537](https://redirect.github.com/dragonflydb/dragonfly/issues/3537), [#​3544](https://redirect.github.com/dragonflydb/dragonfly/issues/3544),[#​3580](https://redirect.github.com/dragonflydb/dragonfly/issues/3580), [#​3582](https://redirect.github.com/dragonflydb/dragonfly/issues/3582), [#​3578](https://redirect.github.com/dragonflydb/dragonfly/issues/3578), [#​3591](https://redirect.github.com/dragonflydb/dragonfly/issues/3591), [#​3597](https://redirect.github.com/dragonflydb/dragonfly/issues/3597), [#​3539](https://redirect.github.com/dragonflydb/dragonfly/issues/3539) - Support `HELLO AUTH` handshake: [#​3486](https://redirect.github.com/dragonflydb/dragonfly/issues/3486) - Implement FT.TAGVALS: [#​3493](https://redirect.github.com/dragonflydb/dragonfly/issues/3493) - Introduce Dragonfly specific lua pragmas: [#​3517](https://redirect.github.com/dragonflydb/dragonfly/issues/3517) - Memcache now replicates flags correctly: [#​3538](https://redirect.github.com/dragonflydb/dragonfly/issues/3538) - Memcache API now supports absolute timestamps as well: [#​3607](https://redirect.github.com/dragonflydb/dragonfly/issues/3607) - PEXPIRETIME and EXPIRETIME are implemented by [@​Eunoia1729](https://redirect.github.com/Eunoia1729) - thank you! - Last but not least, a significant contribution by [@​cunla](https://redirect.github.com/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](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3452 - fix: JSON.MSET command by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3459 - chore: integrate quicklist changes from valkey by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3440 - feat(json_family): Add support of the JSON legacy mode by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3284 - fix: pytest teardown exception in os.remove(LAST_LOGS) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3463 - chore: change how we track memory_budget during evictions by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3457 - chore: add timeout to replication sockets by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3434 - chore(server): Remove old blocking debug by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3460 - chore: SinkReplyBuilder2 with vec batching by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3454 - feat: Allow pre-declaring Lua SHAs to run with undeclared keys by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3465 - chore(server): Use parser more in list_family by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3461 - fix: Make replica's `REPLCONF IP-ADDRESS` optional by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3473 - chore: make tiered_test more reliable by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3477 - chore(facade): Update SinkReplyBuilder2 by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3474 - refactor: set info_replication_valkey_compatible=true by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3467 - chore: relax the version check in test_replicate_old_master by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3478 - chore: Download Dragonfly versions only when needed by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3479 - fix: division by zero bug by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3482 - test: fix test_scripts by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3485 - chore(facade): RedisReplyBuilder2 base by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3475 - chore(facade): MCReplyBuilder2 by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3480 - chore(facade): RedisReplyBuilder2 (extensions) by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3481 - fix: big value serialization corner cases by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3430 - fix: HELLO AUTH with non default user by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3486 - fix: flake in teardown of test_unknown_dfly_env by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3487 - fix: test_replicate_old_master missing serialization_max_chunk_size by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3498 - chore: add logs to debug tiered memory failures by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3499 - feat: implement FT.TAGVALS by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3493 - test: fix test_acl_deluser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3488 - fix: sanitizers post failure on google chat by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3496 - chore(generic_family): Fix bad data format error in the RESTORE command by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3501 - fix: sanitizers false positives by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3495 - feat: Expose replica_reconnect_count for Prometheus metrics by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3370 - fix: pytest warnings by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3497 - fix: missing virtual destructors in ReplyBuilder2 by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3506 - chore: split engine_shard file from engine_shard_set by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3507 - chore: introduce a secondary TaskQueue for shards by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3508 - fix: clang warnings by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3509 - chore: reduce pipelining latency by reusing existing shard fibers by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3494 - fix: bugs around the growth of a tiered file by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3516 - chore: Change Lua embedded flags syntax by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3517 - feat(cluster): Allow appending RDB to existing store by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3505 - fix: disable ThreadLocalMutex when big value ser is off by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3521 - chore(io): Introduce (carefully) new io with use_new_io flag by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3513 - chore(io): Optimize repeated ReservePiece calls by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3525 - fix: disable sanitizers false positive by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3522 - chore(config): make pipeline_squash configurable by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3529 - chore(traffic loger): use pipelining and print/analyze commands by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3527 - fix: skip empty objects on load and replication by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3514 - fix: deadlock in Heartbeat() by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3530 - fix(search_family): Add error on creating indexes from non-zero databases by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3537 - fix: macos build by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3536 - fix: MC flags size and serialization [#​3134](https://redirect.github.com/dragonflydb/dragonfly/issues/3134) by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3538 - fix(transaction): Don't set continuation for blocking by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3540 - fix: named volume permissions in docker by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3518 - fix(jsonpath): Add JsonPath grammar for the child identifier in brackets by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3533 - fix: build errors in sanitizers daily workflow by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3542 - test: tests using fakeredis to check compatibility by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3534 - chore: fix search replication by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3547 - chore: add deallocation logs in the allocation tracker by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3549 - fix: fakeredis tests support python 3.10 by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3550 - feat(server_family): Add backup/restore Prometheus metrics by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3520 - docs: Fakeredis tests README by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3552 - fix: zinterstore correctly finds weights by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3554 - fix(search_family): Fix query parsing for the integer tags in OR expression by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3544 - chore(server): Fix watch by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3557 - chore(search): fix numeric index query in rev order by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3555 - chore: allow limiting pipelining queue by length by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3551 - fix: add unsupported_server_types to fakeredis tests by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3560 - fix: string compatibility issues by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3564 - fix(server): Fix ZRANGEBYLEX limit params by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3562 - fix: compatibility around list and string commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3565 - chore(server): Unify zset arg parsing by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3563 - fix: compatibility around list,string and sort commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3568 - chore(server): Sort correctly in ZINTER by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3566 - chore(server): Unify zset boolean operations into single function by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3567 - chore(transaction): More blocking tests by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3546 - fix: delete empty dense sets in HGetGeneric by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3543 - chore(search): Silence query parser error by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3570 - chore: improve compatibility of set and ping commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3569 - fix: disable failing test_cron_snapshot_failed_saving by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3571 - fix: disable test_cluster_flushall_during_migration by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3573 - chore: add -Wthread-analysis and annotate (part 1/2) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3502 - feat(generic_family): Implement EXPIRETIME and PEXPIRETIME commands by [@​Eunoia1729](https://redirect.github.com/Eunoia1729) in [dragonflydb/dragonfly#3524 - chore: allow running dragonfly pytests in repeat by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3577 - fix(json_family): Fix json get crash due to an invalid json path by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3580 - fix(json_family): Fix JSON.GET crash for the multiple legacy mode paths by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3582 - fix: return an error when invalid number of arguments is passed. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3584 - feat: add oom_deny_ratio to mutable config by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3585 - fix: warning as error on sanitizers build by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3587 - feat: add escaping symbols for tag search by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3578 - fix: skip test_replica_reconnections_after_network_disconnect by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3589 - docs(readme): Fix data mistake by [@​DerickIT](https://redirect.github.com/DerickIT) in [dragonflydb/dragonfly#3590 - chore: remove DflyVersion::VER0 by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3593 - refactor: remove double conversion from str to number to str in search by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3591 - chore(deps): bump aiohttp from 3.8.4 to 3.10.2 in /tests/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3600 - refactor: remove toUpper() from cmd_arg_parser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3599 - fix: JSON.STRAPPEND by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3597 - chore(deps): bump golang.org/x/net from 0.7.0 to 0.23.0 in /contrib/charts/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3601 - chore(deps): bump gopkg.in/yaml.v3 from 3.0.0-20210107192922-496545a6307b to 3.0.0 in /tools/replay by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3603 - chore(deps): bump google.golang.org/protobuf from 1.26.0 to 1.33.0 in /contrib/charts/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3604 - fix: xreadgroup replies as a map for RESP3 by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3576 - chore: enable experimental_new_io by default. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3605 - fix(server_family): Remove search indexes during the FLUSHALL command by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3539 - feat(acl): add pub/sub by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3574 - chore: enable -Werror=thread-safety and add missing annotations (part 2/2) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3595 - feat: add slave_repl_offset to the replication section. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3596 - fix(json_family): Fix JsonFromString method by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3602 - fix(grafana): Fix grafana dragonfly dashboard datasource by [@​applike-ss](https://redirect.github.com/applike-ss) in [dragonflydb/dragonfly#3608 - fix: debug crash inside parsing of ZRANGE by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3611 - chore: run fakeredis flow with the debug build by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3612 - chore: Split `--cluster_announce_ip` and `--replica_announce_ip` by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3615 - fix: fix expiration processing for set command by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3607 - fix pytest: use generic random dbfilename in tests by [@​adiholden](https://redirect.github.com/adiholden) in [dragonflydb/dragonfly#3617 - fix(bug): zinter command should run on replica by [@​adiholden](https://redirect.github.com/adiholden) in [dragonflydb/dragonfly#3620 - fix(test_auth_resp3\_bug): release build failing by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3621 - chore: improve debug logs in dragonfly_connection by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3624 - fix: edge cases around mismatched path in json code by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3609 - test: fix search tests by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3625 - refactor: remove extra code from CmdArgParser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3619 - fix: limit parsing in zrange commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3626 - chore: disable big value ser on reg tests by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3629 - fix: crash when passing empty arguments by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3627 - fix: 'renamenx foo foo' should return 0 if foo exists by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3630 - fix: debug help printed layout by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3635 - fix: crash during SORT DESC call by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3637 ##### New Contributors - [@​cunla](https://redirect.github.com/cunla) made their first contribution in [dragonflydb/dragonfly#3534 - [@​Eunoia1729](https://redirect.github.com/Eunoia1729) made their first contribution in [dragonflydb/dragonfly#3524 - [@​DerickIT](https://redirect.github.com/DerickIT) made their first contribution in [dragonflydb/dragonfly#3590 - [@​applike-ss](https://redirect.github.com/applike-ss) made their first contribution in [dragonflydb/dragonfly#3608 **Full Changelog**: dragonflydb/dragonfly@v1.21.0...v1.22.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC42NC4yIiwidXBkYXRlZEluVmVyIjoiMzguNjQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==--> Co-authored-by: lumiere-bot[bot] <98047013+lumiere-bot[bot]@users.noreply.github.com>
#945) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [ghcr.io/dragonflydb/dragonfly](https://redirect.github.com/dragonflydb/dragonfly) | minor | `v1.21.4` -> `v1.22.0` | --- > [!WARNING] > Some dependencies could not be looked up. Check the Dependency Dashboard for more information. --- ### Release Notes <details> <summary>dragonflydb/dragonfly (ghcr.io/dragonflydb/dragonfly)</summary> ### [`v1.22.0`](https://redirect.github.com/dragonflydb/dragonfly/releases/tag/v1.22.0) [Compare Source](https://redirect.github.com/dragonflydb/dragonfly/compare/v1.21.4...v1.22.0) ##### Dragonfly v1.22.0 Some prominent changes include: - Lots of stability fixes around JSON and Search APIS: [#​3459](https://redirect.github.com/dragonflydb/dragonfly/issues/3459), [#​3284](https://redirect.github.com/dragonflydb/dragonfly/issues/3284), [#​3537](https://redirect.github.com/dragonflydb/dragonfly/issues/3537), [#​3544](https://redirect.github.com/dragonflydb/dragonfly/issues/3544),[#​3580](https://redirect.github.com/dragonflydb/dragonfly/issues/3580), [#​3582](https://redirect.github.com/dragonflydb/dragonfly/issues/3582), [#​3578](https://redirect.github.com/dragonflydb/dragonfly/issues/3578), [#​3591](https://redirect.github.com/dragonflydb/dragonfly/issues/3591), [#​3597](https://redirect.github.com/dragonflydb/dragonfly/issues/3597), [#​3539](https://redirect.github.com/dragonflydb/dragonfly/issues/3539) - Support `HELLO AUTH` handshake: [#​3486](https://redirect.github.com/dragonflydb/dragonfly/issues/3486) - Implement FT.TAGVALS: [#​3493](https://redirect.github.com/dragonflydb/dragonfly/issues/3493) - Introduce Dragonfly specific lua pragmas: [#​3517](https://redirect.github.com/dragonflydb/dragonfly/issues/3517) - Memcache now replicates flags correctly: [#​3538](https://redirect.github.com/dragonflydb/dragonfly/issues/3538) - Memcache API now supports absolute timestamps as well: [#​3607](https://redirect.github.com/dragonflydb/dragonfly/issues/3607) - PEXPIRETIME and EXPIRETIME are implemented by [@​Eunoia1729](https://redirect.github.com/Eunoia1729) - thank you! - Last but not least, a significant contribution by [@​cunla](https://redirect.github.com/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](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3452 - fix: JSON.MSET command by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3459 - chore: integrate quicklist changes from valkey by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3440 - feat(json_family): Add support of the JSON legacy mode by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3284 - fix: pytest teardown exception in os.remove(LAST_LOGS) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3463 - chore: change how we track memory_budget during evictions by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3457 - chore: add timeout to replication sockets by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3434 - chore(server): Remove old blocking debug by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3460 - chore: SinkReplyBuilder2 with vec batching by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3454 - feat: Allow pre-declaring Lua SHAs to run with undeclared keys by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3465 - chore(server): Use parser more in list_family by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3461 - fix: Make replica's `REPLCONF IP-ADDRESS` optional by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3473 - chore: make tiered_test more reliable by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3477 - chore(facade): Update SinkReplyBuilder2 by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3474 - refactor: set info_replication_valkey_compatible=true by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3467 - chore: relax the version check in test_replicate_old_master by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3478 - chore: Download Dragonfly versions only when needed by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3479 - fix: division by zero bug by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3482 - test: fix test_scripts by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3485 - chore(facade): RedisReplyBuilder2 base by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3475 - chore(facade): MCReplyBuilder2 by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3480 - chore(facade): RedisReplyBuilder2 (extensions) by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3481 - fix: big value serialization corner cases by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3430 - fix: HELLO AUTH with non default user by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3486 - fix: flake in teardown of test_unknown_dfly_env by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3487 - fix: test_replicate_old_master missing serialization_max_chunk_size by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3498 - chore: add logs to debug tiered memory failures by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3499 - feat: implement FT.TAGVALS by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3493 - test: fix test_acl_deluser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3488 - fix: sanitizers post failure on google chat by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3496 - chore(generic_family): Fix bad data format error in the RESTORE command by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3501 - fix: sanitizers false positives by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3495 - feat: Expose replica_reconnect_count for Prometheus metrics by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3370 - fix: pytest warnings by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3497 - fix: missing virtual destructors in ReplyBuilder2 by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3506 - chore: split engine_shard file from engine_shard_set by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3507 - chore: introduce a secondary TaskQueue for shards by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3508 - fix: clang warnings by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3509 - chore: reduce pipelining latency by reusing existing shard fibers by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3494 - fix: bugs around the growth of a tiered file by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3516 - chore: Change Lua embedded flags syntax by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3517 - feat(cluster): Allow appending RDB to existing store by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3505 - fix: disable ThreadLocalMutex when big value ser is off by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3521 - chore(io): Introduce (carefully) new io with use_new_io flag by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3513 - chore(io): Optimize repeated ReservePiece calls by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3525 - fix: disable sanitizers false positive by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3522 - chore(config): make pipeline_squash configurable by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3529 - chore(traffic loger): use pipelining and print/analyze commands by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3527 - fix: skip empty objects on load and replication by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3514 - fix: deadlock in Heartbeat() by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3530 - fix(search_family): Add error on creating indexes from non-zero databases by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3537 - fix: macos build by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3536 - fix: MC flags size and serialization [#​3134](https://redirect.github.com/dragonflydb/dragonfly/issues/3134) by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3538 - fix(transaction): Don't set continuation for blocking by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3540 - fix: named volume permissions in docker by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3518 - fix(jsonpath): Add JsonPath grammar for the child identifier in brackets by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3533 - fix: build errors in sanitizers daily workflow by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3542 - test: tests using fakeredis to check compatibility by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3534 - chore: fix search replication by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3547 - chore: add deallocation logs in the allocation tracker by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3549 - fix: fakeredis tests support python 3.10 by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3550 - feat(server_family): Add backup/restore Prometheus metrics by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3520 - docs: Fakeredis tests README by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3552 - fix: zinterstore correctly finds weights by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3554 - fix(search_family): Fix query parsing for the integer tags in OR expression by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3544 - chore(server): Fix watch by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3557 - chore(search): fix numeric index query in rev order by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3555 - chore: allow limiting pipelining queue by length by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3551 - fix: add unsupported_server_types to fakeredis tests by [@​cunla](https://redirect.github.com/cunla) in [dragonflydb/dragonfly#3560 - fix: string compatibility issues by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3564 - fix(server): Fix ZRANGEBYLEX limit params by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3562 - fix: compatibility around list and string commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3565 - chore(server): Unify zset arg parsing by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3563 - fix: compatibility around list,string and sort commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3568 - chore(server): Sort correctly in ZINTER by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3566 - chore(server): Unify zset boolean operations into single function by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3567 - chore(transaction): More blocking tests by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3546 - fix: delete empty dense sets in HGetGeneric by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3543 - chore(search): Silence query parser error by [@​dranikpg](https://redirect.github.com/dranikpg) in [dragonflydb/dragonfly#3570 - chore: improve compatibility of set and ping commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3569 - fix: disable failing test_cron_snapshot_failed_saving by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3571 - fix: disable test_cluster_flushall_during_migration by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3573 - chore: add -Wthread-analysis and annotate (part 1/2) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3502 - feat(generic_family): Implement EXPIRETIME and PEXPIRETIME commands by [@​Eunoia1729](https://redirect.github.com/Eunoia1729) in [dragonflydb/dragonfly#3524 - chore: allow running dragonfly pytests in repeat by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3577 - fix(json_family): Fix json get crash due to an invalid json path by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3580 - fix(json_family): Fix JSON.GET crash for the multiple legacy mode paths by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3582 - fix: return an error when invalid number of arguments is passed. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3584 - feat: add oom_deny_ratio to mutable config by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3585 - fix: warning as error on sanitizers build by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3587 - feat: add escaping symbols for tag search by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3578 - fix: skip test_replica_reconnections_after_network_disconnect by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3589 - docs(readme): Fix data mistake by [@​DerickIT](https://redirect.github.com/DerickIT) in [dragonflydb/dragonfly#3590 - chore: remove DflyVersion::VER0 by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3593 - refactor: remove double conversion from str to number to str in search by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3591 - chore(deps): bump aiohttp from 3.8.4 to 3.10.2 in /tests/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3600 - refactor: remove toUpper() from cmd_arg_parser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3599 - fix: JSON.STRAPPEND by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3597 - chore(deps): bump golang.org/x/net from 0.7.0 to 0.23.0 in /contrib/charts/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3601 - chore(deps): bump gopkg.in/yaml.v3 from 3.0.0-20210107192922-496545a6307b to 3.0.0 in /tools/replay by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3603 - chore(deps): bump google.golang.org/protobuf from 1.26.0 to 1.33.0 in /contrib/charts/dragonfly by [@​dependabot](https://redirect.github.com/dependabot) in [dragonflydb/dragonfly#3604 - fix: xreadgroup replies as a map for RESP3 by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3576 - chore: enable experimental_new_io by default. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3605 - fix(server_family): Remove search indexes during the FLUSHALL command by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3539 - feat(acl): add pub/sub by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3574 - chore: enable -Werror=thread-safety and add missing annotations (part 2/2) by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3595 - feat: add slave_repl_offset to the replication section. by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3596 - fix(json_family): Fix JsonFromString method by [@​BagritsevichStepan](https://redirect.github.com/BagritsevichStepan) in [dragonflydb/dragonfly#3602 - fix(grafana): Fix grafana dragonfly dashboard datasource by [@​applike-ss](https://redirect.github.com/applike-ss) in [dragonflydb/dragonfly#3608 - fix: debug crash inside parsing of ZRANGE by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3611 - chore: run fakeredis flow with the debug build by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3612 - chore: Split `--cluster_announce_ip` and `--replica_announce_ip` by [@​chakaz](https://redirect.github.com/chakaz) in [dragonflydb/dragonfly#3615 - fix: fix expiration processing for set command by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3607 - fix pytest: use generic random dbfilename in tests by [@​adiholden](https://redirect.github.com/adiholden) in [dragonflydb/dragonfly#3617 - fix(bug): zinter command should run on replica by [@​adiholden](https://redirect.github.com/adiholden) in [dragonflydb/dragonfly#3620 - fix(test_auth_resp3\_bug): release build failing by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3621 - chore: improve debug logs in dragonfly_connection by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3624 - fix: edge cases around mismatched path in json code by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3609 - test: fix search tests by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3625 - refactor: remove extra code from CmdArgParser by [@​BorysTheDev](https://redirect.github.com/BorysTheDev) in [dragonflydb/dragonfly#3619 - fix: limit parsing in zrange commands by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3626 - chore: disable big value ser on reg tests by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3629 - fix: crash when passing empty arguments by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3627 - fix: 'renamenx foo foo' should return 0 if foo exists by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3630 - fix: debug help printed layout by [@​kostasrim](https://redirect.github.com/kostasrim) in [dragonflydb/dragonfly#3635 - fix: crash during SORT DESC call by [@​romange](https://redirect.github.com/romange) in [dragonflydb/dragonfly#3637 ##### New Contributors - [@​cunla](https://redirect.github.com/cunla) made their first contribution in [dragonflydb/dragonfly#3534 - [@​Eunoia1729](https://redirect.github.com/Eunoia1729) made their first contribution in [dragonflydb/dragonfly#3524 - [@​DerickIT](https://redirect.github.com/DerickIT) made their first contribution in [dragonflydb/dragonfly#3590 - [@​applike-ss](https://redirect.github.com/applike-ss) made their first contribution in [dragonflydb/dragonfly#3608 **Full Changelog**: dragonflydb/dragonfly@v1.21.0...v1.22.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Renovate Bot](https://redirect.github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOC42NC4yIiwidXBkYXRlZEluVmVyIjoiMzguNjQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOlsicmVub3ZhdGUvY29udGFpbmVyIiwidHlwZS9taW5vciJdfQ==-->
To prove the benefits, run
./dfly_bench --pipeline=50 -n 20000 --ratio 0:1 --qps=0 --key_maximum=1
Before: the average pipelining latency was 10ms
After: the average pipelining latency is 5ms.
Avg latency: pipelined_latency_usec / total_pipelined_squashed_commands