Thread Activity Monitoring

Beginning with Rule Manager version 3.2.6 a new background task "Monitor" gets activated at the time of Rule Manager starting if the value of EmailServiceConfig.ThreadMonitorIntervalSeconds setting is greater than zero. Its purpose is to probe periodically for any Consumer or Producer thread for not reporting any progress in the amount of time specified by the value of ApplicationEventProcessorState.ThreadCriticalDelayMinutes setting. If such a case, a message like this one would be added to the log:

[Monitor] DEBUG FChoice.RuleManager.ApplicationEventProcessor - Is Consumer2 alive? True, status: WaitSleepJoin, last step: 2/5/2026 10:01:06 AM (00:04:29.9751774 ago) - About to execute an application event: 268444219 - BR: Notify owner of status change - Thread 'Consumer2' did not report any progress in the last 00:04:29.9751774!

When a thread is "stuck" and the messages like the one above get logged with ever increasing (HH:MM:SS.mmmmmmm ago) values it means the action described ("About to execute an application event: 268444219 - BR: Notify owner of status change" in this example) cannot finish despite having a timeout value specified. The only remedy would be to restart Rule Manager.

Another purpose of the "Monitor" task is to report on the number of available MsGraph email operation "slots", for example:

[Monitor] DEBUG FChoice.RuleManager.ApplicationEventProcessor - Number of available MsGraph action slots: 4.

This may come handy when all MsGraph email operations currently scheduled for execution get "stuck" due to MsGraph email account being unresponsive. When multiple "Number of available MsGraph action slots: 0." get logged consecutively and are accompanied by the "... did not report any progress ..." ones it means a major problem which may require Rule Manager restart and an investigation into MsGraph email account setup.