- 28 Jun, 2018 2 commits
-
-
zhaozhao.zz authored
-
zhaozhao.zz authored
-
- 27 Jun, 2018 9 commits
-
-
antirez authored
-
antirez authored
-
antirez authored
-
Mustafa Paltun authored
-
Mustafa Paltun authored
-
antirez authored
-
antirez authored
-
antirez authored
-
Oran Agra authored
-
- 26 Jun, 2018 5 commits
-
-
antirez authored
Related to #5037.
-
antirez authored
-
antirez authored
Thanks to @shenlongxing for reporting the problem. Related to #5062.
-
Madelyn Olson authored
-
Madelyn Olson authored
-
- 25 Jun, 2018 9 commits
-
-
antirez authored
Instead of telling the user to set the renamed command to "" to remove the renaming, to the obvious thing when a command is renamed to itself. So if I want to remove the renaming of PING, I just rename it to PING again.
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
- 24 Jun, 2018 1 commit
-
-
Guy Benoish authored
-
- 21 Jun, 2018 4 commits
-
-
michael-grunder authored
Unlike the BZPOP variants, these functions take a single key. This fixes an erroneous CROSSSLOT error when passing a count to a cluster enabled server.
-
Oran Agra authored
-
shenlongxing authored
-
youjiali1995 authored
-
- 20 Jun, 2018 1 commit
-
-
Guy Benoish authored
RESTORE now supports: 1. Setting LRU/LFU 2. Absolute-time TTL Other related changes: 1. RDB loading will not override LRU bits when RDB file does not contain the LRU opcode. 2. RDB loading will not set LRU/LFU bits if the server's maxmemory-policy does not match.
-
- 19 Jun, 2018 8 commits
-
-
Oran Agra authored
this reduces the extra 8 bytes we save before each pointer. but more importantly maybe, it makes the valgrind runs to be more similiar to our normal runs. note: the change in malloc_stats struct in server.h is to eliminate an name conflict. structs that are not typedefed are resolved from a separate name space.
-
antirez authored
-
Oran Agra authored
due to incorrect forward declaration, it didn't provide all arguments. this lead to random value being read from the stack and return of incorrect time, which in this case doesn't matter since no one uses it.
-
antirez authored
-
antirez authored
-
Oran Agra authored
-
Oran Agra authored
this complication in the code is from times were rdbSaveLen didn't support 64 bits.
-
antirez authored
Basically we cannot be sure that if the key is expired while writing the AOF, the main thread will surely find the key expired. There are possible race conditions like the moment at which the "now" is sampled, and the fact that time may jump backward. Think about the following: SET a 5 EXPIRE a 1 AOF rewrite starts after about 1 second. The child process finds the key expired, while in the main thread instead an INCR command is called against the key "a" immediately after a fork, and the scheduler was faster to give execution time to the main thread, so "a" is yet not expired. The main thread will generate an INCR a command to the AOF log that will be appended to the rewritten AOF file, but that INCR command will target a non existin "a" key, so a new non volatile key "a" will be created. Two observations: A) In theory by computing "now" before the fork, we should be sure that if a key is expired at that time, it will be expired later when the main thread will try to access to such key. However this does not take into account the fact that the computer time may jump backward. B) Technically we may still make the process safe by using a monotonic time source. However there were other similar related bugs, and in general the new "vision" is that Redis persistence files should represent the memory state without trying to be too smart: this makes the design more consistent, bugs less likely to arise from complex interactions, and in the end what is to fix is the Redis expire process to have less expired keys in RAM. Thanks to Oran Agra and Guy Benoish for writing me an email outlining this problem, after they conducted a Redis 5 code review.
-
- 18 Jun, 2018 1 commit
-
-
antirez authored
-