[cups.development] [RFE] STR #2732: Status of remote IPP jobs cannot be discovered
Michael Sweet
msweet at apple.com
Tue Mar 4 08:02:36 PST 2008
DO NOT REPLY TO THIS MESSAGE. INSTEAD, POST ANY RESPONSES TO THE LINK BELOW.
[STR New]
> If I understand it correctly it means that a
> running backend is needed to get the state
> of a remote IPP job?
Yes
> Does this also mean that the backend must
> keep on running until the remote job is finally
> processed (to notice errors while processing)?
Yes
> How should this work if there are many other jobs
> in the remote queue?
Each client only sends one job at a time to a queue.
> Additionally the backend should exit by default
> as soon as possible to allow maximum throughput.
No! Doing so means that a user either cannot move a pending job to
another queue or we have to add a lot of complicated and potentially
unreliable caching code with a backend that then has to support cancel
functionality without queuing.
The current implementation prevents a client from hogging a printer for
more than a single job and also supports traditional DNS load balancing
(where a single hostname maps to multiple IPs).
> I think it is not teh backend but only the cupsd
> which should maintain a database of sent IPP jobs
> so that "lpstat -W completed" can show job info.
Adding this to the scheduler might be possible, but at this point I am not
prepared to add that layer of complexity to the scheduler when there will
be little apparent benefit with significant change in behavior.
> Currently "lpstat -W completed" shows only the info
> regarding the local system.
Right, this is by design.
> What is actually missing is something like a "traceroute"
> functionality (i.e. a "tracejob" functionality) which
> queries the remote system about the remote job info.
"lpstat -p" actually does this.
> Therefore cupsd must also keep the remote job IDs and
> the remote host so that it can generate a matching
> query for the remote host.
No. cupsd shouldn't be doing the remote lookups for the client - that
introduces a lot of performance issues as well as adding complexity to
cupsd.
cupsd is meant as a lightweight server - all long-term operations are
farmed out to helper programs. This helps to keep cupsd small and simple,
and makes the implementation of the long-term operations simpler as well.
> By default no "tracejob" should be done because it could
> take arbitrary time (think about several subsequent
> remote cupsds which forward the job until it reaches
> its final destination) and arbitraty stuff like network
> timeout could delay the response.
Right, which is why we don't do this in the scheduler - it would be a
recipe for an easy denial-of-service attack. Even helper programs can be
problematic (too many helper apps running...), which is why I say any
"tracing" functionality needs to happen in the client apps (lpstat, lpq)
where any DoS is limited to that program and not the whole printing
system.
Link: http://www.cups.org/str.php?L2732
Version: -feature
More information about the cups
mailing list