- 10 Jun, 2020 9 commits
-
-
antirez authored
Certain Redis objects may change upon read only access. This is the case, for instance, of hash tables, that may continue to incrementally rehash after a rehashing operation. A similar problem also happens with the PFCOUNT operation and other operations that may write as a side effect of reading. In the case of PFCOUNT probably the right approach would be to flag the command in a special way in the command table, so that the operation is blocked as it if was a write operation.
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
- 21 Apr, 2020 1 commit
-
-
antirez authored
-
- 09 Apr, 2020 2 commits
-
-
antirez authored
-
antirez authored
Reloading of the RDB generated by DEBUG POPULATE 5000000 SAVE is now 25% faster. This commit also prepares the ability to have more flexibility when loading stuff from the RDB, since we no longer use dbAdd() but can control exactly how things are added in the database.
-
- 06 Apr, 2020 1 commit
-
-
antirez authored
-
- 01 Apr, 2020 1 commit
-
-
antirez authored
-
- 31 Mar, 2020 1 commit
-
-
Guy Benoish authored
Other changes: Support stream in serverLogObjectDebugInfo
-
- 02 Mar, 2020 1 commit
-
-
antirez authored
The idea is that very few commands have a lot of keys, and when this happens the allocation time becomes neglegible.
-
- 14 Feb, 2020 1 commit
-
-
antirez authored
This fixes WATCH and client side caching with keys expiring because of a synchronous access and not because of background expiring.
-
- 06 Feb, 2020 1 commit
-
-
Guy Benoish authored
1. Call emptyDb even in case of diskless-load: We want modules to get the same FLUSHDB event as disk-based replication. 2. Do not fire any module events when flushing the backups array. 3. Delete redundant call to signalFlushedDb (Called from emptyDb).
-
- 05 Feb, 2020 2 commits
- 07 Jan, 2020 1 commit
-
-
Leo Murillo authored
-
- 23 Dec, 2019 1 commit
-
-
Oran Agra authored
-
- 18 Dec, 2019 3 commits
-
-
antirez authored
-
zhaozhao.zz authored
Delete keys in async way when executing DEL command, if lazyfree-lazy-user-del is yes.
-
zhaozhao.zz authored
-
- 19 Nov, 2019 2 commits
-
-
antirez authored
-
Daniel Dai authored
-
- 14 Nov, 2019 1 commit
-
-
antirez authored
-
- 06 Nov, 2019 1 commit
-
-
antirez authored
One problem with the solution proposed so far in #6537 is that key lookups outside a command execution via call(), still used a cached time. The cached time needed to be refreshed in multiple places, especially because of modules callbacks from timers, cluster bus, and thread safe contexts, that may use RM_Open(). In order to avoid this problem, this commit introduces the ability to detect if we are inside call(): this way we can use the reference fixed time only when we are in the context of a command execution or Lua script, but for the asynchronous lookups, we can still use mstime() to get a fresh time reference.
-
- 05 Nov, 2019 2 commits
-
-
antirez authored
After the thread in #6537 and thanks to the suggestions received, this commit updates the original patch in order to: 1. Solve the problem of updating the time in multiple places by updating it in call(). 2. Avoid introducing a new field but use our cached time. This required some minor refactoring to the function updating the time, and the introduction of a new cached time in microseconds in order to use less gettimeofday() calls.
-
zhaozhao.zz authored
Calling lookupKey*() many times to search a key in one command may get different result. That's because lookupKey*() calls expireIfNeeded(), and delete the key when reach the expire time. So we can get an robj before the expire time, but a NULL after the expire time. The worst is that may lead to Redis crash, for example `RPOPLPUSH foo foo` the first time we get a list form `foo` and hold the pointer, but when we get `foo` again it's expired and deleted. Now we hold a freed memory, when execute rpoplpushHandlePush() redis crash. To fix it, we can refactor the judgment about whether a key is expired, using the same basetime `server.cmd_start_mstime` instead of calling mstime() everytime.
-
- 04 Nov, 2019 1 commit
-
-
Oran Agra authored
-
- 29 Oct, 2019 1 commit
-
-
Oran Agra authored
Some commands would want to open a key without touching it's LRU/LFU similarly to the OBJECT or DEBUG command do. Other commands may want to implement logic similar to what RESTORE does (and in the future MIGRATE) and get/set the LRU or LFU.
-
- 23 Oct, 2019 1 commit
-
-
antirez authored
-
- 27 Sep, 2019 1 commit
-
-
antirez authored
-
- 30 Jul, 2019 1 commit
-
-
antirez authored
This was broken since a refactoring performed recently by myself.
-
- 22 Jul, 2019 2 commits
-
-
antirez authored
Now that the call also invalidates client side caching slots, it is important that after an internal flush operation we both send the notifications to the clients and, at the same time, are able to reclaim the memory of the tracking table. This may even fix a few edge cases related to MULTI/EXEC + WATCH during resync, not sure, but in general looks more correct.
-
antirez authored
Otherwise what happens is that the tracking table will never get garbage collected if there are no longer clients with tracking enabled. Now the invalidation function immediately checks if there is any table allocated, otherwise it returns ASAP, so the overhead when the feature is not used should be near zero.
-
- 17 Jul, 2019 2 commits
-
-
Oran Agra authored
* create module API for forking child processes. * refactor duplicate code around creating and tracking forks by AOF and RDB. * child processes listen to SIGUSR1 and dies exitFromChild in order to eliminate a valgrind warning of unhandled signal. * note that BGSAVE error reply has changed. valgrind error is: Process terminating with default action of signal 10 (SIGUSR1)
-
zhaozhao.zz authored
-