Modules shared API: prevent unloading of used modules.
This commit is contained in:
parent
6bb8cdaebe
commit
9403b3d7a3
14
src/module.c
14
src/module.c
@ -4896,11 +4896,12 @@ int moduleUnload(sds name) {
|
|||||||
if (module == NULL) {
|
if (module == NULL) {
|
||||||
errno = ENOENT;
|
errno = ENOENT;
|
||||||
return REDISMODULE_ERR;
|
return REDISMODULE_ERR;
|
||||||
}
|
} else if (listLength(module->types)) {
|
||||||
|
|
||||||
if (listLength(module->types)) {
|
|
||||||
errno = EBUSY;
|
errno = EBUSY;
|
||||||
return REDISMODULE_ERR;
|
return REDISMODULE_ERR;
|
||||||
|
} else if (listLength(module->usedby)) {
|
||||||
|
errno = EPERM;
|
||||||
|
return REDISMODULE_ERR;
|
||||||
}
|
}
|
||||||
|
|
||||||
moduleUnregisterCommands(module);
|
moduleUnregisterCommands(module);
|
||||||
@ -4966,7 +4967,12 @@ NULL
|
|||||||
errmsg = "no such module with that name";
|
errmsg = "no such module with that name";
|
||||||
break;
|
break;
|
||||||
case EBUSY:
|
case EBUSY:
|
||||||
errmsg = "the module exports one or more module-side data types, can't unload";
|
errmsg = "the module exports one or more module-side data "
|
||||||
|
"types, can't unload";
|
||||||
|
break;
|
||||||
|
case EPERM:
|
||||||
|
errmsg = "the module exports APIs used by other modules. "
|
||||||
|
"Please unload them first and try again";
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
errmsg = "operation not possible.";
|
errmsg = "operation not possible.";
|
||||||
|
Loading…
x
Reference in New Issue
Block a user