Only the first is what people usually mean, and only the third is surprising.
Configuration reloads on its own anyway
The gateway polls for database changes.reload exists because the poll is up to thirty seconds
behind, which is too slow when you are watching.
Credit is not configuration
reload does not touch it, and this is the one that catches people.
The gateway reserves credit in blocks — moving money out of account_balance.balance into
reserved and holding the block in memory. That is what keeps the message path off the database.
So correcting a balance by hand does not take effect until the block already handed out is used
up. An account set to zero keeps sending.
credit release returns the unspent remainder of each block to balance and writes a RELEASE
row to the ledger, so the next message reserves against the corrected figure.
The same command after a crash
Akill -9 strands whatever was reserved. The money is parked, not lost — balance + reserved
still balances — and credit release is how it comes back.
A clean shutdown does this by itself.
What a reload does not do
- It does not restart workers. A worker that failed to bind retries on its own schedule; a listener that could not take its port retries on the next poll or reload without needing a restart.
- It does not clear runtime state set by
disable,suspendorhold. Those are deliberately outside configuration so they can act immediately — and they revert on restart rather than on reload. - It does not change what a bound session is allowed to do. A rate change applies to already-bound SMPP sessions within about 200 ms; it does not require them to re-bind.
Related
Worker control
The verbs that act immediately rather than on a poll.
Prepaid credit
Blocks, reservations, and why the balance lags.