Hi,
I'm trying to figure out if I'm doing something wrong or if I've run into
a bug in LPRng.
We have an LPRng setup with a number of spools with rather complex
filters, which do a number of automated process files before they are submitted
to a 3rd party production print spooler. They're written most in Perl (with some
StreamWeaver, and other CASS language callouts). Now, from time to time, there
are problems with the resources for these filters, and they must error out. Now,
since the data files the LPRng spool has received have nothing to do with these
errors and are OK, the filters generally return exit status 6 (JHOLD) and await
someone to fix the problem.
Now, in the past,
its been a matter of monitoring the queues from time to time to see if they
listed errors, because under previous versions of LPRng the
"mail_operator_on_error" lpd.conf variable does NOT mail on a JHOLD from a
filter. This seems to continue to be the case under 3.8.x. (My first question
about that is why, and can this be changed?) So, perhaps it would be better to
have the filters return a JFAIL, which does cause a mailing, but the default
behavior for JFAILed jobs is to remove the file, which we do not want to do,
because the files are fine, and reprinting these files from the upstream
customer is a "service failure" type event, but changing the
"send_failure_action" to hold also seems to suppress mailing the operator. So
perhaps the best option is to set "save_on_error", but that's where I think I
run into the bug:
When I set this, it
saves ALL jobs, whether they errored, completed, whatever. Jobs that pass
through the filters fine, return with a 0 code from the filter, are also saved.
Regardless of whether the "save_when_done" flag is set. Also, setting
"done_jobs" to any number or setting "done_jobs_max_age" doesn't seem to have
any affect...
Can anyone please
advise as to what the proper settings are, or if in fact there is a bug that
causes LPRng to save everything forever regardless when "save_on_error" is
turned on?
Or if someone has a
suggestion for how "properly" to
A) Have a filter
return an error
B) Have the operator
mailed that error
C) Have that job
saved indefinitely in the queue to be released later when the problem is
fixed.
please let me
know.
