[opensuse-buildservice] new version of the dod patch
Hi, here's a new version of the dod patch. Changes: - bs_repserver: * hand-off all fetching requests to the ajaxsocket: this means only one request for the same project/repo/arch is served and all other subsequent requests for the same project/repo/arch are "blocked" until the first request finished. This way we can avoid that the same package is fetched multiple times. The drawback of this approach is that the worst-case running time is O(n^2) (where n := number of packages to be fetched) but this can be ignored because it is usually a one-time job IMHO. * notify scheduler if a package was fetched - bs_sched: * removed old code to support updates of the metafile (now the repserver has to notify the scheduler if it fetched a package). For instance if a more frequently changing repo (e.g. an update repo) is used as a dod repo the scheduler has to detect "meta changes" and trigger rebuilds (which was not possible with the old code). Feedback, objections etc. are welcome:) Btw. I've a general question about the ajaxsocket. For instance if the srcserver does a RPC to the repserver and the repserver hands-off this request to its ajaxsocket, should the srcserver hand-off the request to its ajaxsocket too (before it does the RPC)? If I understand it correctly all requests which can't be served "immediately" are handed-off to the ajaxsocket because otherwise they may "block" other requests which can be served immediately (if the "maxchild" limit is reached). If this is correct why do we handoff requests like "/build/<projid>/<repoid>/<arch>/_repository?view=solvstate"? Can you enlighten me?:) Marcus
On Mon, Apr 05, 2010 at 09:08:40PM +0200, Marcus Hüwe wrote:
Btw. I've a general question about the ajaxsocket. For instance if the srcserver does a RPC to the repserver and the repserver hands-off this request to its ajaxsocket, should the srcserver hand-off the request to its ajaxsocket too (before it does the RPC)?
Yes. Otherwise the source server will have a "blocking" child.
If I understand it correctly all requests which can't be served "immediately" are handed-off to the ajaxsocket because otherwise they may "block" other requests which can be served immediately (if the "maxchild" limit is reached).
Right.
If this is correct why do we handoff requests like "/build/<projid>/<repoid>/<arch>/_repository?view=solvstate"? Can you enlighten me?:)
Solvstate is - used for the interconnect - quite big - not cached on the interconnect clients I didn't want the server to suffer from slow interconnects, so I'm using the ajax server to serve them. Cheers, Michael. -- Michael Schroeder mls@suse.de SUSE LINUX Products GmbH, GF Markus Rex, HRB 16746 AG Nuernberg main(_){while(_=~getchar())putchar(~_-1/(~(_|32)/13*2-11)*13);} -- To unsubscribe, e-mail: opensuse-buildservice+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-buildservice+help@opensuse.org
participants (2)
-
Marcus Hüwe
-
Michael Schroeder