Commit graph

117 commits

Author SHA1 Message Date
Vladislav
eec09a13c7
fix: fix test connection name (#1211)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-05-13 15:25:36 +02:00
Vladislav
396cf5f77b
fix: fix duplicated dependency (#1209)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-05-13 12:07:54 +02:00
Vladislav
b0537418bc
fix: use redis.asyncio instead of aioredis (#1206)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-05-13 10:44:25 +03:00
Roy Jacobson
300ccf3218
fix(server): Wrong replication state (#1150)
* fix(server): Read replication state better

* Add basic test for ROLE command and replication
2023-04-30 14:02:47 +03:00
ashotland
6a26d41e90
test(sentinel_test.py): increase timeout in failover test (#1133)
* test(sentinel_test.py): increase timeout from 10 to 15 seconds in test_failover function

Signed-off-by: ashotland <ari@dragonflydb.io>

---------

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-04-24 21:55:11 +03:00
ashotland
6fcd15d1e1
Sentinel test debug (#1125)
Sentinal test debug
- Some more logging
- Use PortPicker

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-04-24 10:53:51 +03:00
adiholden
7f56a435c4
bug(server): replicate scripts in stable state (#1114)
* bug(server): replicate scripts in stable state

---------

Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-04-23 23:46:51 +03:00
Vladislav
2d501111ea
Fix async lua bugs (#1123)
Fix async lua bugs:
- Not calling toupper before looking up command id
- Wrong error reply context
2023-04-23 14:50:25 +03:00
adiholden
c6d34678f3
fix(test): add wait for all replicas to finish (#1124)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-04-23 14:20:01 +03:00
Vladislav
74a1454409
Collect errors from async lua calls (#1092)
Error collection from async calls
2023-04-22 09:02:22 +03:00
Roy Jacobson
46a2435865
fix(tests): Disable 'dbfilename' unless explicitly given in the test (#1117) 2023-04-20 13:11:49 +03:00
Roy Jacobson
246f6093db
feat(server): Save on shutdown (#1086)
* feat(server): Save snapshot on shutdown

* CR

* Change save on shutdown to be conditional on --dbfilename.

* Support SHUTDOWN [NO]SAVE and fix unit test

* Better wait for DB loading

* Fix DF format loading state bug

* Fix some fallout from auto save
2023-04-20 06:30:42 +02:00
Roy Jacobson
1319918476
fix(server): Don't allow directory escapes in dbfilename (#1105)
* fix(server): Don't allow directory escapes in dbfilename

* Just disallow directories completely
2023-04-18 21:21:23 -07:00
Vladislav
77e18f0463
fix: report errors from commands with redis.call (#1108)
Redis call now directly reports erros
2023-04-18 17:29:07 +03:00
Roy Jacobson
1382ed1c37
chore: Allow passing empty strings as flag arguments in DflyInstance (#1104)
For example, this is needed to disable auto save on shutdown with --dbfilename=""
2023-04-18 12:48:30 +03:00
Roy Jacobson
d9f45f369a
fix(server): Allow interrupting REPLICAOF commands during full sync (#1058)
* fix(server): Allow interrupting REPLICAOF commands during full sync
* fix(server): Fix a race condition and UB in a debug assert
2023-04-18 11:44:44 +03:00
Vladislav
0e7d137046
fix: fix default instance port blocking in pytest (#1102)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-04-18 00:12:38 +03:00
Roy Jacobson
c952251381
feat(server): Insert timestamp into snapshot names explicitly (#1028)
* feat(server): Insert timestamp into snapshot names explicitly

* Whenever the snapshot filename contains '{timestamp}', it will be substituted with the current local time.
* Default snapshot name is now "dump-{timestamp}"
* InferLoadFile: Modify to recognize "{timestamp}" files correctly.
* ServerFamily::Load: Change extension 'CHECK' into a non-terminating error because it's user-visible
* ServerFamily::DoSave: Add sanity check for the filename extension.

Signed-off-by: Roy Jacobson <roy@dragonflydb.io>

* resolve CR comments

* Add comment about glob sorted output

* Fix InferLoadFile and fix its tests

* Simplify filename behavior with the .dfs format

---------

Signed-off-by: Roy Jacobson <roy@dragonflydb.io>
2023-04-17 14:59:44 +03:00
Roy Jacobson
fc66dbb2cf
fix(tests): Don't return the same port from PortPicker.get_available_port twice (#1083) 2023-04-13 09:56:46 +03:00
Vladislav
282c168d34
fix: Update cntx->cid on multi-tx'es (#1081)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-04-12 23:28:31 +03:00
ashotland
5fb5f54885
fix(regression-tests): Add PortPicker (#1078)
* fix(regression-tests): Add PortManager

Add PortManager to find and use available ports in regression tests.
Use it in redis_replicaiton_test.
---------

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-04-12 19:14:29 +03:00
ashotland
59f1ac6701
fix(regression-test): Delete tests/dump.rdb (#1077)
fix(regression-test): Delete dump.rdb

This fails redis to start in redis_replicaiton_test,
I assume it was added accidently.

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-04-12 14:13:39 +03:00
Vladislav
c774aee6fb
fix: fix lua monitor pytest (#1073)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-04-11 23:01:34 +03:00
Vladislav
a4305fe2e2
feat(tests): rand seed flag and output (#1044)
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-04-05 16:22:47 +03:00
adiholden
0312b66244
bug(replication): fix deadlock in cancle replication flow (#1007)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-03-29 12:11:56 +03:00
dependabot[bot]
6a8584b4d6
chore(deps): bump redis from 4.3.4 to 4.5.3 in /tests/dragonfly (#1005)
Bumps [redis](https://github.com/redis/redis-py) from 4.3.4 to 4.5.3.
- [Release notes](https://github.com/redis/redis-py/releases)
- [Changelog](https://github.com/redis/redis-py/blob/master/CHANGES)
- [Commits](https://github.com/redis/redis-py/compare/v4.3.4...v4.5.3)

---
updated-dependencies:
- dependency-name: redis
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-28 17:27:11 +03:00
adiholden
89da9a99d0
bug(replica): support auth master (#1000)
* bug(replica): support auth master

Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-03-28 12:17:53 +03:00
Roman Gershman
32f2f4b72a
fix: list_family_test works with async client (#992) 2023-03-25 21:28:29 +03:00
Roman Gershman
3939da1069
fix: Adapt json_test to async_client (#990) 2023-03-25 16:05:30 +03:00
Chaka
7be98d906d
bug(server): Fix crash in ZPOPMIN (#977)
* Fix crash in ZPOPMIN

Crash was due to an attempt to access nullptr[-1], which is bad :)

* Add test to repro crash.

There's some leftover debugging statements, they're somewhat useful so I
kept them as the bug is not yet fixed.

* Copy patch by romange to solve the crash

Also re-enable (uncomment) the test in utility.py.

Signed-off-by: chakaz <chakaz@chakaz>

---------

Signed-off-by: chakaz <chakaz@chakaz>
Signed-off-by: Chaka <chakaz@users.noreply.github.com>
Co-authored-by: chakaz <chakaz@chakaz>
2023-03-25 10:05:41 +03:00
Roman Gershman
52ac06e358
chore: Improve client connection checking in pytests (#967)
Also fix the compatibility of "client list" with redis-py client.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2023-03-24 18:22:14 +03:00
Vladislav
3a6b98f201
fix(pytest): Disable script test (#972) 2023-03-21 16:53:47 +03:00
ashotland
85a1bf8494
fix(tests):Comment out ZPOPMIN Action Again (#971)
fix(tests):Comment out SPOPMIN Action Again 

Until #949 is fixed

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-03-21 15:26:46 +02:00
Vladislav
6d3a191a5f
tests(replication): Test script replication (#960)
Script replication test
2023-03-20 22:57:52 +03:00
ashotland
d2d70289ff
fix(tests): Revive commented out actions (#962)
* fix(tests): Revive commented out actions
---------

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-03-19 22:30:50 +02:00
Roman Gershman
c96f637f73 chore: some pytests and logging improvements
1. pytest extensions and fixes - allows running them
   with the existing local server by providing its port (--existing <port>).
2. Extend "DEBUG WATCHED" command to provide more information about watched state.
3. Improve debug/vlog printings around the code.

This noisy PR is a preparation before BRPOP fix that will follow later.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2023-03-17 10:52:20 +02:00
Pascal S. de Kloe
f9ec60ee5f integration test docker image with Go client 2023-03-17 10:09:42 +02:00
adiholden
bafad66fc3
fix(replication): redis replication flush all before full sync (#946)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-03-15 09:45:04 +02:00
Roman Gershman
66b4fbd14e fix: correctly set batching mode during pubsub
Previously we set batch mode when dispatch queue is not empty
but dispatch queue could contain other async messages related to pubsub or monitor.
Now we enable batching only if there are more pipeline commands in the queue.

In addition, fix the issue of unlimited aggregation of batching buffer.

Fixes #935.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2023-03-14 13:01:48 +02:00
adiholden
97e38aebd2
bug(redis replication): fix multi transaction replication stable state (#934)
Signed-off-by: adi_holden <adi@dragonflydb.io>
2023-03-13 15:14:58 +02:00
adiholden
8e528f1fbb
fix(redis_replicaiton_test): fix compare set types (#929)
* fix(redis_replicaiton_test): fix compare set types

Signed-off-by: ashotland <ari@dragonflydb.io>
Co-authored-by: ashotland <ari@dragonflydb.io>
2023-03-13 13:37:58 +02:00
Roman Gershman
7975848c36 chore: Expose a corruption when connection writes interleaving messages
The problem happens when a publisher sends a message and a new subscriber registers.
In that case it sends "subscribe" response and the publish messages and those
interleave sometimes.

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
2023-03-12 08:15:31 +02:00
ashotland
02770fdcd1
fix(tests):Some test cases for redis replication (#918)
* Some test cases for redis replication

Most of them skipped / commented-out to serve as repro without failing
on CI.

---------

Signed-off-by: ashotland <ari@dragonflydb.io>
2023-03-08 10:22:58 +02:00
Vladislav
7cb2232edc
fix(pytest): Add master restart delay (#909)
- Add restart delay to master in crashing master test
- Add process check after force shutdown
- Increase time limit to 45 min
2023-03-06 00:16:57 +03:00
talbii
0196589786
fix: logging in sentinel_test (#869)
Signed-off-by: talbii <ido@dragonflydb.io>
2023-03-05 16:15:13 +02:00
ashotland
ccc784d9c4
Add basic replicaiton from redis test (#895)
Signed-off-by: ashotland <ari@dragonflydb.io>
2023-03-01 21:50:51 +02:00
Roman Gershman
ac280529cb
fix: resize buffer correctly when checking for http header line (#894)
* fix: resize buffer correctly when checking for http header line

Fixes #779

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

* fix(tests): Add big command test

Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>

---------

Signed-off-by: Roman Gershman <roman@dragonflydb.io>
Signed-off-by: Vladislav Oleshko <vlad@dragonflydb.io>
Co-authored-by: Vladislav Oleshko <vlad@dragonflydb.io>
2023-03-01 21:46:45 +02:00
Vladislav
edbd43a3b3
Support script configuration (#889)
Store script parameters for each script that allow configuring it's transactions multi mode. They can be configured either for a specific scripts with `SCRIPT CONIFG <sha> [params...]` or changed globally as defaults with `default_lua_config`.
The current supported options are `allow-undeclared-keys` and `disable-atomicity`.  Based on those flags, we determine the correct multi mode. `disable-atomicity` allow running in non-atomic mode, whereas being atomic and enabling `allow-undeclared-keys` requires the global mode.
2023-03-01 19:17:41 +03:00
Leonardo Mello
abe3b3cb91
feat: support cluster mode emulation (#492)
Signed-off-by: Leonardo Mello <lsvmello@gmail.com>
2023-03-01 08:43:40 +02:00
Vladislav
90233bfdc8
feat(tests): Script pytests (#872)
Introduce pytests for eval
2023-02-25 13:06:05 +03:00