9418 Commits

Author SHA1 Message Date
antirez
d08b8b92fc Git ignore: ignore more files. 2020-01-10 13:16:14 +01:00
Guy Benoish
3913ffd5bc Blocking XREAD[GROUP] should always reply with valid data (or timeout)
This commit solves the following bug:
127.0.0.1:6379> XGROUP CREATE x grp $ MKSTREAM
OK
127.0.0.1:6379> XADD x 666 f v
"666-0"
127.0.0.1:6379> XREADGROUP GROUP grp Alice BLOCK 0 STREAMS x >
1) 1) "x"
   2) 1) 1) "666-0"
         2) 1) "f"
            2) "v"
127.0.0.1:6379> XADD x 667 f v
"667-0"
127.0.0.1:6379> XDEL x 667
(integer) 1
127.0.0.1:6379> XREADGROUP GROUP grp Alice BLOCK 0 STREAMS x >
1) 1) "x"
   2) (empty array)

The root cause is that we use s->last_id in streamCompareID
while we should use the last *valid* ID
2020-01-10 13:16:14 +01:00
John Sully
2539a8a3ce Add support for incremental build with header files 2020-01-10 13:16:14 +01:00
WuYunlong
7030e66807 Fix petential cluster link error.
Funcion adjustOpenFilesLimit() has an implicit parameter, which is server.maxclients.
This function aims to ajust maximum file descriptor number according to server.maxclients
by best effort, which is "bestlimit" could be lower than "maxfiles" but greater than "oldlimit".
When we try to increase "maxclients" using CONFIG SET command, we could increase maximum
file descriptor number to a bigger value without calling aeResizeSetSize the same time.
When later more and more clients connect to server, the allocated fd could be bigger and bigger,
and eventually exceeds events size of aeEventLoop.events. When new nodes joins the cluster,
new link is created, together with new fd, but when calling aeCreateFileEvent, we did not
check the return value. In this case, we have a non-null "link" but the associated fd is not
registered.

So when we dynamically set "maxclients" we could reach an inconsistency between maximum file
descriptor number of the process and server.maxclients. And later could cause cluster link and link
fd inconsistency.

While setting "maxclients" dynamically, we consider it as failed when resulting "maxclients" is not
the same as expected. We try to restore back the maximum file descriptor number when we failed to set
"maxclients" to the specified value, so that server.maxclients could act as a guard as before.
2020-01-10 13:16:14 +01:00
Yossi Gottlieb
3f8a690161 Add REDISMODULE_CTX_FLAGS_MULTI_DIRTY. 2020-01-10 13:16:03 +01:00
hwware
86fd8f0e3f typo fix in acl.c 2020-01-10 13:16:03 +01:00
Itamar Haber
d6a6b6f40c Adjusts 'io_threads_num' max to 128
Instead of 512, use the defined max from networking.c
2020-01-10 13:16:03 +01:00
antirez
4a63d5d881 XCLAIM: Create the consumer only on successful claims.
Fixes #6744.
2020-01-08 12:31:39 +01:00
yz1509
28622cc532 avoid sentinel changes promoted_slave to be its own replica. 2020-01-08 12:31:25 +01:00
John Sully
174a8b886d pro launch should respect KEYDB_PRO_DIRECTORY
Former-commit-id: d5f8df59977194ee0cfce798364eb5620435e6f3
2020-01-06 14:24:37 -05:00
John Sully
7f6389a9d0 Add license key lib for aarch64
Former-commit-id: 8b804d91e3dc810b6d8cc585dd3747ba962ead18
2020-01-06 19:16:48 +00:00
John Sully
4a6748d29f Merge branch 'unstable' of https://github.com/JohnSully/KeyDB into unstable
Former-commit-id: dd70f5efd732c1b771030a6254fc1a4e9fc45356
2020-01-06 12:04:00 -05:00
John Sully
64c07168d7 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: 3d63d38aae762c60a22154109827ebfd46aae2a5
2020-01-05 20:19:55 -05:00
John Sully
5907dccdae Add new flags to example configuration file
Former-commit-id: bb38628f0ef4f417db968154cc37d103f11b4c63
2020-01-05 20:19:28 -05:00
John Sully
78924a295e Enforce seperate license keys for connected replicas
Former-commit-id: bc005cb50b1010a2bc9170e261cd93dba849c35f
2020-01-04 17:15:06 -05:00
John Sully
2109d8972e Additional flash tests
Former-commit-id: 3f9b1a35821cb3a3bf82aabb180c13a9eddf4e93
2020-01-03 17:11:23 -05:00
John Sully
efdf09be36 Fix crash with subkey expire
Former-commit-id: 8e1d416714484ff6ff4242c5d9a24b1458bbfb7b
2020-01-03 17:06:07 -05:00
John Sully
4301cfb8e9 Merge branch 'unstable' into keydbpro
Former-commit-id: 76ddbed0708277443660ffab2a2289e120fe87cd
2020-01-03 16:53:40 -05:00
John Sully
e49ec97f98 subkey expire testes
Former-commit-id: 0cf3af6857c192bd03656c28b5a0a2bb11416b8c
2020-01-03 16:50:13 -05:00
John Sully
ce0fde973a Add support for storing expirations in FLASH
Former-commit-id: 1dca07bd564042fce1b01d275641f35b918ae557
2020-01-03 15:53:36 -05:00
John Sully
6ab3e82e45 Drop severity of master disconnect log when multimaster is enabled
Former-commit-id: edb993d52b25c30392c6eb1e60896498f991a223
2020-01-02 15:36:02 -05:00
John Sully
85c8fc72b7 Fix issue where expire is lost when performing a defrag
Former-commit-id: aea333bb78fafabbddb340dfd4c232c2e207cfba
2020-01-01 20:41:17 -05:00
John Sully
2e50d383a6 C++ wrapper classes for SDS
Former-commit-id: 45817db8c3a86815945359113dcbccfde4257ce5
2020-01-01 19:13:48 -05:00
antirez
d22d40a2eb Fix active expire division by zero.
Likely fix #6723.

This is what happens AFAIK: we enter the main loop where we expire stuff
until a given percentage of keys is still found to be logically expired.
There are however other potential exit conditions.

However the "sampled" variable is not always incremented inside the
loop, because we may found no valid slot as we scan the hash table, but
just NULLs ad dict entries. So when the do/while loop condition is
triggered at the end, we do (expired*100/sampled), dividing by zero if
we sampled 0 keys.
2020-01-01 18:10:39 +01:00
John Sully
ad0cb8da40 Fix issue #130 due to fastlock timeout reduction
Former-commit-id: dbef17c2e16f115733242721e9b5a43f01e7a554
2020-01-01 11:52:00 -05:00
antirez
c2461ba531 Fix duplicated CLIENT SETNAME reply.
Happened when we set the name to "" to cancel the name.
Was introduced during the RESP3 refactoring.

See #6036.
2019-12-29 15:46:31 +01:00
Guy Benoish
444dd1075c Stream: Handle streamID-related edge cases
This commit solves several edge cases that are related to
exhausting the streamID limits: We should correctly calculate
the succeeding streamID instead of blindly incrementing 'seq'
This affects both XREAD and XADD.

Other (unrelated) changes:
Reply with a better error message when trying to add an entry
to a stream that has exhausted last_id
2019-12-29 15:46:31 +01:00
Oran Agra
f866b31a74 config.c adjust config limits and mutable
- make lua-replicate-commands mutable (it never was, but i don't see why)
- make tcp-backlog immutable (fix a recent refactory mistake)
- increase the max limit of a few configs to match what they were before
the recent refactory
2019-12-29 15:46:31 +01:00
antirez
1b56a873d5 Inline protocol: handle empty strings well.
This bug is from the first version of Redis. Probably the problem here
is that before we used an SDS split function that created empty strings
for additional spaces, like in "SET    foo          bar".
AFAIK later we replaced it with the curretn sdssplitarg() API that has
no such a problem. As a result, we introduced a bug, where it is no
longer possible to do something like:

    SET foo ""

Using the inline protocol. Now it is fixed.
2019-12-29 15:46:31 +01:00
antirez
a640d1bb5c Fix ip and missing mode in RM_GetClusterNodeInfo(). 2019-12-29 15:46:31 +01:00
John Sully
bbbe030e78 Merge branch 'unstable' into keydbpro
Former-commit-id: 7ddcbb8ec0c842bd4a79b6e14ebd33616174e793
2019-12-27 18:17:36 -05:00
John Sully
55cddbe82f Fix some static analysis warnings
Former-commit-id: 42a8f22c21706f9ddcaa63ceafc5ad817c1fe876
2019-12-27 18:17:22 -05:00
John Sully
55361c65d8 Merge branch 'keydbpro' of https://github.com/JohnSully/KeyDB-Pro into keydbpro
Former-commit-id: b52725163ec6ea128102880be33c43437693cc9e
2019-12-27 17:46:51 -05:00
John Sully
df3b99bf62 Ignore dependency files
Former-commit-id: f18d973adcf38483400edac85e9258c37aa4e8e5
2019-12-27 17:46:16 -05:00
John Sully
8f20fc7f33 Ignore dependency files
Former-commit-id: 6e06e0dfc7cd572d93cce99c4b8b8b0b59e95e60
2019-12-27 17:45:56 -05:00
John Sully
0fd9a4c67a Merge keydb community
Former-commit-id: b9dcd0997c3dfd3cd2a5908ba540bc4d389104a0
2019-12-27 17:44:48 -05:00
John Sully
082e493d32 Make incremental building work with header files
Former-commit-id: bf500ab44b82e9a3ad7f341b7d2f7f583fdf336f
2019-12-27 17:34:41 -05:00
John Sully
bb6aa59883 recommended rocksdb tuning
Former-commit-id: 2a634365f901968f9758d2d362f211b8e0fddc2a
2019-12-24 02:22:47 -05:00
John Sully
098684bf8e Track key count accurately before we've committed to the database. Also use this to optimize DB lookups when all keys are in memory
Former-commit-id: 78c07f0276109a085761b7044d4edc63af26d3da
2019-12-24 00:03:38 -05:00
John Sully
7da74195a8 Perf remove extra lookup in rocksdb
Former-commit-id: 8074472c7a25572a53f1166911920c2cb168c141
2019-12-23 23:32:04 -05:00
John Sully
cded9874a0 More testing
Former-commit-id: 564d94f0653315ce05495a8d83ff8577a365c11b
2019-12-23 22:14:43 -05:00
John Sully
054bbe9baa Fix issue where database size is off when setting key with expire
Former-commit-id: 7796918bfb4a98bc056b3b8f4065f1416da8d89a
2019-12-23 22:07:33 -05:00
John Sully
ef62b9b14c Add missing files
Former-commit-id: 4eadf8f0923ee70ffa3af329a4d636d508bfad8d
2019-12-23 19:07:53 -05:00
John Sully
4fd552d8b6 Add more test code, and fix bugs uncovered
Former-commit-id: 5362fa4b62f89cbc1e92e01c73a45c4e3718708b
2019-12-23 17:17:41 -05:00
John Sully
bd4d372d45 Key count is innacurate after overwrite
Former-commit-id: 180c5a8e401415cede36548ab8d01f3e4ff8fb7f
2019-12-22 19:41:36 -05:00
John Sully
59f7bd49c9 Add additional tests
Former-commit-id: e7d2c78e776b8262fd54caeb7b6bd210182e9bdb
2019-12-22 19:16:30 -05:00
John Sully
ca3c4474c2 Fix FLASH eviction issue, the algo relies on correct key count
Former-commit-id: dc260a7f44fe197b9b0022d044d559be88bf91be
2019-12-22 18:38:10 -05:00
John Sully
1e49dfe8e7 Optimization fails because dbAdd() will ensure the key
Former-commit-id: 1448b555c49fb5ba4a573a97681f7843ba02141f
2019-12-22 17:49:54 -05:00
John Sully
8ef2ec84de Merge remote-tracking branch 'nonfree/tests' into keydbpro
Former-commit-id: 180b059c05290aa403197bca819ec092c5ab326d
2019-12-22 17:31:05 -05:00
John Sully
7c8dda47cb Fix issue where DELETE always returns 1 when using FLASH
Former-commit-id: 0574db59fdc740255388ae77d2ece8622898bb49
2019-12-22 17:30:15 -05:00