I'm adding some logic to detect cases where the broker may become irresponsive.
I'm adding a component called CriticalAnalyzer, which will inspect
response times of certain operations and decide to take the broker
down when bad things are happening.
Along several critical operations on the broker, I'm adding this pattern:
enterCritical(pathID);
try {
synchronized (lock) {
}
} finally {
leaveCritical(pathID);
}
The CriticalAnalyzer will look at the times between enter and leave,
and with a configured timeout, it will take the broker down.
Now, when it's coming to the configuration, I'm not finding a good
nomenclature for this.. and I'm asking for help:
So, far I came up with these names:
- analyze-critical : default true
is the critical analyzer on?
- analyze-critical-timeout: default 120000 (milliseconds, 2 minutes)
The timeout used to
- analyze-critical-check-period default 1/2 of analyze-critical-timeout
- analyze-critical-halt-on-failure: default false
In case of an issue, the a Runtime.halt() would be issued if true,
otherwise a shutdown.
During deadlocks or IO issues, the most effective way would be
actually the halt. We could even change the start scripts to restart
the server in case of a returned value.
Any input?
I will send a Pull Request soon.
--
Clebert Suconic