- 09 Sep, 2020 5 commits
-
-
天河 authored
Comments about the behavior of the function where wrong (off by one) Co-authored-by:
Oran Agra <oran@redislabs.com>
-
Yossi Gottlieb authored
Save parameters should either be default or whatever specified in the config file. This fixes an issue introduced in #7092 which causes configuration file settings to be applied on top of the defaults.
-
Itamar Haber authored
Improve RM_Call inline documentation about the fmt argument so that we don't completely depend on the web docs. Co-authored-by:
Oran Agra <oran@redislabs.com>
-
Jan-Erik Rediger authored
THP can also be set to madvise, in which case it shouldn't cause problems for Redis since redis (or the allocator) doesn't use madvise to activate it.
-
Eran Liberty authored
There was a bug. Although cluster replicas would allow read commands, they would not allow a MULTI-EXEC that's composed solely of read commands. Adds tests for coverage. Co-authored-by:
Oran Agra <oran@redislabs.com> Co-authored-by:
Eran Liberty <eranl@amazon.com>
-
- 08 Sep, 2020 1 commit
-
-
Yossi Gottlieb authored
-
- 06 Sep, 2020 1 commit
-
-
Oran Agra authored
Starting redis 6.0 and the changes we made to the diskless master to be suitable for TLS, I made the master avoid reaping (wait3) the pid of the child until we know all replicas are done reading their rdb. I did that in order to avoid a state where the rdb_child_pid is -1 but we don't yet want to start another fork (still busy serving that data to replicas). It turns out that the solution used so far was problematic in case the fork child was being killed (e.g. by the kernel OOM killer), in that case there's a chance that we currently disabled the read event on the rdb pipe, since we're waiting for a replica to become writable again. and in that scenario the master would have never realized the child exited, and the replica will remain hung too. Note that there's no mechanism to detect a hung replica while it's in rdb transfer state. The solution here is to add another pipe which is used by the parent to tell the child it is safe to exit. this mean that when the child exits, for whatever reason, it is safe to reap it. Besides that, i'm re-introducing an adjustment to REPLCONF ACK which was part of #6271 (Accelerate diskless master connections) but was dropped when that PR was rebased after the TLS fork/pipe changes (5a477946). Now that RdbPipeCleanup no longer calls checkChildrenDone, and the ACK has chance to detect that the child exited, it should be the one to call it so that we don't have to wait for cron (server.hz) to do that.
-
- 03 Sep, 2020 2 commits
-
-
Yossi Gottlieb authored
Fix issues with writeConn() which resulted with corruption of the stream by leaving an extra byte in the buffer. The trigger for this is partial writes or write errors which were not experienced on Linux but reported on macOS.
-
Oran Agra authored
During long running scripts or loading RDB/AOF, we may need to do some defragging. Since processEventsWhileBlocked is called periodically at unknown intervals, and many cron jobs either depend on run_with_period (including active defrag), or rely on being called at server.hz rate (i.e. active defrag knows ho much time to run by looking at server.hz), the whileBlockedCron may have to run a loop triggering the cron jobs in it (currently only active defrag) several times. Other changes: - Adding a test for defrag during aof loading. - Changing key-load-delay config to take negative values for fractions of a microsecond sleep
-
- 02 Sep, 2020 3 commits
-
-
Pierre Jambet authored
DEBUG ZIPLIST <key> currently returns the following error string if the key is not a ziplist: "ERR Not an sds encoded string.". This looks like an accidental copy/paste error from the error returned in the else if branch above where this string is returned if the key is not an sds string. The command was added in ac61f906 and looking at the commit, nothing indicates that it is not an accidental typo. The error string now returns a correct error: "Not a ziplist encoded object", which accurately describes the error.
-
Oran Agra authored
When redis isn't configured to have a log file, having these prints before damonization puts them in the calling process stdout rather than /dev/null
-
Thandayuthapani authored
* Add master/slave option in --cluster call command * Update src/redis-cli.c * Update src/redis-cli.c Co-authored-by:
Itamar Haber <itamar@redislabs.com>
-
- 01 Sep, 2020 1 commit
-
-
Yossi Gottlieb authored
All user-supplied variables that affect the build should be explicitly persisted. Fixes #7254
-
- 28 Aug, 2020 2 commits
-
-
maohuazhu authored
The previous algorithm is of O(n^2) time complexity. It would have run through the ziplist entries one by one, each time doing a `realloc` and a `memmove` (moving the entire tail of the ziplist). The new algorithm is O(n), it runs over all the records once, computing the size of the `realloc` needed, then does one `realloc`, and run thought the records again doing many smaller `memmove`s, each time moving just one record. So this change reduces many reallocs, and moves each record just once. Co-authored-by:
zhumaohua <zhumaohua@megvii.com> Co-authored-by:
Oran Agra <oran@redislabs.com>
-
Jim Brunner authored
Update adds a general source for retrieving a monotonic time. In addition, AE has been updated to utilize the new monotonic clock for timer processing. This performance improvement is **not** enabled in a default build due to various H/W compatibility concerns, see README.md for details. It does however change the default use of gettimeofday with clock_gettime and somewhat improves performance. This update provides the following 1. An interface for retrieving a monotonic clock. getMonotonicUs returns a uint64_t (aka monotime) with the number of micro-seconds from an arbitrary point. No more messing with tv_sec/tv_usec. Simple routines are provided for measuring elapsed milli-seconds or elapsed micro-seconds (the most common use case for a monotonic timer). No worries about time moving backwards. 2. High-speed assembler implementation for x86 and ARM. The standard method for retrieving the monotonic clock is POSIX.1b (1993): cloc...
-
- 27 Aug, 2020 3 commits
-
-
Oran Agra authored
65a3307b (released in 6.0.6) has a side effect, when processCommand rejects a command with pre-made shared object error string, it trims the newlines from the end of the string. if that string is later used with addReply, the newline will be missing, breaking the protocol, and leaving the client hung. It seems that the only scenario which this happens is when replying with -LOADING to some command, and later using that reply from the CONFIG SET command (still during loading). this will result in hung client. Refactoring the code in order to avoid trimming these newlines from shared string objects, and do the newline trimming only in other cases where it's needed. Co-authored-by:
Guy Benoish <guy.benoish@redislabs.com>
-
Oran Agra authored
During a long AOF or RDB loading, the memory stats were not updated, and INFO would return stale data, specifically about fragmentation and RSS. In the past some of these were sampled directly inside the INFO command, but were moved to cron as an optimization. This commit introduces a concept of loadingCron which should take some of the responsibilities of serverCron. It attempts to limit it's rate to approximately the server Hz, but may not be very accurate. In order to avoid too many system call, we use the cached ustime, and also make sure to update it in both AOF loading and RDB loading inside processEventsWhileBlocked (it seems AOF loading was missing it).
-
valentinogeron authored
If the server gets MULTI command followed by only read commands, and right before it gets the EXEC it reaches OOM, the client will get OOM response. So, from now on, it will get OOM response only if there was at least one command that was tagged with `use-memory` flag
-
- 25 Aug, 2020 2 commits
-
-
filipe oliveira authored
A first step to enable a consistent full percentile analysis on query latency so that we can fully understand the performance and stability characteristics of the redis-server system we are measuring. It also improves the instantaneous reported metrics, and the csv output format.
-
Itamar Haber authored
Otherwise, it is treated as a single allocation and freed synchronously. The following logic is used for estimating the effort in constant-ish time complexity: 1. Check the number of nodes. 1. Add an allocation for each consumer group registered inside the stream. 1. Check the number of PELs in the first CG, and then add this count times the number of CGs. 1. Check the number of consumers in the first CG, and then add this count times the number of CGs.
-
- 24 Aug, 2020 2 commits
-
-
Wang Yuan authored
unlike printf, sdscatfmt doesn't take %d
-
Wang Yuan authored
The previous fix using _Atomic was insufficient, since we check and set it in different places. The implications of this bug are just that a portion of the bug report will be shown twice, in the race case of two concurrent crashes.
-
- 23 Aug, 2020 2 commits
-
-
Valentino Geron authored
In case the redis is about to return broken reply we want to crash with assert so that we are notified about the bug. see #7687.
-
Valentino Geron authored
When calling to LPOS command when RANK is higher than matches, the return value is non valid response. For example: ``` LPUSH l a :1 LPOS l b RANK 5 COUNT 10 *-4 ``` It may break client-side parser. Now, we count how many replies were replied in the array. ``` LPUSH l a :1 LPOS l b RANK 5 COUNT 10 *0 ```
-
- 21 Aug, 2020 1 commit
-
-
Wen Hui authored
-
- 20 Aug, 2020 6 commits
-
-
Wen Hui authored
-
huangzhw authored
It was also using the wrong struct, but luckily RedisModuleFlushInfo and RedisModuleLoadingProgress are identical.
-
guybe7 authored
We wanna avoid a chance of someone using the pointer in it after it'll be freed / realloced.
-
杨博东 authored
After fork, the child process(redis-aof-rewrite) will get the fd opened by the parent process(redis), when redis killed by kill -9, it will not graceful exit(call prepareForShutdown()), so redis-aof-rewrite thread may still alive, the fd(lock) will still be held by redis-aof-rewrite thread, and redis restart will fail to get lock, means fail to start. This issue was causing failures in the cluster tests in github actions. Co-authored-by:
Oran Agra <oran@redislabs.com>
-
Raghav Muddur authored
Correcting the variable to clusterMsgModule.
-
Madelyn Olson authored
-
- 19 Aug, 2020 1 commit
-
-
Wang Yuan authored
-
- 18 Aug, 2020 5 commits
-
-
guybe7 authored
-
Oran Agra authored
Since users often post just the crash log in github issues, the log print that's above it is missing. No reason not to include the size in the panic message itself.
-
Wen Hui authored
Edit auth failed message include user disabled case in hello command
-
Wen Hui authored
It was already defined in the API header and the documentation, but not used by the implementation.
-
Oran Agra authored
65a3307b added rejectCommand which takes an robj reply and passes it through addReplyErrorSafe to addReplyErrorLength. The robj contains newline at it's end, but addReplyErrorSafe converts it to spaces, and passes it to addReplyErrorLength which adds the protocol newlines. The result was that most error replies (like OOM) had extra two trailing spaces in them.
-
- 17 Aug, 2020 2 commits
-
-
Yossi Gottlieb authored
The `REDISMODULE_CLIENTINFO_FLAG_SSL` flag was already a part of the `RedisModuleClientInfo` structure but was not implemented.
-
Yossi Gottlieb authored
Avoid re-configuring (and validating) SSL/TLS configuration on `CONFIG SET` when TLS is not actively enabled for incoming connections, cluster bus or replication. This fixes failures when tests run without `--tls` on binaries that were built with TLS support. An additional benefit is that it's now possible to perform a multi-step configuration process while TLS is disabled. The new configuration will be verified and applied only when TLS is effectively enabled.
-
- 15 Aug, 2020 1 commit
-
-
michael-grunder authored
-