Rhishabh Srivastava wrote:
I received a message CPF1378 when holding a job. The message
text says that:
Cause . . . . . : The job was performing a critical system
function when the request to hold the job was made.
Recovery . . . : The job will be held when the critical
function is completed.
FWiW the "recovery" might better be preceded with "No recovery is
required." The request to HLDJOB, a low-priority event, is enqueued
to be performed after the non-interruptible processing is completed.
So although the HLDJOB failed to complete synchronously, the
request should be completed asynchronously.
I would like to know exactly what happened here w.r.t AS400.
Good to see there are still some AS/400 systems out there. What
release of OS/400? Some debug tricks I might be able to dig up are
CISC-only.
Does the "w.r.t" perhaps ["w.r.t." intended] mean "with regard to"?
Knowing /exactly/ what happened is not possible; only if the
incident were re-created and the exception triggered a stop with a
LIC process dump of the job being held. Or possibly what happened
could be inferred from a trace that was active through the job being
held, if HLDJOB against the job re-created the error condition.
Does critical system function refer to kind of system calls
Any various system processing, not necessarily and possibly even
rarely for any "call" activity, for which an interruption of the
processing might effect an invalid\unpredictable state for recovery,
is often described by the term "critical system function".
and it is that when OS is executing any system call
in kernal mode the job will not get held.
I am not sure if a different error than msgCPF1378 may occur, for
when a long-running LIC instruction causes the request to timeout.
I believe the CPF1378 is only issued as a side effect of the message
MCH2004 [LIC exception 1404], for which the OS has requested the
process should not be interrupted by events; i.e. non-critical
events are /masked/ during some /critical processing/.
When can I expect such error to come, when a job is executing?
Expect the error whenever HLDJOB has been requested against a
job, when that job as target of the hold request is performing tasks
for which a prohibition of event\interrupt is established; i.e. when
the OS processing has /masked/ the process in order to prohibit any
interruption of its processing. Predicting that would be difficult
and have little value, since as noted, the message implies no
recovery is necessary. The enqueued event will be processed within
the target job when the process masking state has been removed, just
after its non-interruptible processing has completed; i.e. after the
process is /unmasked/.
FWiW: Some messages referencing process masking and events:
CPD1202 "event mask state did not allow events to be received"
CPD1915 CPF195A CPF7141 CPF1957 process "masked for events"
CPF5982 "job is masked"
MCH2004 "thread indicated not to be interrupted by any event";
i.e. "thread was masked"
FWiW: other event messaging, but regarding wait, not signal
MCH2007 "Wait On Event Not Allowed in Kernel Mode."
MCH5803 "Wait on event operation not satisfied in specified time
interval."
Regards, Chuck
As an Amazon Associate we earn from qualifying purchases.