/Programs ODB tree: Difference between revisions

From MidasWiki
Jump to navigation Jump to search
No edit summary
(The midas documentation has moved to https://midas.triumf.ca/docs/)
Tag: Replaced
 
(2 intermediate revisions by one other user not shown)
Line 1: Line 1:
<div style="column-count:4;-moz-column-count:4;-webkit-column-count:4">
The midas documentation has moved. See [https://midas.triumf.ca/docs/develop/reference/reference/odb_keys/#programs /Programs] on the ODB keys page and [https://midas.triumf.ca/docs/develop/features/core_system/programs/configuring/ Programs: configuring] for the new documentation about the /Programs ODB keys.
* [[Midas_documentation|Midas Documentation]]
* [[Feature_listing|Feature Listing]]
* [[Application_listing|Application Listing]]
* [[Online_Database|Online Database]]
</div>
 
= Links =
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* [[Programs Page]]
* [[mhttpd]]
* [[Alarm System]]
* [[/Alarms ODB tree]]
*
</div>
 
= Purpose  =
The ODB /Programs tree contains user and system information related to client programs.
 
= Creating the /Programs tree =
The <span style="color:purple; font-style:italic">/Programs</span>  ODB tree is created by the system. It contains
*    key <span style="color:purple; font-style:italic">Execute on start run</span>
*    key <span style="color:purple; font-style:italic">Execute on stop run</span>
*    a subdirectory for each client that runs on the experiment, '''created by the system the first time a client runs'''
 
 
Each client will have its own subtree in the <span style="color:purple; font-style:italic">/Programs</span> tree. The subtree will be named for the client, and contains system information as well as task-specific characteristics, such as the watchdog timeout, and a number of optional features, such as a commands to start the task, alarm condition etc.
 
= Example of /Programs tree =
The following is an example of the /Programs tree from an experiment obtained with the [[odbedit|odbedit ls command]] :
 
[local:bnmr:S]/>ls -lt /programs
Key name                        Type    #Val  Size  Last Opn Mode Value
---------------------------------------------------------------------------
Execute on start run            STRING  1    256  18h  0  RWD  /home/bnmr/online/bnmr/bin/at_start_run.csh
Execute on stop run            STRING  1    256  18h  0  RWD  /home/bnmr/online/bnmr/bin/at_end_run.csh
ODBEdit                        DIR
Logger                          DIR
Epics                          DIR
rf_config                      DIR
mheader                        DIR
Mdarc                          DIR
autorun                        DIR
feBNMR                          DIR
camplog                        DIR
Lcrplot                        DIR
mhttpd                          DIR
mdump                          DIR
Speaker                        DIR
mdarc_cleanup                  DIR
 
The following example shows the subdirectory for the mlogger client:
 
[local:bnmr:S]/>ls -lt /programs/logger
Key name                        Type    #Val  Size  Last Opn Mode Value
---------------------------------------------------------------------------
Required                        BOOL    1    4    4h  0  RWD  y
Watchdog timeout                INT    1    4    4h  0  RWD  10000
Check interval                  DWORD  1    4    4h  0  RWD  180000
Start command                  STRING  1    256  4h  0  RWD  mlogger -D
Auto start                      BOOL    1    4    4h  0  RWD  n
Auto stop                      BOOL    1    4    4h  0  RWD  n
Auto restart                    BOOL    1    4    4h  0  RWD  y
Alarm class                    STRING  1    32    4h  0  RWD  Caution
First failed                    DWORD  1    4    4h  0  RWD  1259294464
 
 
= Keys in the  <span  style="color: purple;">''/Programs''</span> ODB tree  =
 
==  <span  style="color: purple;">''Execute on start run''</span>  ==
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' STRING
* '''Default:'''  ""
</div>
 
This key in the [[#top|/Programs ODB tree]] may contain a command or script to be executed on a [[Run States and Transitions|START transition]].
 
 
<br>
---------
<br>
 
==  <span  style="color: purple;">''Execute on stop run''</span>  ==
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' STRING
* '''Default:'''  ""
</div>
 
This key in the [[#top|/Programs ODB tree]] may contain a command or script to be executed on a [[Run States and Transitions|STOP transition]].
 
<br>
---------
<br>
 
==  <span  style="color: purple;">''<client-name>'' subtree</span>  ==
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' DIR
</div>
 
This subdirectory in the  [[#top|/Programs ODB tree]] is repeated for each client that has been run on the experiment, whether [[Application_listing|MIDAS utilities]] or user-written frontends. The subtree will be named for the client.
 
 
<br>
---------
<br>
 
===  <span  style="color: purple;">''Required'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' BOOL
* '''Default:'''  "n"
</div>
 
If this key in the  [[#<client-name> subtree|<client-name> subtree]] is set to "y", this client is designated as '''required'''.  
 
It should be combined with setting [[#Auto start|Auto start]] and/or [[#Auto restart|Auto restart]] to "y", and supplying a [[#Start command|Start command]]. If set to "n", the run will start successfully without this client running. Note that this field also changes the display in the [[mhttpd]] Programs page.
 
A run will be prevented from starting if this client is not running providing the [[/Experiment ODB tree#Prevent start on required program|Prevent start on required program]] key is also set.
 
This key should be set to "y" for essential programs only; typically the logger and all front-end programs should be required programs.
 
<br>
---------
<br>
 
===  <span  style="color: purple;">''Watchdog timeout'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' INT
* '''Default:'''  10000
</div>
 
This key in the  [[#<client-name> subtree|<client-name> subtree]] contains the
the watchdog timeout set in milliseconds. A watchdog runs automatically checking (every [[#Check interval|Check interval]] ms) whether the client responds. If the client has not been responded for <span style="color: purple; font-style:italic;">Watchdog timeout</span> ms, the client will be assumed to have timed out, and it will be killed. The watchdog time for each client should be adjusted as required. For example, clients that contact external hardware that is slow to respond should have a longer time set, or they may time out before the operation is complete.
 
<br>
---------
<br>
 
===  <span  style="color: purple;">''Check interval'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' DWORD
* '''Default:'''  180000
</div>
 
This key in the  [[#<client-name> subtree|<client-name> subtree]] contains the time interval in milliseconds that the Watchdog checks the client to see if it is responding. See
[[#Watchdog timeout|Watchdog timeout]].
 
 
<br>
---------
<br>
 
===  <span  style="color: purple;">''Start command'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' STRING
* '''Default:'''  ""
</div>
 
This key in the  [[#<client-name> subtree|<client-name> subtree]] optionally contains the command used to restart the client. It is required if either [[#Auto start|Auto start]] or
[[#Auto restart|Auto restart]] is set to "y", or the user wishes to start or restart the client using the mhttpd restart button on the Programs page. If no start command is supplied, the user can restart the client by hand.
 
<br>
---------
<br>
 
 
===  <span  style="color: purple;">''Auto start'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' BOOL
* '''Default:'''  "n"
</div>
 
If this key in the  [[#<client-name> subtree|<client-name> subtree]] is set to "y", the client will be started automatically using the [[#Start command|Start command]]. This will occur when an experiment is first started after killing all clients. If the client then dies (or times out - see [[#Watchdog timeout||Watchdog timeout]]) the client will not be restarted unless Auto restart is set to "y".
 
 
 
<br>
---------
<br>
 
 
===  <span  style="color: purple;">''Auto stop'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' BOOL
* '''Default:'''  "n"
</div>
 
If this key in the  [[#<client-name> subtree|<client-name> subtree]] is set to "y", the client will be automatically shut down on a [[Run States and Transitions|STOP transition]].
 
 
<br>
---------
<br>
 
===  <span  style="color: purple;">''Auto restart'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' BOOL
* '''Default:'''  "n"
</div>
 
If this key in the  [[#<client-name> subtree|<client-name> subtree]] is set to "y"
the client will be restarted automatically using the [[#Start command|Start command]]. This will occur if the client dies or times out (see [[#Watchdog timeout||Watchdog timeout]]). If set to "n", the client must be restarted by the user. See also [[#Auto start|Auto start]].
 
 
 
 
<br>
---------
<br>
 
 
===  <span  style="color: purple;">''Alarm class'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' STRING
* '''Default:'''  ""
</div>
 
If this key in the  [[#<client-name> subtree|<client-name> subtree]] is set to one of the existing [[/Alarms ODB tree#alarm class|alarm classes]], an entry in the [[/Alarms ODB tree]] will be automatically created for this program. The [[/Alarms ODB tree#Alarm Type|Alarm Type]] will be [[/Alarms ODB tree#Program Alarm|Program alarm]] . This will cause an alarm to go off if the program is not running (provided both the
[[Alarm System]] is
[[/Alarms ODB tree#Alarm system active|enabled]], and the
[[/Alarms ODB tree#Active|individual alarm enabled]]).  
 
If the [[/Experiment ODB tree#Prevent start on alarms|Prevent start on alarms]]  is also set to "y", the run will be prevented from starting if an alarm has been triggered.
 
 
 
<br>
---------
<br>
 
 
===  <span  style="color: purple;">''First failed'' </span>  ===
 
<div style="column-count:3;-moz-column-count:3;-webkit-column-count:3">
* '''Type:''' DWORD
* '''Default:'''  ""
</div>
 
This  key in the  [[#<client-name> subtree|<client-name> subtree]] is filled by the System to indicate when the client first failed.
 
 
[[Category:ODB Tree]]
[[Category:Programs]]

Latest revision as of 22:00, 30 October 2026

The midas documentation has moved. See /Programs on the ODB keys page and Programs: configuring for the new documentation about the /Programs ODB keys.