Roman Gershman
b1829c3fe0
Allow custom argument validators. Expand transaction argument parsing to commands like EVAL
2022-02-24 14:11:51 +02:00
Roman Gershman
cc53bde091
Dragonfly Dispatch is called from lua script
2022-02-24 14:11:51 +02:00
Roman Gershman
07df3f2b95
Simplify serialization logic in Interpreter
2022-02-24 14:11:51 +02:00
Roman Gershman
c567a70244
Add SCRIPT LOAD/EVALSHA
2022-02-24 14:11:51 +02:00
Roman Gershman
ec70cc9e9f
Add ScriptMgr class
...
Write SCRIPT command into ServerFamily class.
2022-02-24 14:11:51 +02:00
Roman Gershman
ab5031472e
Small fixes
...
1. Remove CO::STALE modifier since it's not relevant for now.
2. Propertly wire CallFromScript function to be called from redis.call.
3. Define 3rd party lua dependency as part of dragonfly project.
4. Add ARGV/KEYS arrays to lua scripts
2022-02-24 14:11:51 +02:00
Roman Gershman
ce721ced90
Get rid of SendRespBlob in RedisReplyBuilder
2022-02-24 14:11:51 +02:00
Roman Gershman
501dc4208d
Refactoring of ReplyBuilder
...
Now ConnectionContext does not inherit from it.
As a result we will be able to pass semantic information
into ReplyBuilder instead of syntactic. This should help with
parsing back "redis.call" responses.
2022-02-24 14:11:51 +02:00
Roman Gershman
067e1c3b62
Allow calling a redis function from interpreter.
...
Introduce a translator that converts redis response to lua result coming from redis.call
Add tests.
2022-02-24 14:11:51 +02:00
Roman Gershman
4cff2d8b7d
Export redis.* functions in lua scripts
2022-02-24 14:11:51 +02:00
Roman Gershman
7a2f4baeec
Wire support for redis.call and redis.pcall commands
2022-02-24 14:11:51 +02:00
Roman Gershman
fc56a8e61a
Replica: add a state machine that continously pulls data from the master
2022-02-24 14:11:51 +02:00
Roman Gershman
d1f6f6d410
Implement serialization of most lua data types that are returned to caller
2022-02-24 14:11:51 +02:00
Roman Gershman
8fbe19d3c5
Add (lua) interpreter with lua 5.4.4
...
Small fixes all around.
2022-02-24 14:11:51 +02:00
Roman Gershman
8a3207f23e
Add skeleton of replication manager and initial support of replicaof command
2022-02-24 14:11:51 +02:00
Roman Gershman
cf3d208f81
Add skeleton for replica/sync commands
2022-02-24 14:11:51 +02:00
Roman Gershman
b56408b51a
Add rdb_test
2022-02-24 14:11:51 +02:00
Roman Gershman
4db619b081
Add rdb_load basic parsing. No data filling yet
2022-02-24 14:11:51 +02:00
Roman Gershman
7d5ad8cc5b
Serve http requests from redis port
2022-02-24 14:11:51 +02:00
Roman Gershman
e68977a7bf
Fix Populate bug
2022-02-24 14:11:51 +02:00
Roman Gershman
5c5c789ac7
dragonfly_connection
...
Recognize http1.1 protocol upon connection connect.
Pass disconnect event to running transactions.
2022-02-24 14:11:51 +02:00
Roman Gershman
b83c201e30
Add global state to the server to prevent multiple exclusive operations to run concurrently
2022-02-24 14:11:51 +02:00
Roman Gershman
254e640a19
Introduce per-shard MiMemoryResource
2022-02-24 14:11:51 +02:00
Roman Gershman
7ee6bd8471
Implement snapshot consistency under the write load
2022-02-24 14:11:51 +02:00
Roman Gershman
a8a05949b0
Hook snapshot with db_slice so that it would be possible to maintain snapshot isolation during concurrent writes
2022-02-24 14:11:51 +02:00
Roman Gershman
f119e66199
Refactor Populate command. Name the helper fibers
2022-02-24 14:11:51 +02:00
Roman Gershman
65f35f2cac
Some improvements to snapshotting algo.
...
Rename rdb_snapshot.h to snapshot.h since it's not related to the underlying serialization format.
2022-02-24 14:11:51 +02:00
Roman Gershman
3f80b89e19
Implement TYPE and SCAN commands. Update readme with the progress
2022-02-24 14:11:51 +02:00
Roman Gershman
b2953293cd
Simplify cursor encoding and state clearly cursor valid range
2022-02-24 14:11:51 +02:00
Roman Gershman
ec91b2c026
Add mimalloc as the default allocator for redis structures
2022-02-24 14:11:51 +02:00
Roman Gershman
af1fe6e114
Introduce dbslice versioning
2022-02-24 14:11:51 +02:00
Roman Gershman
ce46ba7cb1
Introduce snapshot isolation using versioned buckets
2022-02-24 14:11:51 +02:00
Roman Gershman
8d19a6211d
Introduce versioned bucket support for MVCC operations
2022-02-24 14:11:51 +02:00
Roman Gershman
069ed12c68
Introduce a naive snapshot flow and implement SaveBody for string/list entries
2022-02-24 14:11:51 +02:00
Roman Gershman
7af6aef4c7
Add consumer part of RdbSave flow
2022-02-24 14:11:51 +02:00
Roman Gershman
d3ccd5b836
Implement Save of rdb header/epilog
2022-02-24 14:11:51 +02:00
Roman Gershman
ba72e70de5
Wire SAVE and LASTSAVE commands
...
SAVE has a dummy implementation that will be replaced in the next commits.
2022-02-24 14:11:51 +02:00
Roman Gershman
7a839b6081
Fix size() bug in dashtable
...
add more stats to info command
fix warnings in -O3 mode.
2022-02-24 14:11:51 +02:00
Roman Gershman
f4cfce143c
Switch PrimeTable to DashTable
2022-02-24 14:11:51 +02:00
Roman Gershman
97fbf69260
Use DashTable for ExpireTable
2022-02-24 14:11:51 +02:00
Roman Gershman
d086341996
Add HashCode support to CompactObject
2022-02-24 14:11:51 +02:00
Roman Gershman
c46e624e70
Model dashtable iterator as close as possible to std iterator
2022-02-24 14:11:51 +02:00
Roman Gershman
ff9e13c1c5
Add dash table
2022-02-24 14:11:51 +02:00
Roman Gershman
5923c22d99
Expose some connection-level stats
2022-02-24 14:11:50 +02:00
Roman Gershman
0d57b25124
Sync with the latest version of helio
2022-02-24 14:11:50 +02:00
Roman Gershman
ee15f98142
Use container in CI
2022-02-24 14:11:50 +02:00
Roman Gershman
286da5e409
Improve ccache config
2022-02-24 14:11:50 +02:00
Roman Gershman
e88d995618
Fix consistency bug in watched code
...
CI improvements
2022-02-24 14:11:50 +02:00
Roman Gershman
fac4bf0354
Add INCR/DECR commands
2022-02-24 14:11:50 +02:00
Roman Gershman
5715b8ebbb
Use compact object as our MainValue type
2022-02-24 14:11:50 +02:00