### 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.