Warren Young:

> That’s brand new code, less than a week old. It’s not surprising it’s
> not rock-solid yet.

Yes, I agree, I no not expect complex new features to be flawless from
the beginning.

But I've stumbled into the issue while testing a fix from the current
tip, and decided to report it early.

> I expect drh is now on the case. :)

The Windows HTTP server (and thus `fossil ui') works by spawning
sub-processes for each individual HTTP request, right? This results in
multiple sub-processes per web page (one for the HTML page, one for
CSS, another one for JavaScript, etc.)?

Maybe that these sub-processes concurrently try to "get the backoffice
lease" after successfully serving their HTTP request, resulting in a
race, and some of the sub-processes sleeping and waiting for 60
seconds for the lease to expire?

I noticed the following commit:

[a32a92d2] At the end of CGI processing, close the output pipe before
starting backoffice processing, in order to let higher levels know
that the CGI is finished.

http://fossil-scm.org/index.html/info/a32a92d2

Maybe this fixed the same (or a similar) problem with the HTTP server
on *nix, so the web browser quickly receives all the HTTP output,
before the HTTP serving process is turning to backoffice work?

But on Windows, g.httpOut seems to be a temporary file, and not a
pipe, and the `fossil ui' main process may not be waiting for the file
to become signaled when (any) I/O completes (which is a discouraged
technique anyway), but for the sub-process that generated the file to
exit? And this one sub-process sleeping is causing the delay in the
`fossil ui' main process?

Sorry for my prosaic speculation and no hard facts, but I find it all
very interesting!

Another minor point:

The following line of source code from the aforementioned commit:

g.httpOut = fossil_fopen("/dev/null", "wb");

always seems to result in g.httpOut==NULL on Windows, as "/dev/null"
is not a valid Windows device. This probably doesn't matter from the
logic of the code, as writing to a FILE* pointing to NULL may have
exactly the same effect as writing to a FILE* pointing to "/dev/null"?

--Florian
_______________________________________________
fossil-users mailing list
fossil-users@lists.fossil-scm.org
http://lists.fossil-scm.org:8080/cgi-bin/mailman/listinfo/fossil-users

Reply via email to