### Description
The permissions module has two reload RPC commands, `permissions.addressReload` which
reloads the `address` table, and `permissions.trustedReload`, which reloads the `trusted`
table.
The module parameter `reload_delta` exists to prevent concurrent reloading of a single
table:
##### 3.25. reload_delta (int)
The number of seconds that have to be waited before executing a new RPC reload. By
default there is a rate limiting of maximum one reload in five seconds.
If set to 0, no rate limit is configured. Note carefully: use this configuration only in
tests environments because executing two RPC reloads of the same table at the same time
can cause to kamailio to crash.
If one of the reload rpc commands is issues (i.e. `permissions.addressReload`), then the
OTHER reload command (`permissions.trustedReload`) will be blocked, despite acting against
two separate tables.
### Troubleshooting
Reproduced the issue.
#### Reproduction
_(DB config for permissions module omitted for brevity)_
```
loadmodule "rtimer.so"
loadmodule "permissions.so"
loadmodule "jsonrpcs"
modparamx("rtimer", "timer",
"name=permissions_reload;mode=0;interval=300")
modparam("rtimer", "exec",
"timer=permissions_reload;route=RELOAD_PERMISSIONS")
route[RELOAD_PERMISSIONS] {
xnotice("Reloading trusted records\n");
jsonrpc_exec('{"jsonrpc": "2.0", "method":
"permissions.trustedReload", "id": 1}');
xalert("jsonrpc response code: $jsonrpl(code) - the body is:
$jsonrpl(body)\n");
xnotice("Reloading addresses\n");
jsonrpc_exec('{"jsonrpc": "2.0", "method":
"permissions.addressReload", "id": 1}');
xalert("jsonrpc response code: $jsonrpl(code) - the body is:
$jsonrpl(body)\n");
}
```
#### Debugging Data
The above config yields output like this:
```
2(8) NOTICE: <script>: Reloading trusted records
2(8) ALERT: <script>: jsonrpc response code: 200 - the body is: {
"jsonrpc": "2.0",
"result": "Reload OK",
"id": 1
}
2(8) NOTICE: <script>: Reloading addresses
2(8) ERROR: permissions [rpc.c:42]: rpc_check_reload(): ongoing reload
2(8) ALERT: <script>: jsonrpc response code: 500 - the body is: {
"jsonrpc": "2.0",
"error": {
"code": 500,
"message": "ongoing reload"
},
"id": 1
}
```
### Possible Solutions
Ideally each reload would be tracked separately. This could possibly involve separate
`reload_delta` parameters for each table (although it seems excessive to change the
interface).
It's also possible that this behavior is by design, in which case, clarification of
the documentation for the `reload_delta` parameter would be nice.
### Additional Information
Problem occurs in kamailio 5.6.2. Likely within all version since the `reload_delta`
parameter was added.
* **Operating System**:
Tested in Alpine, but OS seems irrelevant.
--
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/3318
You are receiving this because you are subscribed to this thread.
Message ID: <kamailio/kamailio/issues/3318(a)github.com>