| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
| |
|
|\
| |
| |
| |
| | |
SqREL/make-error-of-invalid-command-withing-context-explicit
Make error when submitting command in incorrect context more explicit
|
| |
| |
| |
| |
| | |
So error message `ERR only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context` will become
`ERR 'get' command submitted, but only (P)SUBSCRIBE / (P)UNSUBSCRIBE / PING / QUIT allowed in this context`
|
| | |
|
| | |
|
|\ \
| | |
| | | |
Fix potential memory leak of rioWriteBulkStreamID().
|
| | | |
|
| | | |
|
| | | |
|
| | |
| | |
| | |
| | | |
Related to #6054.
|
| | | |
|
| | |
| | |
| | |
| | | |
Related to #6110.
|
|\ \ \
| |_|/
|/| | |
Enhance IO Threaded: use main thread to handle read/write work
|
| | | |
|
| | | |
|
|\ \ \ |
|
| |\ \ \
| | | | |
| | | | | |
Rename rdb when replica finish receiving rdb asynchronously
|
| | | | | |
|
| |\ \ \ \
| | | | | |
| | | | | | |
Fix bug on KEYS command where pattern starts with * followed by \x00
|
| | | |_|/
| | |/| |
| | | | |
| | | | | |
char).
|
|/ / / /
| | | |
| | | |
| | | |
| | | |
| | | | |
We exit later, so no bug fixed, but it is more correct.
See #6054, thanks to @ShooterIT for finding the issue.
|
|\ \ \ \
| | | | |
| | | | | |
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
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add support for incremental build with header files
|
| | |_|/ /
| |/| | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
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.
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Add REDISMODULE_CTX_FLAGS_MULTI_DIRTY.
|
| | |/ / /
| |/| | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
typo fix in acl.c
|
| | |_|/ /
| |/| | | |
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Adjusts 'io_threads_num' max in config.c
|
| |/ / / /
| | | | |
| | | | |
| | | | | |
Instead of 512, use the defined max from networking.c
|
|\ \ \ \ \
| | | | | |
| | | | | | |
Sentinel: avoid sentinel changes promoted_slave to be its own replica.
|
| |/ / / / |
|
|/ / / /
| | | |
| | | |
| | | | |
Fixes #6744.
|
| |/ /
|/| |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
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.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Happened when we set the name to "" to cancel the name.
Was introduced during the RESP3 refactoring.
See #6036.
|
|\ \ \ |
|
| |\ \ \
| | | | |
| | | | | |
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
|
| |/ /
| | |
| | |
| | |
| | |
| | |
| | | |
- 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
|