Commit graph

780 commits

Author SHA1 Message Date
Abhijat Malviya
fc00f2c972
feat(memcache): Add support for GETS (#5087)
Support is added for the GETS command. A placeholder CAS token of 0 is
always returned.

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-05-09 13:31:07 +05:30
Borys
fe495cde3f
test: tune test_cluster_migration_while_seeding (#5088) 2025-05-09 07:07:04 +00:00
Volodymyr Yavdoshenko
705d61e793
fix: Support TLS for Memcached without password authentication (#5085)
* fix: enable to use tls with memcached protocol without require password setting
2025-05-09 00:01:19 +03:00
Borys
8c125a23e3
feat: add migrated keys statistic (#5043) 2025-05-07 15:48:22 +03:00
Kostas Kyrimis
a8b19c9b88
chore: skip test_bug_in_json_memory_tracking (#5066)
Signed-off-by: kostas <kostas@dragonflydb.io>
2025-05-06 07:38:02 +00:00
adiholden
6a84ad0208
bug(server): fix lns mismatch in replication (#4967)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-05-05 10:50:58 +00:00
Kostas Kyrimis
65f94e5d82
chore: skip failing test_migration_rebalance_node (#5042)
Signed-off-by: kostas <kostas@dragonflydb.io>
2025-05-02 12:08:05 +00:00
Roman Gershman
f4f4668c7a
chore: bump up max_busy_read_usec in tests (#5039)
cycle clock like most clocks is affected by thread context switching, and maybe this is what causes
test failures. Try to increase the parameter to even further.

Also, add benchmarks for the clock as well as fix some compiler warnings around parser.cc

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-05-01 00:17:29 +03:00
mkaruza
13d8062bb9
feat(pytest): Generate command with huge value strings in seeder (#4957)
Generate command with long strings. We will first create number of
random samples that will be used to match keys for which we are generating huge 
strings. Total length of huge value string will be divided equally between elements in
generated command.  

Closes #4430

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-04-29 21:07:13 +02:00
adiholden
880cd8d1a5
feat(server): support partial sync from last master (#5015)
Signed-off-by: adiholden <adi@dragonflydb.io>
2025-04-29 12:12:23 +03:00
Roman Gershman
23e6db900d
fix: regtest failures (#5013)
1. Fix a crash bug in RESETSTAT when number of shards is less than number of threads.
2. Tune regtests parameters for pipelining tests to pass.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-28 12:49:44 +03:00
Roman Gershman
6d30baa20b
chore: Pipelining fixes (#4994)
Fixes #4998.
1. Reduces agressive yielding when reading multiple requests since it humpers pipeline efficiency.
   Now we yield consistently based on cpu time spend since the last resume point (via flag with sane defaults).
2. Increases socket read buffer size effectively allowing processing more requests in bulk.

`./dragonfly  --cluster_mode=emulated`
latencies (usec) for pipeline sizes 80-199:
p50: 1887, p75: 2367, p90: 2897, p99: 6266

`./dragonfly  --cluster_mode=emulated --experimental_cluster_shard_by_slot`
latencies (usec) for pipeline sizes 80-199:
p50: 813, p75: 976, p90: 1216, p99: 3528

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-27 20:48:02 +03:00
Daniel M
c06e154d43
Fix test hypothesis (#4927)
* fix:test-hypothesis

---------

Co-authored-by: Roman Gershman <roman@dragonflydb.io>
2025-04-23 18:11:37 +03:00
Abhijat Malviya
0fafa21722
feat(server): Add support for command aliasing (#4932)
Add support for command aliasing using command_alias flag

Signed-off-by: Abhijat Malviya <abhijat@dragonflydb.io>
2025-04-21 07:59:04 +00:00
Borys
707d7f0265
test: add check for removing readonly replica (#4963) 2025-04-20 12:51:56 +03:00
Roman Gershman
220f20bac6
feat: expose table capacities instead of number of buckets (#4956)
Also, add a local dashboard demonstrating prime table load per db.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-18 10:30:04 +03:00
Roman Gershman
eb80d576d5
chore: Make snapshotting more responsive (#4910)
* chore: Make snapshotting more responsive

This should improve situation around #4787 -
maybe not solve it completely but improve it significantly.

On my tests when doing snapshotting under read traffic with master
(memtier_benchmark --ratio 0:1 -d 256  --test-time=400  --distinct-client-seed --key-maximum=2000000 -c 5 -t 2 --pipeline=3)
I got drop from 250K qps to 8K qps during the full sync phase.

With this PR, the throughput went up to 70-80K qps.

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2025-04-16 07:48:23 +03:00
Borys
5fc585b272
fix: test_migration_timeout_on_sync (#4933) 2025-04-14 20:59:42 +03:00
Borys
84704a0ad3
test: add logs for cluster_mgr_test.py (#4920) 2025-04-11 09:44:04 +00:00
Abhijat Malviya
268e658376
fix: Skip test_take_over_counters for epoll (#4919) 2025-04-11 12:10:56 +05:30
mkaruza
3148f1b7a3
fix(pytest): Wait exception on instance start and stop (#4916)
Pytest test_exit_on_s3_snapshot_load_err can raise exception on start in
some test environments. Now wait for exception in instance start and
stop.

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-04-10 16:49:01 +02:00
Borys
150357d960
fix: cancel blocking command during migration finalization (#4904)
* fix: cancel blocking command during migration finalization
2025-04-10 14:38:00 +00:00
mkaruza
287f066d12
fix(pytest): Remove invalid argument from pytest (#4912)
Remove invalid argument in test_exit_on_s3_snapshot_load_err pytest

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-04-09 16:46:58 +00:00
mkaruza
a5819aa9ca
feat(server): Exit process if error is report during initial load snapshot (#4907)
Exit process if error is reported when we try to initially load snapshot from
cloud storage or local directory.

Fixes #4840

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-04-09 14:42:28 +02:00
Kostas Kyrimis
7adb071f2a
fix: test_replica_snapshot_with_big_values_while_seeding (#4902)
* throttle the test to require less memory
* increase reg test timeout on the ci from 50 to 60 mins

Signed-off-by: kostas <kostas@dragonflydb.io>
2025-04-09 08:20:58 +00:00
Kostas Kyrimis
2d96a57edf
fix: take_over_counters (#4890)
* increase delay for takeover

Signed-off-by: kostas <kostas@dragonflydb.io>
2025-04-09 09:20:21 +03:00
Borys
addf0497bf
test: tune test_cluster_migration_while_seeding to reduce false/posit… (#4901)
test: tune test_cluster_migration_while_seeding to reduce false/positive cases
2025-04-08 10:51:56 +00:00
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
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
Borys
ea451e943a
fix: test_migration_rebalance_node (#4891) 2025-04-05 09:59:27 +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
Borys
a7a59b0d28
chore: turn on more logs for test_migration_timeout_on_sync (#4870) 2025-04-01 07:36:06 +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
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
Borys
dba7f08265
chore: turn on more logs for test_replication_timeout_on_full_sync (#4848) 2025-03-28 13:16:59 +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
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
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
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
Borys
0c31da1231
feat: ignore managed_service_info flag for cluster (#4803)
* feat: ignore managed_service_info flag for cluster
2025-03-20 15:20:20 +02:00
Stepan Bagritsevich
ca65a49a0f
fix(json_family): Fix memory tracking for JSON (#4777)
* fix(json_family): Fix memory tracking for JSON

fixes dragonflydb#4725

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

* refactor: address comments

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

* small fix

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

---------

Signed-off-by: Stepan Bagritsevich <stefan@dragonflydb.io>
2025-03-20 10:23:58 +01:00
adiholden
ce5c44b57b
feat test: add test for pipeline queue overlimit (#4791)
* feat test: add test for pipeline queue overlimit

Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-03-19 09:09:09 +02:00
Borys
151e40e2c0
feat: add node health status for CLUSTER SLOTS and SHARDS (#4767)
* feat: add node health status for CLUSTER SLOTS and SHARDS
2025-03-17 12:01:11 +02:00
adiholden
d75cfe8c9f
fix(cluster) : moved error port number on migration finish (#4776)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2025-03-17 10:38:29 +02:00
mkaruza
5facf12836
fix(test): Execute SSUBSCRIBE command directly in client (#4763)
Using `pubsub.ssubscribe` function doesn't wait for any response from
server. Fixed by switching to execute SSUBSCRIBE commands in client directly.

Signed-off-by: mkaruza <mario@dragonflydb.io>
2025-03-14 16:01:30 +01:00