John Sully
82358cbf4a
Initial implementation of the BITOPRANGE command
2019-09-06 00:12:30 -04:00
John Sully
46a78c69e7
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
2019-08-26 20:18:52 -04:00
John Sully
33e0b3e1c0
Fix warnings on newer compilers
2019-08-14 01:03:24 -04:00
benschermel
4e9bfcf84b
update readme ( #71 )
...
* update readme
* KeyDB must acknowledge its Redis origin and that while we have different opinions we are greatful to Antirez and Redis for the work they've done in this space.
* Update README.md
2019-08-06 19:25:13 -04:00
John Sully
75c6b4c64a
Optimize the new expire code
2019-08-02 21:31:05 -04:00
John Sully
8536854266
Fix test failures: Non active replicas are allowed to use shared int values
2019-07-30 17:11:15 -04:00
John Sully
6016dd0f8b
Acquire the lock for modules that don't acquire it before calling like they are supposed to
2019-07-30 16:54:25 -04:00
John Sully
47ef9e5cbd
Fix HLL corruption
2019-07-29 18:08:45 -04:00
John Sully
4858fd893c
Fix crash setting expire on a key with an existing subkey expiration
2019-07-29 17:09:51 -04:00
John Sully
cbe5c04a0f
Fix crash in RediSearch
2019-07-29 15:08:41 -04:00
John Sully
08b6a04055
RREPLAY failures should be logged
2019-07-24 22:49:30 -04:00
John Sully
afe66288fe
Issue #64 RREPLAY isn't binary safe. Add fix and test.
2019-07-24 22:31:02 -04:00
John Sully
2794cfced4
We can't set FExpire() on shared objects, issue #66
2019-07-23 23:39:47 -04:00
John Sully
d6b45a56e7
Merge pull request #65 from JohnSully/subexpire
...
EXPIREMEMBER Command Implementation
2019-07-23 19:06:57 -04:00
John Sully
a55d980436
Subexpire entries should load/save
2019-07-23 18:53:59 -04:00
John Sully
6037d1f326
Fix buggy rebase
2019-07-23 18:53:59 -04:00
John Sully
0b43b51a2e
Fix merge conflict
2019-07-23 18:53:59 -04:00
John Sully
184abac694
Plumb support for sub expires to all expire related code
2019-07-23 18:53:59 -04:00
John Sully
0ba5b2c3d6
Fix crash with traditional expiration
2019-07-23 18:53:58 -04:00
John Sully
0b3d74ea67
Initial prototype of EXPIREMEMBER command
2019-07-23 18:53:58 -04:00
John Sully
ea3bd614b8
New expire datastructure and algorithm. Allows us to expire in sublinear time
2019-07-23 18:49:31 -04:00
John Sully
d45edc493d
Merge pull request #50 from JohnSully/expire
...
New Expire Datastructure which is faster and more memory efficient. This allows us to process expiries in sublinear time.
2019-07-23 18:40:48 -04:00
John Sully
271df3dad4
Support TTL stats with the new expire datastructure
2019-07-23 18:30:10 -04:00
John Sully
5a193872f8
Implement hash table stats and fixup the hash function based on the results
2019-07-23 18:30:10 -04:00
John Sully
b5512d77a1
Add back missing file lost in rebase
2019-07-23 18:30:10 -04:00
John Sully
42bda8eaba
Add back file erroniously deleted in rebase
2019-07-23 18:30:10 -04:00
John Sully
7e5d3f4f16
never make last minute changes before commiting
2019-07-23 18:30:10 -04:00
John Sully
5f3920e491
Fix a few potential assert crashes
2019-07-23 18:30:10 -04:00
John Sully
3880d2616c
New expire datastructure and algorithm. Allows us to expire in sublinear time
2019-07-23 18:30:10 -04:00
John Sully
156e596f9c
Any +x bit is acceptable
2019-07-19 15:26:17 -04:00
John Sully
fc58516cca
Any +x bit is acceptable
2019-07-19 01:42:05 -04:00
John Sully
a4efcd35af
Modules must have execute permissions to load
2019-07-19 01:31:10 -04:00
antirez
27fe1658a2
RDB: make sure to abort on LZF encoding error.
2019-07-19 01:03:16 -04:00
antirez
47feb2719c
RDB: handle encoding errors with rdbExitReportCorruptRDB().
...
Without such change, the diskless replicas, when loading RDB files from
the socket will not abort when a broken RDB file gets loaded. This is
potentially unsafe, because right now Redis is not able to guarantee
that encoding errors are safe from the POV of memory corruptions (for
instance the LZF library may not be safe against untrusted data?) so
better to abort when the RDB file we are going to load is corrupted.
Instead I/O errors are still returned to the caller without aborting,
so that in case of short read the diskless replica can try again.
2019-07-19 01:02:49 -04:00
John Sully
c21af6b351
Fix bad merge in SCAN KEYS command
2019-07-19 00:43:23 -04:00
John Sully
821c12c482
Merge commit '722446510faf0debf0d309708b2ed4fe4d939319' into unstable
2019-07-19 00:32:43 -04:00
John Sully
4602f8c391
Merge commit '677e95e2f5ee903682ce44a7bfd9558a22577926' into unstable
2019-07-19 00:01:56 -04:00
John Sully
27a927fe00
Fix compile errors from merges
2019-07-18 23:35:51 -04:00
Angus Pearson
3cdc6e8d84
Add char* typeNameCanonicalize(robj*) to remove duplicate code between SCAN and TYPE commands,
...
and to keep OBJ_* enum to string canonicalization in one place.
2019-07-18 23:31:31 -04:00
John Sully
89b52da387
Merge commit '0cabe0cfa7290d9b14596ec38e0d0a22df65d1df' into unstable
2019-07-18 23:28:56 -04:00
Madelyn Olson
50ad880ad5
Fixed some spelling issues in ACL codepath including user facing error
2019-07-18 23:28:36 -04:00
John Sully
15bed4bbcc
Merge commit 'de035c94816722dd923e4aedd852869de79a5185' into unstable
2019-07-18 23:26:46 -04:00
John Sully
10986ae3a8
Merge commit 'bf963253ecfd367b49081a26c1b5c410558aecfc' into unstable
2019-07-18 23:22:36 -04:00
John Sully
2baa76b2ee
Merge commit '7fababd44e8b8b2df53cad0906ec5ab7c678dd44' into unstable
2019-07-18 23:21:13 -04:00
John Sully
ee460301fd
Merge commit '074d24df1e82b5c794a5da9fb6cda5b77b60b27b' into unstable
2019-07-18 23:20:46 -04:00
John Sully
8ebe2fce3d
Merge commit 'caf74e507e6535dab58ce6f3db19f8b594b5f7ca' into unstable
2019-07-18 23:18:42 -04:00
antirez
8198a697fd
Test: fix slowlog test false positive.
...
In fast systems "SLOWLOG RESET" is fast enough to don't be logged even
when the time limit is "1" sometimes. Leading to false positives such
as:
[err]: SLOWLOG - can be disabled in tests/unit/slowlog.tcl
Expected '1' to be equal to '0'
2019-07-18 23:12:52 -04:00
antirez
35acae360a
Make comment in getClientOutputBufferMemoryUsage() describing the present.
2019-07-18 23:12:39 -04:00
antirez
8aaa8b0b11
Fix test false positive introduced by threaded I/O.
...
Now clients that are ready to be terminated asynchronously are processed
more often in beforeSleep() instead of being processed in serverCron().
This means that the test will not be able to catch the moment the client
was terminated, also note that the 'omem' figure now changes in big
steps, because of the new client output buffers layout.
So we have to change the test range in order to accomodate for that.
Yet the test is useful enough to be worth taking, even if its precision
is reduced by this commit. Probably if we get more problems, a thing
that makes sense is just to check that the limit is < 200k. That's more
than enough actually.
2019-07-18 23:12:05 -04:00
John Sully
bb090b6d20
Active Replicas should always use their own slaveseldb variable when sending/saving rdbs - never those of their masters. This is because the Active Replica is also simultaneously a master
2019-07-18 20:50:20 -04:00