Commit Graph

9022 Commits

Author SHA1 Message Date
e978bdf9ef Module API for controlling LRU and LFU, and OpenKey without TOUCH
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.
2019-10-29 15:03:05 +02:00
764b420f5f Merge pull request #6487 from oranagra/module_modified_key
Module API for explicit SignalModifiedKey instead of implicit one.
2019-10-29 10:40:22 +01:00
568dfd4b49 Merge pull request #6470 from gkorland/CI
Add Github action for CI
2019-10-29 10:25:34 +01:00
94973fd0eb Merge pull request #6508 from guybe7/fix_module_notify_comp_error
Fix compilation error introduced by cee6dead3
2019-10-29 10:07:45 +01:00
90169cdf16 Merge pull request #6495 from oranagra/rm_call_argv
Module api RM_CallArgv and test
2019-10-29 10:07:05 +01:00
43e2a398f9 Fix compilation error introduced by cee6dead3
Need to add calls to REDISMODULE_API_FUNC...
2019-10-28 17:58:07 +05:30
469a6e5f1a Merge pull request #6481 from guybe7/modules_notify
Modules: Allow notifying custom keyspace events
2019-10-28 12:16:04 +01:00
0399b5a27e Module api tests for RM_Call
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
2019-10-28 12:39:57 +02:00
cee6dead3c Modules: Allow notifying custom keyspace events
Also, add an API for getting server.notify_keyspace_events

Other (unrelated) changes:
Add RM_GetKeynameFromModuleKey
2019-10-28 15:53:35 +05:30
cfcb475435 LOLWUT 6: always pick a default color sequence. 2019-10-28 11:10:58 +01:00
a12f07792f Module API for explicit SignalModifiedKey instead of implicit one.
This commit also fixes an uninitialized module struct member (that luckily never got released)
2019-10-28 12:09:25 +02:00
8337e083b6 Merge branch 'unstable' of github.com:/antirez/redis into unstable 2019-10-28 11:09:09 +01:00
c328c807e7 Merge pull request #6496 from oranagra/module_tests_valgrind
Make module tests pass with valgrind, and fix a leak in diskless load
2019-10-28 10:05:52 +01:00
d2658f8387 Merge pull request #6493 from yossigo/modules-make-cleanup
Modules: improve tests Makefile.
2019-10-28 10:00:40 +01:00
5aab012676 Merge pull request #6498 from oranagra/rm_latency_add_sample
Module API for LatencyAddSample
2019-10-28 09:59:26 +01:00
e097c99681 Merge pull request #4761 from WJWH/minor-typos
Fix some minor typos in comments
2019-10-28 09:58:38 +01:00
6f2fc34228 Merge pull request #6502 from happynote3966/typo-fix
fix comment typo in redis-cli.c
2019-10-28 09:57:43 +01:00
c6c65d9ab3 Merge pull request #6503 from cstrotm/unstable
Typo fix: kill -> still
2019-10-28 09:57:19 +01:00
d070221707 Merge pull request #6505 from swilly22/replaywith-module-API-additions
Introduce ReplyWithVerbatimString, ReplyWithEmptyArray, ReplyWithNull…
2019-10-28 09:56:56 +01:00
24fdc87fe0 Merge pull request #4994 from soloestoy/module-blocked-client
Modules: make unloading module more safe
2019-10-28 09:55:11 +01:00
56a7c45521 Introduce ReplyWithVerbatimString, ReplyWithEmptyArray, ReplyWithNullArray and ReplyWithEmptyString to redis module API 2019-10-28 08:50:25 +02:00
c74398e130 Modules: make unloading module more safe
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.
2019-10-28 11:31:58 +08:00
cb2ca37f88 Typo fix: kill -> still 2019-10-25 19:38:45 +02:00
cd02c5944f fix comment typo in redis-cli.c 2019-10-25 22:31:55 +09:00
fb1f4f4e7e Merge branch 'unstable' into minor-typos 2019-10-25 10:18:26 +02:00
e3b1d6d3ad Module API for LatencyAddSample 2019-10-24 14:24:55 +03:00
183d264e9e Modules: improve tests Makefile.
Removes some boilerplate per module, add clean target.
2019-10-24 13:21:35 +03:00
5dd1130272 Remove trailing space from server.c. 2019-10-24 11:20:15 +02:00
6e98214f74 Modules hooks: test flush event. 2019-10-24 10:51:03 +02:00
39f2ab595c Modules hooks: initial Tcl test file. 2019-10-24 10:41:25 +02:00
be352633a0 Make module tests pass with valgrind, and fix a leak in diskless load 2019-10-24 09:45:25 +03:00
7cefbeaad5 Modules hooks: select DB zero by default. 2019-10-23 18:51:44 +02:00
d3266d516b Modules hooks: test module draft. 2019-10-23 18:42:02 +02:00
dddfde85ef Modules hooks: fix memory leak in example module. 2019-10-23 18:39:53 +02:00
61ac2aef2b Modules hooks: for nested calls, create new fake clients.
We can't use the same client at the same time when re-entering the hook.
2019-10-23 18:39:53 +02:00
8cccc6b468 Modules hooks: don't call the hook for fake clients. 2019-10-23 18:39:53 +02:00
83de18805c Modules hooks: do not re-enter in hooks.
Calling a module hook callback may result in callback operations in turn
triggering other events the module is subscribed too. We don't want to
trigger those, it's unsafe and quite confusing, and to do it correcly we
would need to maintain an event list: quite a more complex
implementation.
2019-10-23 18:39:53 +02:00
89af7e4c85 Modules hooks: select the right DB for FLUSHDB events. 2019-10-23 18:39:53 +02:00
bc1ef48e56 Modules hooks: FLUSHDB event example. 2019-10-23 18:39:53 +02:00
ed833c9f99 Modules hooks: implement the FLUSHDB event. 2019-10-23 18:39:53 +02:00
8ec2fc3969 Modules hooks: unify structures definitions. 2019-10-23 18:39:53 +02:00
db8c9a8520 Modules hooks: document what yet to implement WIP 2. 2019-10-23 18:39:53 +02:00
18d1607f5e Modules hooks: document what yet to implement WIP 1. 2019-10-23 18:39:53 +02:00
c379fdbae2 Modules hooks: do more in example client callback. 2019-10-23 18:39:53 +02:00
cf52e0ad44 Module hooks: fixes and an example module. 2019-10-23 18:39:53 +02:00
94c50314f1 Modules hooks: fix sub event in calls from client change. 2019-10-23 18:39:53 +02:00
019ac37e9c Modules hooks: fix define / linker issues. Implement one test event. 2019-10-23 18:39:53 +02:00
d54652682d Modules hooks: handle module unloading + API export. 2019-10-23 18:39:53 +02:00
1e78681df8 Modules hooks: fix a leak and a few more issues. 2019-10-23 18:39:53 +02:00
b9af7e24e4 Modules hooks: event firing logic. 2019-10-23 18:39:53 +02:00