feat: add support for noreply and greeat options
noreply option is applicable for memcached.
great option ensure the tcp connection is indeed established before proceeding with loadtest.
Before this PR, QueueBackpressure objects are in fact referenced from other threads in an awkward way via
Connection::WeakRef::EnsureMemoryBudget().
This PR removes the complexities of accessing these objects from foreigh threads.
* bump up redis version in info command
* add compatibility test
* bump up py dependencies
* fix warnings and deprecated functions
---------
Signed-off-by: kostas <kostas@dragonflydb.io>
* chore: dfly_bench now accepts __data__ and __score__ template names
---------
Signed-off-by: Roman Gershman <romange@gmail.com>
Co-authored-by: Shahar Mike <chakaz@users.noreply.github.com>
Due to a corner-case bug, reply builder could add \0\0 to the end of bulk strings, instead of
\r\n. The bug slipped our tests because redis-py parser most probably does not validate the ending
as long as everything else is consistent.
This PR:
1. Adds a test that catches the bug
2. Adds a debug check that verifies the destination pointer is consistent with the iovec being used.
3. Fixes the bug.
Fixes#4424
1. Move socket read code into a dedicated function.
Remove std:: prefix in the code.
2. Add an optional iouring bufring registration. Currently not being used and is disabled by default.
* fix: switch to SHUTTING_DOWN state unconditionally
During the shutdown sequence always switch to SHUTTING_DOWN.
Make sure that the rest of the code does not break if it can not switch to the desired
global state + some clean ups around state transitions.
Finally, reduce the amount of data in test_replicaof_reject_on_load
---------
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
The problem was with reverse iterator that was not set properly
when the last node is deleted.
Also, move PushSentinel code into Push.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
* chore: Introduce small buffer in redis parser
This is needed in order to eliminate cases where we return INPUT_PENDING but do not consume the whole string by rejecting just several bytes.
This should simplify buffer management for the caller, so that if they pass a string that
did not result in complete parsed request, at least the whole string is consumed and can be discarded.
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
* chore: comments fixes
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
---------
Signed-off-by: Roman Gershman <roman@dragonflydb.io>
* feat: Yield inside huge values migration serialization
With #4144 we break huge values slot migration into multiple commands.
This PR now adds yield between those commands.
It also adds a test that checks that modifying huge values while doing a
migration works well, and that RSS doesn't grow too much.
Fixes#4100
Deprecate multi_exec_mode and track_exec_frequencies.
Remove duplicated call to EnterLameDuck (done also in Service::Shutdown()).
Signed-off-by: Roman Gershman <roman@dragonflydb.io>