security component is used for increasing the stability and security of running applications (PROMOTIC applications in particular). PROMOTIC applications are very often created in such way so that they could run 24 hours a day, 365 days a year. These applications are often located in remote workplaces where an attendance comes only seldom. Whilst it is requested the system would recovered at any failure. In such case it is requested to restart the application or the whole computer.
There is a special kind of software used for such purposes, called WatchDog
. Usually this is a small program that is used for watching the functionality of other programs (in our case the PROMOTIC applications). If the aplication is stoped unexpectedly (crashes or someone stopps it, etc.), the WatchDog
program restarts it (terminates it and relaunches) or restarts the whole computer. The WatchDog
program is also responsible for relaunching the application after the computer reboots. In the PROMOTIC system, the PmRtManager.exe program works as WatchDog
(see PmRtManager - manager of running apps
When launched, the PmRtManager
reads its configuration from the PmRtManager.ini
file. Then launches the required (watched) programs, assigns the desired initial values of counters and then decrements these counters periodically. If some counter reaches 0, the PmRtManager
supposes that the application crashed and forces it to restart (or restarts the computer). In order to prevent the PmRtManager
from periodically restarting the PROMOTIC application, this application must call the Pm.WDogRefresh
periodically. By calling this method, the counters are reset to desired initial values. If the application calls such method regulary then the counter never reaches zero (and does not restart the application).
The manager of runnig applications PmRtManager
can run as OS Windows
service or as a normal program. In both cases the functionality is similar. For the program parametres see PmRtManager as service
Example of PmRtManager.ini file (for 2 programs):
' Period in ms of counter decrement.
' Password for enabling the PmRtManager.exe termination.
' path to the folder with LOG file. If not defined, the LOG file will be created in the same location as the PmRtManager.exe program.
' Definition of port where the PmRtManager functionality can be monitored via HTTP. If not defined the port 81 is used.
' Name of the 1st watched program.
' Parameter for the 1st watched program.
' If the PmRtManager closes the 1st program, it even closes a program with the number assigned in this item.
' Pause between the PmRtManager.exe and the 1st program starting. The value is in "Period" units.
' Value that is written into the counter on starting the program. If this value is 0, then the program is not watched. The counter is decremented (decreased by 1) at the period "Period".
' Period between terminating and restarting the program (or restarting the OS Windows). The value is in "Period" units.
' If the 1st program does not set the counter at least once after starting and the counter reaches 0, then: if RestartWindows=1, the Windows restarts immediately if RestartWindows=0, then it tries to close the 1st program and then to restart it.
' Number of attempts the PmRtManager tries to close and restart the program before restarting the whole computer. If RestartProgram=-1, then the number of attempts is not limited.
- If we don't want to watch a program but only to start it, enter the item IniCounter=0.
- To prevent computer restarts, enter the items RestartWindows=0 and RestartProgram=-1.
- We want to watch the Program1. We don't want to watch the Program2 but we want to stop and restart it dependently on the Program1.
Solution: State in the PmRtManager.ini file in the section [Program1] the key RestartOtherProgram=2 and in the section [Program2] the key IniCounter=0.
- If the item LogEnable=1 is enabled, then PmRtManager events are written into the PmRtManager.log file that is automatically created in the folder where the PmRtManager.exe file is located.
How to WatchDog your program
Each program has its own independent counter and may exist in different phase (different state of watching). The current phase of a program can be seen in the main window of the PmRtManager.exe program or via HTTP monitoring.
Description of individual phases follows:
Ini - Initialization of variables. The StartDelay phase follows.
StartDelay - If non-zero StartDelay is set then the PmRtManager waits for this period of time. After the defined time passes (or immediatelly, if StartDelay is not set or is set to 0), the PmRtManager launches the specified program and sets the corresponding counter to the value defined in IniCounter. If IniCounter is not equal to zero the RtManager goes to Control phase. If IniCounter is not set or equals to zero (i.e. the program is not to be watched) then it goes to the NoControl phase
Control - PmRtManager repeatedly decreases the value of the counter with the period defined in Period parameter (in PmRtManager.ini). Once the counter reaches 0 (i.e. the watched program was unable to reset the counter), it executes an action based on defined parameters RestartWindows and RestartProgram (see the PmRtManager.ini example below). Based on this, it goes to the RequestStop or RestartWin phase.
RequestStop - PmRtManager stopps the program. Then goes to the StopDelay phase.
StopDelay - PmRtManager waits after the program is stopped (before it is re-launched) for the StopDelay period of time. After that time it goes to the Ini phase.
NoProgram - The program was not defined in PmRtManager.ini. PmRtManager stopped attendance for this program.
NoControl - The program has been launched but is not watched. The IniCounter was set to 0. PmRtManager can stop and re-launch this program based on another program defined in RestartOtherProgram item.
RestartWin - the OS Windows system will be restarted.
The manager of running applications PmRtManager
) completely replaces the original PmWDog.exe
program that is no longer included into PROMOTIC installation. The essential configuration items inside the configuration file are identical for both old and new WatchDog
, making the transition to new WatchDog
very easy. Basically, it is sufficient just to rename the old PmWDog.ini
configuration file to PmRtManager.ini
and copy it to the same folder as the PmRtManager.exe