.\" Automatically generated by Pod::Man 4.10 (Pod::Simple 3.35) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "SREVIEW-DISPATCH 1p" .TH SREVIEW-DISPATCH 1p "2019-02-17" "perl v5.28.1" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" sreview\-dispatch \- Watch the database for talks that need work done, and schedule jobs for them .SH "SYNOPSIS" .IX Header "SYNOPSIS" sreview-dispatch .SH "DESCRITPION" .IX Header "DESCRITPION" \&\fBsreview-dispatch\fR is the central script for SReview. It can be used in two ways: .IP "1." 4 Either you run it with an external scheduler (e.g., gridengine, slurm, \&\s-1PBS,\s0 torque). This is the recommended way of using SReview for large installations. In this mode of operation, \f(CW\*(C`sreview\-dispatch\*(C'\fR should be run once in the entire network, and the \f(CW\*(C`query_limit\*(C'\fR configuration value should be set to 0. .IP "2." 4 Or you run it with no external scheduler. This is the default. In this mode of operation, it is recommended that the \f(CW\*(C`query_limit\*(C'\fR configuration parameter is set to a nonzero value, so that individual \&\f(CW\*(C`sreview\-dispatch\*(C'\fR instances do not take all the work, keeping all the other instances idle. In this mode of operation, one \f(CW\*(C`sreview\-dispatch\*(C'\fR instance should be run per \s-1CPU\s0 core on every machine that is used for performing work. .Sp This mode works, but using an external scheduler allows for operating more flexibly on pending jobs, and on the addition or removal of extra nodes. .SH "OPTIONS" .IX Header "OPTIONS" None. \f(CW\*(C`sreview\-dispatch\*(C'\fR uses the system-wide SReview configuration. For more information, see sreview-config .SH "CONFIGURATION" .IX Header "CONFIGURATION" \&\f(CW\*(C`sreview\-dispatch\*(C'\fR considers the following configuration values: .IP "dbistring" 4 .IX Item "dbistring" The database connection string .IP "state_actions" 4 .IX Item "state_actions" A hash table of shell commands to execute when a talk is found in a particular state with the \f(CW\*(C`waiting\*(C'\fR progress value. The hash key should be the state name. .Sp If a state is not specified in the \f(CW\*(C`state_actions\*(C'\fR hash, then \&\f(CW\*(C`sreview\-dispatch\*(C'\fR will \fIignore\fR that state. This allows for handling particular states on particular hosts, if necessary. .Sp The shell commands can use the following template variables: .RS 4 .ie n .IP "<%== $talkid %>" 4 .el .IP "<%== \f(CW$talkid\fR %>" 4 .IX Item "<%== $talkid %>" The database \s-1ID\s0 of the talk to work on .ie n .IP "<%== $output_dir %>" 4 .el .IP "<%== \f(CW$output_dir\fR %>" 4 .IX Item "<%== $output_dir %>" The value of the \f(CW\*(C`script_output\*(C'\fR configuration item, i.e., where to redirect output to. .RE .RS 4 .RE .IP "query_limit" 4 .IX Item "query_limit" The maximum number of requests that should be handled per loop. Should be set to 0 (meaning infinity) when using an external scheduler; should probably be set to 1 when not. .IP "event" 4 .IX Item "event" The event in use for this instance of SReview. In previous versions of SReview, the dispatcher would run things for every event in the database; since version 0.4 this is no longer the case. This allows multiple instances of SReview to exist on the same host, sharing the same database if wanted. .IP "script_output" 4 .IX Item "script_output" The location where stderr and stdout output should be written to. This is supposed to be a directory; it is reasonable to create a file for stderr and a file for stdout for each script run. .SH "BUGS" .IX Header "BUGS" \&\f(CW\*(C`sreview\-dispatch\*(C'\fR currently polls the database every 10 seconds. This should be changed to an event-based system based on PostgreSQL asynchronous notifications.