MUPIP INTRPT (aka KILL -15) of rocto cancels a running query instead of creating a ZSHOW dump file
Final Release Note
Description
For a YottaDB process, mupip intrpt
(https://docs.yottadb.com/AdminOpsGuide/dbmgmt.html#intrpt) currently triggers the $ZINTERRUPT
mechanism (https://docs.yottadb.com/ProgrammersGuide/isv.html#zinterrupt). The default value of $ZINTERRUPT
is to invoke the $ZJOBEXAM()
function which does a ZSHOW "*"
to capture the state of the process (M local variables etc.) for analysis by the user. This is useful functionality in case processes are hung or looping.
This functionality does not currently work for rocto
. If one attempts a mupip intrpt
on a rocto
process, it ends up canceling the currently running query which is not what the user expects.
This is unfortunately the case because both MUPIP INTRPT
and query cancellation logic in rocto
use the same SIGUSR1
signal (i.e. KILL -15
) for their implementation.
Since MUPIP INTRPT
has been there for a while, it is best if rocto
finds another signal to use for the query cancellation functionality. For example, it can use SIGUSR2
instead (currently unused by a rocto
process). That way MUPIP INTRPT
and query cancellation both will work in rocto
.
Draft Release Note
Rocto processes now respond to a mupip intrpt
command (or a kill -15
) by dumping the output of ZSHOW "*"
into a file for later analysis, like all other YottaDB processes already do. Previously, this caused the currently running query to be canceled (an unexpected/undesirable behavior). Note though that if the YottaDB release being used is r1.30, mupip intrpt
will cancel the query. That is, one needs the YottaDB r1.31 (latest at this point) or higher release in order for mupip intrpt
to work correctly in rocto
.