> From [EMAIL PROTECTED] Mon Jun 28 10:48:28 2004
> Date: Mon, 28 Jun 2004 10:42:31 -0700 (PDT)
> From: Charlie Root <[EMAIL PROTECTED]>
> To: undisclosed-recipients:;
>
> hi list,
> i need a pointer to the current job handling.
> i guess lprng scans the directory on every loop. so its takes quit
long
> to process a long list of entries.
> i plan a patch to cache the entries and reread the directory only when
> the list is empty.
>
> does anyone know where this is handled exactly and how ?
>
> mfg
> wh
The problem is compounded by the fact that when you add jobs
the priority of newly added jobs may be higher than the
current jobs in the queue.
To handle this, each time a job is added to the queue,
it needs to be rescanned and the job priorities recalculated.
Also, the LPC commands 'topq' and 'move' may cause the queue
to be rescanned.
And of course, your good friend LPQ will cause the queue to be
rescanned.
I have spent a fair amount of time on this problem, and decided
that the only way to solve the problem is to NOT use the directory
structure, but to place all of the job information in a database.
The first couple of attempts to do this resulted in horrors, as the
file locking, dbm versions, conflicting libraries, etc., caused
more headaches than I would have ever possibly imagined.
I backed out the use of the DBM database.
A possible improvement is to have one process SCAN the directory
and then cache the 'fstat' information and the 'control file'
contents. The problem here is that each time a job is processed
(added to the queue, remove from the queue, etc.), this file would need
to be updated.
Now, if this is of little or no concern to you, then there
is a very quick fix.
In the lpd_jobs.c file, look for the code that checks to see if
a SIGUSR1 signal has arrived. This sets a 'rescan' flag.
Comment out the code that checks this flag and does a 'rescan'.
There are a couple of other gotchas there, basically dealing with
LPRM removing jobs, but this will cause the queue to be scanned only
after all the jobs in the queue are processed in the order that
they were first in.
I may do this, and add a 'scan_queue_only_when_all_jobs_processed'
option to invoke this.
Patrick ("Don't look up? Then why did you say 'duck?' I don't see no
ducks?") Powell
-----------------------------------------------------------------------------
YOU MUST BE A LIST MEMBER IN ORDER TO POST TO THE LPRng MAILING LIST
The address you post from or your Reply-To address MUST be your
subscription address
If you need help, send email to [EMAIL PROTECTED] (or lprng-requests
or lprng-digest-requests) with the word 'help' in the body.
To subscribe to a list with name LIST, send mail to [EMAIL PROTECTED]
with: | example:
subscribe LIST <mailaddr> | subscribe lprng-digest [EMAIL PROTECTED]
unsubscribe LIST <mailaddr> | unsubscribe lprng [EMAIL PROTECTED]
If you have major problems, call Patrick Powell or one of the friendly
staff at Astart Technologies for help. Astart also does support for LPRng.
Also, check the Web Page at: http://www.lprng.com for any announcements.
Astart Technologies (LPRng - Print Spooler http://www.lprng.com)
6741 Convoy Court
San Diego, CA 92111
858-874-6543 FAX 858-751-2435
-----------------------------------------------------------------------------