- 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.
-
- 31 Oct, 2019 10 commits
-
-
antirez authored
See #6525, this likely creates a NULL deference if the client was terminated by Redis between the creation of the blocked client and the creation of the thread safe context.
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
-
antirez authored
Using the is_key_ready() callback plus the reply callback later, creates different issues AFAIK: 1. More complex API. 2. We need to call the reply callback() ASAP if the is_key_ready() interface returned success, however the internals do not work in that way, so when the reply callback is called the setup could be different. To fix that, there is to break the current design that handles the unblocked clients asyncrhonously, and run the list ASAP.
-
antirez authored
Now we handle propagation when we free the context.
-
antirez authored
-
- 30 Oct, 2019 3 commits
- 29 Oct, 2019 4 commits
-
-
Salvatore Sanfilippo authored
Module API for explicit SignalModifiedKey instead of implicit one.
-
Salvatore Sanfilippo authored
Add Github action for CI
-
Salvatore Sanfilippo authored
Fix compilation error introduced by cee6dead
-
Salvatore Sanfilippo authored
Module api RM_CallArgv and test
-
- 28 Oct, 2019 17 commits
-
-
Guy Benoish authored
Need to add calls to REDISMODULE_API_FUNC...
-
Salvatore Sanfilippo authored
Modules: Allow notifying custom keyspace events
-
Oran Agra authored
Adding a test for coverage for RM_Call in a new "misc" unit to be used for various short simple tests also solves compilation warnings in redismodule.h and fork.c
-
Guy Benoish authored
Also, add an API for getting server.notify_keyspace_events Other (unrelated) changes: Add RM_GetKeynameFromModuleKey
-
antirez authored
-
Oran Agra authored
This commit also fixes an uninitialized module struct member (that luckily never got released)
-
antirez authored
-
Salvatore Sanfilippo authored
Make module tests pass with valgrind, and fix a leak in diskless load
-
Salvatore Sanfilippo authored
Modules: improve tests Makefile.
-
Salvatore Sanfilippo authored
Module API for LatencyAddSample
-
Salvatore Sanfilippo authored
Fix some minor typos in comments
-
Salvatore Sanfilippo authored
fix comment typo in redis-cli.c
-
Salvatore Sanfilippo authored
Typo fix: kill -> still
-
Salvatore Sanfilippo authored
Introduce ReplyWithVerbatimString, ReplyWithEmptyArray, ReplyWithNull…
-
Salvatore Sanfilippo authored
Modules: make unloading module more safe
-
swilly22 authored
Introduce ReplyWithVerbatimString, ReplyWithEmptyArray, ReplyWithNullArray and ReplyWithEmptyString to redis module API
-
zhaozhao.zz authored
As we know if a module exports module-side data types, unload it is not allowed. This rule is the same with blocked clients in module, because we use background threads to implement module blocked clients, and it's not safe to unload a module if there are background threads running. So it's necessary to check if any blocked clients running in this module when unload it. Moreover, after that we can ensure that if no modules, then no module blocked clients even module unloaded. So, we can call moduleHandleBlockedClients only when we have installed modules.
-
- 25 Oct, 2019 3 commits
-
-
Carsten Strotmann authored
-
happynote3966 authored
-
Wander Hillen authored
-