618 Commits

Author SHA1 Message Date
John Sully
9df7197221 Forkless background save. NOT OPTIMIZED
Former-commit-id: bd9d8e05b0430efd226be773c0530828f1f6b428
2019-10-20 23:54:05 -04:00
John Sully
764a05fedd Factor out dependencies on rdb_child_pid which will be going away
Former-commit-id: 2ab4c6b99e3f3cb9f216bd81e78914a6fcd394f6
2019-10-17 23:10:45 -04:00
John Sully
5fb7d4a325 Dependencies for forkless RDB saving
Former-commit-id: c12be594754ac8079f467e0fa9f8580bd65e3a55
2019-10-17 22:53:50 -04:00
John Sully
7de19770cb Ensure RDB saving only uses data from the persistent data struct, and cleanup inheritance
Former-commit-id: fcdda67d87b3076023f459532c75392b72768a51
2019-10-17 17:20:47 -04:00
John Sully
e6bf931f2c Support serializing all types
Former-commit-id: dfdd41f15c0567925f02fd5df779f597ab16894d
2019-10-16 14:23:28 -04:00
John Sully
60c8887aae Cleanup inheritance
Former-commit-id: e8debc83e8271cf8d76c5084923cf6e1ea7af3b4
2019-10-16 13:45:36 -04:00
John Sully
b02148db42 Merge branch 'unstable' into advanced_db
Former-commit-id: 88152a8f4f9b4e3a82d5f1416930d39bfa91eb47
2019-10-16 13:23:19 -04:00
John Sully
eaabfd2038 Fix crash adding expire to key with a subkey expire already set
Former-commit-id: 18a3768e07eb8c4feb4a666d95a19d97267ac381
2019-10-16 12:26:48 -04:00
John Sully
091a93e098 Fix clang warnings
Former-commit-id: c4f086ae936e1ba5ed97c2f0810ddb6a4de25be6
2019-10-13 15:48:55 -04:00
John Sully
1a3885cad0 Fix failing travis CI build
Former-commit-id: 3f0c1f94ebeb19133f1f62b8b3a82871dbd5f73f
2019-10-13 15:41:53 -04:00
John Sully
4f47f6818f Add the IStorage interface and wire it up
Former-commit-id: 898efbfc0c7038818083ea29fdd63cafa47721fb
2019-10-13 15:24:08 -04:00
John Sully
63f2b3a987 Isolate the persistent parts of the database from the runtime parts
Former-commit-id: 8d63f5b560d067a634f2ef671962be8815c9e23c
2019-10-13 15:24:08 -04:00
John Sully
e4482cb695 Hide the database dict
Former-commit-id: 024365521c2b74275839562ba9326b6ea26d3836
2019-10-13 15:13:01 -04:00
John Sully
6b2c838e8b Implement the lastmodified query for the OBJECT command
Former-commit-id: 3a3b59a0543148956797ce4ad9d08095051517b9
2019-10-13 14:12:09 -04:00
John Sully
0e82cb44e5 Implement the EXPIREMEMBERAT command
Former-commit-id: 203e341bf4427723903d8d3de03af2f0ef043a3f
2019-10-13 13:15:13 -04:00
John Sully
c61b6cc8fd Update more slave instances to use replica (Issue #75)
Former-commit-id: 252725d50fc9d4ff2b6e9246a36c38176d61beae
2019-10-13 12:29:20 -04:00
John Sully
d4e4b4f4d1 Update a few uses of slave to use the new replica terminology (Issue #75)
Former-commit-id: c15633ea9e784ef0e12e4015a75245661a8cf1b7
2019-10-13 12:12:05 -04:00
John Sully
2d0cd2c1b2 Implement TTL and PERSIST commands for subkeys. Also ensure expiremember replaces any old subkey expiries
Former-commit-id: 16f96efbe7c6c27f2a79f5b472447407f905df15
2019-10-13 12:03:25 -04:00
John Sully
9fb26516d6 Fix issue #88 - don't let seperate KeyDB processes listen on the same port
Former-commit-id: 4631119179df5cff638e9b8c51b030cef89a6c02
2019-10-13 10:02:21 -04:00
John Sully
b6b6bb0488 Implement left and right shift BITOP operators
Former-commit-id: ba365298ed37a76f0a8630e0ec6c86393293aebe
2019-09-28 00:10:46 -04:00
John Sully
9f3cbd580e Fix multi master bugs: 1. we fail to create the temp file. 2. We use a master RDB as our backup even though we merged databases (and therefore it is not representitive)
Former-commit-id: e776474f68a2824bb7d4082c41991a9a9f3a9c9d
2019-09-26 20:35:51 -04:00
John Sully
2912b22403 KEYS now only blocks one database
Former-commit-id: 18d42a5c353f76533a0ccc4ded24ed089cedacc8
2019-09-12 18:51:10 -04:00
John Sully
b98eed9945 Fix race condition in PUB/SUB and other async reply commands where the client can be freed before our handler is executed on the client thread. When this occurs the client pointer is dangling
Former-commit-id: 46a78c69e718f0aeb5e62f33c59458b15b8d9bc6
2019-08-26 20:18:52 -04:00
John Sully
2181eca5de Fix crash setting expire on a key with an existing subkey expiration
Former-commit-id: 4858fd893c8e638b0efdcd3ab2c6dc188a6dc6bd
2019-07-29 17:09:51 -04:00
John Sully
f3aa422a3f RREPLAY failures should be logged
Former-commit-id: 08b6a04055e950e53f043391ec9f9a09f654b1ee
2019-07-24 22:49:30 -04:00
John Sully
f88592451d Plumb support for sub expires to all expire related code
Former-commit-id: 184abac6942a9a6aa8783741b50b23210afddcc5
2019-07-23 18:53:59 -04:00
John Sully
2a2225d150 Initial prototype of EXPIREMEMBER command
Former-commit-id: 0b3d74ea67d616a6869cbd66198c8dd7ffa72eb7
2019-07-23 18:53:58 -04:00
John Sully
d58b2575e5 Support TTL stats with the new expire datastructure
Former-commit-id: 271df3dad4f55f20177a8a9a065778f4943835f1
2019-07-23 18:30:10 -04:00
John Sully
27cb5dba75 New expire datastructure and algorithm. Allows us to expire in sublinear time
Former-commit-id: 3880d2616c882e19169180dc10268564347b0279
2019-07-23 18:30:10 -04:00
John Sully
15f5c7ccf7 Merge commit '722446510faf0debf0d309708b2ed4fe4d939319' into unstable
Former-commit-id: 821c12c482d20b15dfb5a6eeab52e167997627d8
2019-07-19 00:32:43 -04:00
John Sully
4088de0ed2 Merge commit '677e95e2f5ee903682ce44a7bfd9558a22577926' into unstable
Former-commit-id: 4602f8c391409e9dd59f1fbee6a5ef011b219ca1
2019-07-19 00:01:56 -04:00
John Sully
e642441354 Fix compile errors from merges
Former-commit-id: 27a927fe0011536c6539d7c2a79ccfdaf78cee22
2019-07-18 23:35:51 -04:00
Angus Pearson
7b615e7274 Add char* typeNameCanonicalize(robj*) to remove duplicate code between SCAN and TYPE commands,
and to keep OBJ_* enum to string canonicalization in one place.


Former-commit-id: 3cdc6e8d846e88cf4e250b2643662bde2a9317c5
2019-07-18 23:31:31 -04:00
John Sully
e41ab66722 Resolve race on neterr variable
Former-commit-id: 1512274f4c51dc4e8f4e3d11df2f35e051c0c079
2019-07-18 17:11:28 -04:00
John Sully
aa560582b4 Make object refcounts atomic, technically it doesn't need to be currently but the semantics are complicated and error prone. This is much safer with little performance impact
Former-commit-id: e310d33c121550f69b1c06d101db0c3f944a7fb0
2019-07-18 15:49:12 -04:00
John Sully
bdc901f01c Implement test mode to make finding bugs easier
Former-commit-id: 971f69fe1ff9cce50492a47f306b312457e50b9f
2019-07-15 14:55:18 -04:00
John Sully
e78ed8cc64 Fix more locking deadlocks
Former-commit-id: 3081b6f98b5e7a9f3ef7cfe040236070398b081c
2019-07-12 23:51:45 -04:00
John Sully
8f1e7d9d5b Fix deadlock with client and ae locks
Former-commit-id: 8630339e43c1de1cd723bdfdca8ab5924e2cb8b0
2019-07-12 20:46:50 -04:00
John Sully
2a1d7890f6 Fix compile errors on GCC v5
Former-commit-id: 1f08a0efb33511ddc75c2acc62199bfcd0860137
2019-07-11 20:20:01 -04:00
John Sully
361b7655ef Fix active replication offset synchronization accounting, and enable the wait command
Former-commit-id: a5784ef09e71a9a45780a8f3dbab875b1f1fe1a5
2019-07-11 17:00:23 -04:00
Salvatore Sanfilippo
722446510f
Merge pull request #6116 from AngusP/scan-types
SCAN: New Feature `SCAN cursor [TYPE type]` modifier suggested in issue #6107
2019-07-08 12:53:34 +02:00
Angus Pearson
6eb52e200c Change typeNameCanonicalize -> getObjectTypeName, and other style changes 2019-07-08 11:04:37 +01:00
antirez
6b29f2d83d Client side caching: RESP2 support. 2019-07-05 12:24:28 +02:00
antirez
46edb55de9 Client side caching: implement trackingInvalidateKey(). 2019-07-03 19:16:20 +02:00
antirez
506764b3f8 Client side caching: hook inside call() for tracking. 2019-07-03 12:42:16 +02:00
antirez
c29f3bcf2e Client side caching: enable tracking mode. 2019-06-30 06:19:08 -04:00
antirez
45d64f229e Client side caching: fields and flags for tracking mode. 2019-06-29 20:08:41 -04:00
John Sully
a9837e9d95 Fix Travis CI issue
Former-commit-id: 8238d3207e484e5c9515d00ee7d2247168c03612
2019-06-17 23:56:23 -04:00
John Sully
9ca83cc9fd convert the pending write list to a vector for better performance and less cache thrashing
Former-commit-id: ae33ff3a6ef6d47bab63cf8362055c1ed210dbad
2019-06-17 23:00:12 -04:00
John Sully
913fe8eb78 Move more code out of the GIL
Former-commit-id: 59dbd625c143c1a890d4387f7a32c997f0d64f5f
2019-06-17 23:00:12 -04:00