antirez
3170f63330
Modules hooks: initial design of data structures.
2019-10-23 18:39:53 +02:00
antirez
ed2ba31e4c
Modules: fix moduleCreateArgvFromUserFormat() casting bug.
...
In 32 bit systems casting to "long" will cut the result to 32 bit.
2019-10-23 18:39:14 +02:00
antirez
673c9d7029
module: fix propagation API bug.
2019-10-17 18:28:34 +02:00
antirez
97f6e314c1
Modules: allow to check for AOF loading client.
2019-10-17 18:10:50 +02:00
antirez
8651e6a10d
Modules: add new flags to context, replica state + more.
2019-10-17 17:49:33 +02:00
Yossi Gottlieb
0db3b0a0ff
Merge remote-tracking branch 'upstream/unstable' into tls
2019-10-16 17:08:07 +03:00
Salvatore Sanfilippo
b8e02f2b40
Merge pull request #5926 from JimB123/unstable
...
Addition of RedisModule_OnUnload hook
2019-10-16 11:13:12 +02:00
Yossi Gottlieb
b087dd1db6
TLS: Connections refactoring and TLS support.
...
* Introduce a connection abstraction layer for all socket operations and
integrate it across the code base.
* Provide an optional TLS connections implementation based on OpenSSL.
* Pull a newer version of hiredis with TLS support.
* Tests, redis-cli updates for TLS support.
2019-10-07 21:06:13 +03:00
antirez
3eaff2941e
Modules: RM_Call(): give pointer to documentation.
2019-10-04 11:46:53 +02:00
antirez
2a81e49dde
Modules: RM_Call/Replicate() ability to exclude AOF/replicas.
2019-10-04 11:44:53 +02:00
antirez
1bca62c4b7
Modules: RM_Replicate() in thread safe contexts.
2019-10-03 11:03:46 +02:00
antirez
e938bbc543
Modules: implement RM_Replicate() from async callbacks.
2019-10-03 10:56:37 +02:00
antirez
c549513acd
Modules: handle propagation when ctx is freed. Flag modules commands ctx.
2019-10-02 18:33:40 +02:00
Oran Agra
1b4f888109
Use sdscatfmt instead of sdscatprintf in module info
...
sdscatfmt is faster
2019-09-30 21:13:13 +03:00
Oran Agra
d5c14c70b7
Merge remote-tracking branch 'antirez/unstable' into modules_info
2019-09-30 20:47:35 +03:00
antirez
23f5cb4233
Change a bit the style of #6385 .
2019-09-30 10:58:15 +02:00
Salvatore Sanfilippo
ad45d7e407
Merge pull request #6385 from filipecosta90/perf-reply-ss-error
...
Improve performance of RM_ReplyWithSimpleString and RM_ReplyWi…
2019-09-30 10:57:05 +02:00
antirez
916c4e5d86
moduleRDBLoadError(): io->ctx may be NULL.
...
The correct way to access the module about a given IO context is to
deference io->type->module, since io->ctx is only populated if the user
requests an explicit context from an IO object.
2019-09-27 18:42:38 +02:00
antirez
8b5848a4f5
Fix memory leak in moduleLoadFromQueue().
2019-09-27 18:33:21 +02:00
antirez
b394817754
Fix memory leak in RM_UnregisterCommandFilter().
2019-09-27 18:33:05 +02:00
antirez
0a07f8ffee
TerminateModuleForkChild(): fix function prototype.
2019-09-27 12:23:07 +02:00
antirez
721d3c9e0c
TerminateModuleForkChild(): move safety checks there.
...
We don't want that the API could be used directly in an unsafe way,
without checking if there is an active child. Now the safety checks are
moved directly in the function performing the operations.
2019-09-27 12:17:47 +02:00
antirez
de1f82aa33
Function renamed hasForkChild() -> hasActiveChildProcess().
2019-09-27 12:03:09 +02:00
antirez
82845f8d04
TerminateModuleForkChild(): use wait4 for safety.
...
In theory currently there is only one active child, but the API may
change or for bugs in the implementation we may have several (it was
like that for years because of a bug). Better to wait for a specific
pid and avoid consuing other pending children information.
2019-09-27 11:59:58 +02:00
antirez
ae3ef964c1
Modules fork: improve SIGUSR1 handling, fix include.
...
We can't expect SIGUSR1 to have any specific value range, so let's
define an exit code that we can handle in a special way.
This also fixes an #include <wait.h> that is not standard.
2019-09-27 11:39:45 +02:00
Salvatore Sanfilippo
6129758558
Merge branch 'unstable' into modules_fork
2019-09-27 11:24:06 +02:00
antirez
b7b23bdfb8
INFO: more info about loaded modules.
...
Related to #6024 .
2019-09-26 12:18:55 +02:00
Salvatore Sanfilippo
c1ea6175c5
Merge pull request #6024 from itamarhaber/info_modules
...
Adds a "Modules" section to `INFO`
2019-09-26 11:58:52 +02:00
Salvatore Sanfilippo
959fb5cf68
Merge pull request #6235 from oranagra/module_rdb_load_errors
...
Allow modules to handle RDB loading errors.
2019-09-26 11:52:42 +02:00
Salvatore Sanfilippo
b0a90d8fa8
Merge pull request #4980 from yossigo/rm-assert
...
Add RedisModule_Assert() API call.
2019-09-26 11:39:29 +02:00
filipecosta90
af15b285fa
[fix] fixed the un-refactor bug.
2019-09-25 17:28:42 +01:00
filipecosta90
733280d9cb
[fix] un-refactor the code. [perf] replyWithStatus now makes usage of addReplyProto
2019-09-23 23:45:31 +01:00
filipecosta90
4a30a26f8f
[add] improved performance of RM_ReplyWithSimpleString and RM_ReplyWithError by making usage addReplyProto instead of addReplySds
2019-09-15 21:16:30 +01:00
Doug Nelson
cc8f06ece9
Typo fixes in API documentation
2019-09-05 16:25:06 +01:00
Oran Agra
78bbb9b58d
Modlue fork is killed when the parent exists
2019-08-25 10:11:48 +03:00
Oran Agra
61853ad8de
Module INFO, support default section for simple modules
2019-08-18 10:01:57 +03:00
Oran Agra
1d6e5dc4dc
Module INFO, add support for dict fields, rename API to have common prefix
2019-08-18 09:41:45 +03:00
Oran Agra
0a97149dec
RM_ReplyWithCString was missing registration
2019-08-07 13:06:11 +03:00
Oran Agra
e5187ad2ae
Merge remote-tracking branch 'oss/unstable' into module_rdb_load_errors
2019-07-30 15:14:08 +03:00
Oran Agra
4339706e07
Avoid diskelss-load if modules did not declare they handle read errors
2019-07-30 15:11:57 +03:00
Salvatore Sanfilippo
f42846e8c7
Merge pull request #6264 from oranagra/modules_api_aux_rdb
...
Implement module api for aux data in rdb
2019-07-30 11:50:44 +02:00
Oran Agra
e91d9a6fff
Extend modules API to allow modules report to redis INFO
...
this implements #6012
2019-07-24 12:58:15 +03:00
Oran Agra
3b6aeea44c
Implement module api for aux data in rdb
...
Other changes:
* fix memory leak in error handling of rdb loading of type OBJ_MODULE
2019-07-22 21:15:33 +03:00
Oran Agra
d7d028a7a7
Allow modules to handle RDB loading errors.
...
This is especially needed in diskless loading, were a short read could have
caused redis to exit. now the module can handle the error and return to the
caller gracefully.
this fixes #5326
2019-07-21 18:19:32 +03:00
Oran Agra
56258c6b7d
Module API for Forking
...
* 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)
2019-07-17 16:40:24 +03:00
Oran Agra
6e07fac405
RM_Log - add support for logging without a context or context without module
...
for instance detached thread safe contexts, or various callbacks that don't
provide a context.
2019-07-17 15:08:18 +03:00
Salvatore Sanfilippo
677e95e2f5
Merge pull request #6161 from swilly22/redismodule-loading-ctx-flag
...
Extend REDISMODULE_CTX_FLAGS to indicate if redis is loading
2019-07-07 17:01:29 +02:00
Salvatore Sanfilippo
a714004738
Merge pull request #6022 from itamarhaber/RedisModule_ReplyWithCString
...
Adds RedisModule_ReplyWithCString
2019-07-05 20:25:18 +02:00
swilly22
f54d95e803
Extend REDISMODULE_CTX_FLAGS to indicate if redis is currently loading from either RDB or AOF
2019-06-12 15:37:19 +03:00
Yossi Gottlieb
9f3679880a
Preserve client->id for blocked clients.
2019-05-05 20:32:53 +03:00
Itamar Haber
52686f4866
Adds a "Modules" section to INFO
...
Fixes #6012 .
As long as "INFO is broken", this should be adequate IMO. Once we rework
`INFO`, perhaps into RESP3, this implementation should be revisited.
2019-04-16 22:16:12 +03:00
Itamar Haber
c184b32d4c
Uses addReplyBulkCString
...
Signed-off-by: Itamar Haber <itamar@redislabs.com>
2019-04-16 17:38:33 +03:00
Itamar Haber
26d9d4ec2c
Adds RedisModule_ReplyWithCString
...
Signed-off-by: Itamar Haber <itamar@redislabs.com>
2019-04-16 17:15:23 +03:00
Salvatore Sanfilippo
d044e33c20
Merge pull request #5961 from yossigo/modules-tests
...
Modules tests
2019-04-11 07:56:23 -07:00
antirez
9e67691ffb
Aesthetic change to #5962 to conform to Redis style.
2019-04-10 18:53:35 +02:00
Oran Agra
acba2fc9b4
slave corrupts replication stream when module blocked client uses large reply (or POSTPONED_ARRAY)
...
when redis appends the blocked client reply list to the real client, it didn't
bother to check if it is in fact the master client. so a slave executing that
module command will send replies to the master, causing the master to send the
slave error responses, which will mess up the replication offset
(slave will advance it's replication offset, and the master does not)
2019-03-24 14:17:37 +02:00
Yossi Gottlieb
822a992f91
fix: missing initialization.
2019-03-24 12:00:33 +02:00
Salvatore Sanfilippo
5e8caca036
Merge pull request #5944 from yossigo/command-filtering
...
Command Filtering API
2019-03-22 17:43:49 +01:00
Yossi Gottlieb
6c0a5fde3d
CommandFilter API: REDISMODULE_CMDFILTER_NOSELF.
...
Add a flag to automatically protect filters from being called
recursively by their own module.
2019-03-21 19:53:12 +02:00
Yossi Gottlieb
4ea3ed896b
CommandFilter API: fix UnregisterCommandFilter.
2019-03-21 19:45:41 +02:00
Yossi Gottlieb
e2626f69ec
CommandFilter API: Add unregister option.
...
A filter handle is returned and can be used to unregister a filter. In
the future it can also be used to further configure or manipulate the
filter.
Filters are now automatically unregistered when a module unloads.
2019-03-21 14:44:49 +02:00
Yossi Gottlieb
dd8b4be46b
CommandFilter API: Extend documentation.
2019-03-19 19:48:47 +02:00
Yossi Gottlieb
325fc1cb2e
CommandFilter API: Support Lua and RM_call() flows.
2019-03-18 23:06:38 +02:00
Yossi Gottlieb
2a5aeef79f
CommandFilter API: More cleanup.
2019-03-18 23:05:52 +02:00
Yossi Gottlieb
6711132083
Add command filtering argument handling API.
2019-03-18 18:36:46 +02:00
Yossi Gottlieb
c3e187190b
Initial command filter experiment.
2019-03-18 13:50:34 +02:00
Yossi Gottlieb
a88264d934
Add RedisModule_GetKeyNameFromIO().
2019-03-15 10:23:27 +02:00
Yossi Gottlieb
68fd59056b
Add RedisModule_Assert() API call.
2019-03-14 15:00:31 +02:00
antirez
d292a51618
Improve comments after merging #5834 .
2019-03-14 12:47:36 +01:00
Salvatore Sanfilippo
0cce98f2f9
Merge pull request #5834 from guybe7/trim_module_sds
...
Trim SDS free space of retained module strings
2019-03-14 12:41:31 +01:00
Salvatore Sanfilippo
01ace0b240
Merge pull request #5694 from guybe7/rm_log_args
...
Check server.verbosity in RM_LogRaw
2019-03-14 11:32:03 +01:00
antirez
6fd4af1f12
Merge branch 'sharedapi' into unstable
2019-03-14 11:24:48 +01:00
Jim Brunner
283d6cfd58
Addition of OnUnload function
2019-03-13 16:31:24 +00:00
swilly22
89bf4db4fa
document additional flag of RM_GetContextFlags
2019-03-13 08:22:40 +02:00
swilly22
468860ae18
Extend REDISMODULE_CTX_FLAGS to indicate if command was sent by master
2019-03-11 10:02:19 +02:00
Guy Benoish
bdd9a8002a
Trim SDS free space of retained module strings
...
In some cases processMultibulkBuffer uses sdsMakeRoomFor to
expand the querybuf, but later in some cases it uses that query
buffer as is for an argv element (see "Optimization"), which means
that the sds in argv may have a lot of wasted space, and then in case
modules keep that argv RedisString inside their data structure, this
space waste will remain for long (until restarted from rdb).
2019-02-12 14:21:21 +01:00
antirez
1769c22248
ACL: set modules help clients to the root user.
...
It does not make much sense to limit what modules can do: the admin
should instead limit what module commnads an user may call. So
RedisModule_Call() and other module operations should be able to execute
everything they want: the limitation should be posed by the API exported
by the module itself.
2019-02-01 11:37:28 +01:00
antirez
b6372f16c4
ACL: assign ACL command ID to modules commands.
2019-02-01 08:17:24 +01:00
antirez
709a6612eb
RESP3: addReplyString() -> addReplyProto().
...
The function naming was totally nuts. Let's fix it as we break PRs
anyway with RESP3 refactoring and changes.
2019-01-09 17:00:30 +01:00
antirez
4f0860cbfd
RESP3: initial implementation of the HELLO command.
2019-01-09 17:00:29 +01:00
antirez
baf5b3f93a
RESP3: module.c updated.
2019-01-09 17:00:29 +01:00
antirez
8a87de130f
Modules shared API: export new core APIs.
2018-12-20 17:57:49 +01:00
antirez
d3eb0028e9
Modules shared API: also unregister the module as user.
2018-12-20 17:57:46 +01:00
antirez
9403b3d7a3
Modules shared API: prevent unloading of used modules.
2018-12-20 17:57:43 +01:00
antirez
6bb8cdaebe
Modules shared API: unregister APIs function.
2018-12-20 17:57:40 +01:00
antirez
27f6e9bb9b
Modules shared API: initial core functions.
...
Based on ideas and code in PR #5560 by @MeirShpilraien.
2018-12-20 17:57:35 +01:00
antirez
850b64c116
Revert shared APIs to modify the design.
2018-12-20 17:56:38 +01:00
MeirShpilraien
ab37289fa6
added module ability to register api to be used by other modules
2018-12-20 17:55:18 +01:00
Guy Benoish
ed88f77d6d
Check server.verbosity in RM_LogRaw
2018-12-13 13:57:38 +01:00
Hamid Alaei
87264235cc
fix timer context selected database
2018-10-04 17:02:10 +03:30
Hamid Alaei
86fb7b20bf
fix dict get on not found
2018-10-01 13:57:25 +03:30
antirez
0aecb135c9
Modules: Modules: dictionary API WIP #13 : Compare API exported.
2018-09-27 11:46:22 +02:00
antirez
80bde9844b
Modules: Modules: dictionary API WIP #12 : DictCompare API.
2018-09-27 11:44:25 +02:00
antirez
7af83a0c11
Modules: Modules: dictionary API WIP #11 : DictCompareC API.
2018-09-27 11:44:16 +02:00
antirez
1e585d01de
Modules: dictionary API WIP #10 : export API to modules.
2018-09-26 13:39:01 +02:00
antirez
3ff82790e1
Modules: dictionary API WIP #9 : iterator returning string object.
2018-09-25 16:49:46 +02:00
antirez
fb1d5717de
Modules: dictionary API WIP #8 : Iterator next/prev.
2018-09-25 16:25:46 +02:00
antirez
58ac1f8bbe
Modules: dictionary API WIP #7 : don't store the context.
...
Storing the context is useless, because we can't really reuse that
later. For instance in the API RM_DictNext() that returns a
RedisModuleString for the next key iterated, the user should pass the
new context, because we may run the keys of the dictionary in a
different context of the one where the dictionary was created. Also the
dictionary may be created without a context, but we may still demand
automatic memory management for the returned strings while iterating.
2018-09-25 12:58:16 +02:00
antirez
b6c794acf6
Modules: dictionary API WIP #6 : implement automatic memory management.
2018-09-25 12:45:08 +02:00
antirez
448d696549
Modules: dictionary API work in progress #5 : rename API for consistency.
...
By using the "C" suffix for functions getting pointer/len, we can do the
same in the future for other modules APIs that need a variant with
pointer/len and that are now accepting a RedisModuleString.
2018-09-25 12:31:46 +02:00