Commit graph

3387 commits

Author SHA1 Message Date
Abhijat Malviya
e0be16b22c
pytest: temporarily skip test while its failures are investigated (#4900)
Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-04-08 15:09:18 +05:30
mkaruza
378bcda8a2
feat(server): Move bumpup logic out of FindInternal (#4877)
Bumpup logic is moved to OnCbFinish. Previously keys which are going to
be delete were also bumped up but with this change if key doesn't exists
on callback we will skip it.

Closes #4775

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-04-07 14:15:13 +02:00
Kostas Kyrimis
b9ff1be7d8
chore: test snapshot in replica while seeding master (#4867)
Signed-off-by: kostas <kostas@dragonflydb.io>
2025-04-07 10:15:25 +00:00
Borys
2729332a0f
fix: make pause all for migration finalization (#4897) 2025-04-07 12:53:29 +03:00
Volodymyr Yavdoshenko
3a0830150e
fix: update timeout for connection test (#4895)
fixed: https://github.com/dragonflydb/dragonfly/issues/4893
2025-04-07 12:49:50 +03:00
Kostas Kyrimis
751ce58645
fix: skip heartbeat if shard is under global lock (#4882)
We allowed running heartbeat during global transactions. For example, during replication and while transitioning from full to stable sync we unregister and register journal callbacks with a preemption inbetween. If under preemption heartbeat runs, then we loose those journal entries triggering an lsn check failure.

Signed-off-by: kostas <kostas@dragonflydb.io>
2025-04-07 08:19:05 +00:00
Kostas Kyrimis
fb7a1facc8
fix: lsn check failure (#4881)
* rename StaticSeeder to DebugPopulateSeeder to show intent
* add a DCHECK in debug populate that triggers if there is a registered replica that hasn't reached stable sync
* small cleanup

Signed-off-by: kostas <kostas@dragonflydb.io>
2025-04-07 07:48:01 +00:00
Volodymyr Yavdoshenko
3eb8417453
fix: docker release should be updated latest version using semantic version of latest tag (#4887)
fixed: https://github.com/dragonflydb/dragonfly/issues/4831
2025-04-06 14:01:39 +03:00
Roman Gershman
1bfc3455fe
feat: debug compression <type> (#4879)
* feat: debug compression <type>

Extend `debug compression` to support value types.
if no type is given, falls back to testing keys compressability.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>

* Apply suggestions from code review

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: Roman Gershman <roman@dragonflydb.io>

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-04-05 11:01:59 +03:00
Borys
ea451e943a
fix: test_migration_rebalance_node (#4891) 2025-04-05 09:59:27 +03:00
Volodymyr Yavdoshenko
ca0cdf8c40
fix: '@text:prefix*' matching for fields. (#4868)
fixed: https://github.com/dragonflydb/dragonfly/issues/4691
2025-04-04 12:38:22 +03:00
Roman Gershman
5a2192dfdf
fix: local dashboard show rapid changes in QPS (#4886)
Helps investigating #4787

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-03 20:12:26 +03:00
Roman Gershman
460690855e
fix: add version id for dev container builds (#4878)
now it looks like this:
```
> docker run --rm ghcr.io/dragonflydb/dragonfly-dev:ubuntu-f767d82 --version
dragonfly f767d82-f767d82ce78ccbc90ddfb525f4ad4bd9aafcfbed
```

fixes #4830

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-02 20:21:19 +03:00
adiholden
f5a1b482aa
feat(server): add connections send timeout (#4874)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-04-02 18:18:34 +03:00
Volodymyr Yavdoshenko
be11fa02cd
feat: Support synonyms in queries. Add FT.SYNUPDATE, FT.SYNDUMP (#4837)
feat: Added FT.SYNUPDATE: https://redis.io/docs/latest/commands/ft.synupdate/
feat: Added FT.SYNDUMP: https://redis.io/docs/latest/commands/ft.syndump/
2025-04-01 14:55:24 +03:00
lichuang
28fa1783db
feat(server): SCAN command add ATTR options (#4766) 2025-04-01 14:07:37 +03:00
Stepan Bagritsevich
3829ca87d7
chore(search_family): Add logging for monostate queries (#4872)
Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2025-04-01 09:51:57 +00:00
Borys
a7a59b0d28
chore: turn on more logs for test_migration_timeout_on_sync (#4870) 2025-04-01 07:36:06 +00:00
Volodymyr Yavdoshenko
9a0b8f1dcb
fix: FT.SEARCH commas support for ranges (#4844)
fixed: #4832
2025-04-01 09:21:47 +03:00
Thomas Camlong
2ae6c398d4
chore: Remove version attribute from compose file (#4869)
- Removes the warning the attribute `version` is obsolete, it will be ignored, please remove it to avoid potential confusion

Signed-off-by: Thomas Camlong <thomas@ajnart.fr>
2025-04-01 06:05:58 +00:00
adiholden
0e08f22167
fix test: test_cluster_slot_ownership_changes (#4865)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-03-31 17:51:07 +03:00
Stepan Bagritsevich
e5a0a97555
fix(server_family): Remove redundant logging in the CLIENT command (#4859)
refactor: address comments

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2025-03-31 16:50:10 +02:00
adiholden
ca4135ee12
fix(test): test_cluster_slot_ownership_changes (#4852)
fix test: test_cluster_slot_ownership_changes

Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-03-31 08:41:49 +03:00
Borys
c799d9b2ce
fix: increase timeout for test_replication_timeout_on_full_sync (#4851) 2025-03-30 16:39:56 +00:00
KIMDONGYEON00
4612aec9a7
fix(lua) : Prevent Lua stack buffer overflow crash (#4853) (#4854)
Fix Lua stack overflow issue as described in #4468
2025-03-30 15:38:01 +00:00
romange
937fa28a89 chore(helm-chart): update to v1.28.1 2025-03-30 07:58:40 +00:00
mkaruza
760e09aeee
fix(snapshot): Append trailing slash for GCP storage during snapshot load (#4846)
Loading snapshots from GCP storage requires that sub directory ends with slash so append
if it does not.

Fixes #4833

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-03-28 16:24:42 +01:00
Stepan Bagritsevich
f4f615ff34
fix(rdb_load): Handle JSON loading failure when parsing fails (#4801)
* fix(rdb_load): Handle JSON loading failure when parsing fails

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor(compact_obj): Clean up code

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

* refactor: address comments

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>

---------

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2025-03-28 14:30:10 +01:00
Borys
dba7f08265
chore: turn on more logs for test_replication_timeout_on_full_sync (#4848) 2025-03-28 13:16:59 +00:00
Abhijat Malviya
4539e3d024
feat(metrics): Update metrics for aliased commands (#4819)
When a call is made to server, its call count and call time is counted
against the string it was called with, if the user supplied command was
an alias to some other command.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-03-28 15:32:30 +05:30
Borys
2dc61a548b
refactor: rename cntx variable to exec_st (#4847) 2025-03-28 09:36:53 +00:00
Stepan Bagritsevich
b99f593d59
fix(replication_test): Temporary skip test_bug_in_json_memory_tracking test (#4845)
Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2025-03-28 09:10:32 +01:00
Volodymyr Yavdoshenko
857897cfa6
fix: Added query to log on error (#4843)
* fix: added query to log on error

* fix: updated query to use log on error with delay for repeat
2025-03-27 18:42:41 +02:00
Abhijat Malviya
90e9ecb968
chore(zset_family/score_map): Replace sds arguments with string_view (#4738)
* chore(zset_family/score_map): Remove usages of sds

The usages of WrapSds are removed from zset_family calls.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-03-27 17:41:11 +05:30
Abhijat Malviya
3285888092
feat(command docs): Enable fallback tab completion in cli (#4842)
redis-cli uses COMMAND DOCS response to set up tab and hints completion.
If we return OK no completion is set up. If we return an error the cli
sets up fallback completion.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-03-27 16:48:34 +05:30
romange
e736772ae7 chore(helm-chart): update to v1.27.4 2025-03-27 09:32:06 +00:00
Volodymyr Yavdoshenko
52875a16e5
fix: Backward compatibility for fields without the "@" sign in the FT.AGGREGATE command (#4810)
fixed: https://github.com/dragonflydb/dragonfly/issues/4698
2025-03-26 11:07:34 +02:00
adiholden
f8558e94dd
feat(server): flush slots traverse better yield (#4821)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-03-26 10:41:02 +02:00
mkaruza
b931b8f088
fix(pytest): Save snapshosts in temp dir for test_s3_save_local_dir (#4806)
Test `test_s3_save_local_dir` fails sporadically. Possible explanation is that parallel tests working
with same bucket remove saved snapshot files - to mitigate this now snapshots will be saved
into S3 temp directory.

Closes #4783

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-03-25 14:35:38 +01:00
mkaruza
0bceff680a
fix(dfly_bench): Get MOVED error from parsed response (#4827)
* fix(dfly_bench): Extract bounded MOVED error from IO buffer

There could be multiple errors in io buffer which fails to parse
correctly. Extract only one error to handle.

---------

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-03-25 13:29:04 +02:00
Abhradeep Chakraborty
30ce734cd2
feat(docker): push dragonfly image to gcp artifact registry (#4716)
* feat(docker): push dragonfly image to gcp aritfact registry
---------

Signed-off-by: Abhradeep Chakraborty <abhradeep@dragonflydb.io>
2025-03-25 10:50:01 +02:00
Roman Gershman
2a3a1567b9
feat(cluster_mgr): add populate command (#4816)
* feat(cluster_mgr): add populate command

We further simplify the code around cluster config
Also - add a command that populates all the cluster ranges in the cluster
using the "populate" command. `--size` and `--valsize` arguments are also added.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>

* chore: fixes

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-03-25 10:47:10 +02:00
mkaruza
a9ecee2ba5
feat(dfly_bench): Handle moved slots in cluster (#4761)
* feat(dfly_bench): Handle MOVED slots

Range slots for each shard are managed by ShardSlots object that
is passed to all threads and connections. Each shard endpoint have it's
own interval set containing valid slot ranges. When MOVED error is
received on one connection, that slot will be removed from source
node slot ranges and added to destination node slot ranges.

Boost ICL interval_set container is used to store intervals. Unique lock
is taken during slot move, while for fetching slot we use shard lock.

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-03-24 16:51:15 +01:00
Roman Gershman
5c675dad1a
feat(dfly_bench): allow generation of keys without hashslots for set/get (#4818)
This mode is compatible with memtier_benchmark, as well as "debug populate ... SLOTS ..."
We can not use it for custom commands since Dragonfly/Redis require a common hash slot for multiple keys.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-03-24 14:04:04 +00:00
Volodymyr Yavdoshenko
1285cac57a
fix: python test was excluded for epoll case. (#4824)
fixed: https://github.com/dragonflydb/dragonfly/issues/4822
2025-03-24 12:20:01 +00:00
Roman Gershman
00fe94ab09
chore: refactor debug populate (#4823)
Move DoPopulateBatch under class and reduce the number of its argument.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-03-24 13:26:37 +02:00
Roman Gershman
d23bfe9ac3
chore: remove pointer tagging for ScoreSdsPolicy (#4815)
Now we can support custom Query class when working with bptree,
so we get rid of pointer taggings.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-03-24 09:27:39 +02:00
Abhijat Malviya
91c27f1f18
feat(server): Add support for aliasing commands (#4782)
A command can be aliased by supplying the flag:

--command_alias=__PING=PING

to the server startup.

A map of alias is retained. When finding a command id, first we look up
into the original command map, then if not found there we lookup through
the command alias map. This results in two find operations for an
aliased command.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-03-23 16:50:07 +05:30
Volodymyr Yavdoshenko
038cb17b3b
fix: python tests were excluded for epoll case. (#4813)
fix: python tests were excluded for epoll case
2025-03-23 10:26:39 +02:00
Roman Gershman
72fb25694b
chore(cluster_mgr): introduce SlotRange class (#4814)
Before: slot merging/splitting logic was mixed with business logic.
Also, slots were represented as dictionary, which made the code less readable.
Now, SlotRange handles the low-level logic, which makes the high-level code simpler
to understand.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-03-23 08:41:44 +02:00