Commit Graph

179 Commits

Author SHA1 Message Date
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
Roman Gershman aa2136a406 Add CompactObject that will represent all the possible dragonfly types
Specifically, it act as union for int,string, set, zset and other types
that exist in Redis API. In order to be more memory friendly, CompactObject
incorporates inline storage that will be used for SSO.
2022-02-24 14:11:43 +02:00
Roman Gershman ea399e3e5a Identify multi-blpop interaction bug.
Now it fails on missing functionality without deadlocking.
2022-01-13 13:10:34 +02:00
Roman Gershman fc63eec1b6 Add BLPOP support 2022-01-12 08:59:22 +02:00
Roman Gershman 0cf2f57bf2 Fix expiry bug in AddOrFind function
Also add more test coverage.
Fix a bug where iterators might get invalidated between Renamer hops.
Initial work on BLPOP transaction.
2022-01-12 08:48:41 +02:00
Roman Gershman a82c409006 Update state of things 2022-01-09 20:43:49 +02:00
Roman Gershman 6ed248efdf more planning for the next milestones 2022-01-08 20:36:52 +02:00
Roman Gershman 0c14be51d4 Add detailed status regarding the first milestone (Egg) 2022-01-08 19:39:30 +02:00
Roman Gershman e7071b73b1 Refactor server commands into server_family.
Introduce FlushDb. Minor cleanups and renamings.
2022-01-08 11:07:31 +02:00
Roman Gershman 76286e33bf Add more dragonfly tests 2022-01-07 18:46:57 +02:00
Roman Gershman 35fa69c928 Add EXEC transaction support. Introduce dragonfly_test.cc 2022-01-06 15:48:51 +02:00
Roman Gershman 9e5a5ea2f2 Introduce Rename command 2022-01-05 00:56:58 +02:00
Roman Gershman 29cdcb96ec Add generic_family_test. Minor cleanups 2022-01-04 15:11:37 +02:00
Roman Gershman 5a7a67fbcf Introduce list_family_test 2022-01-04 10:47:49 +02:00
Roman Gershman 6b7ed73753 Implement client side resp parsing to be used in tests 2022-01-04 01:16:24 +02:00
Roman Gershman a4d8ded6ce Add string_family_test.cc unit test
Add unit test helper code that we will leverage for writing more unit tests.
Numerous fixes in the transactional code. Allow controlling of expiration clock
in unit-test environment with configurable task synchronization. The latter is enabled
for prod and disable in the tests.
2022-01-03 11:20:08 +02:00
Roman Gershman d64b4e01ea Implement basic list operations
Fix redis linker dependencies. Bring more redis (BSD-3) code.
Fix bugs related to multi-database redis.
Introduce multiple types for redis values.
2022-01-02 10:40:16 +02:00