Re: [RFC PATCH v7 1/9] gitweb: Go to DONE_REQUEST rather than DONE_GITWEB in die_error

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Jakub Narebski
Date: Saturday, December 25, 2010 - 3:14 pm

On Thu, 23 Dec 2010, Jonathan Nieder wrote:

Hmmm, I thought that git has Perl-specific diff driver (xfuncname), but
I see that it doesn't.  The default funcname works quite well for Perl
code... with exception of here-documents (or rather their ending).

BTW. do you know how such perl support should look like?


Well, actually this patch is in this series only for the label ;-)

Anyway, I can simply drop this patch, and have next one in series
(adding exception-based error handling, making die_error work like
'die') delete DONE_GITWEB label...


Thanks, I missed this (but after examining it turns out to be a 
non-issue).  That will teach me to leave code outside of run() 
subroutine; one of reasons behind creating c2394fe (gitweb: Put all 
per-connection code in run() subroutine, 2010-05-07) was to clarify 
code flow.

A note: using set_message inside handle_errors_html was necessary 
because if there was a fatal error in die_error, then 
handle_errors_html would be called recursively - this was fixed in 
CGI.pm 3.45, but we cannot rely on this; we cannot rely on having new 
enough version of CGI::Carp that supports set_die_handler either.

But actually handle_errors_html gets called only from fatalsToBrowser,
which in turn gets called from CGI::Carp::die... which ends calling
CODE::die (aka realdie), which ends CGI process anyway.

That is why die_error ends with

	goto DONE_GITWEB
		unless ($opts{'-error_handler'});

i.e. it doesn't goto DONE_GITWEB nor DONE_REQUEST if called from
handle_errors_html anyway.


If client (web browser) are requesting connection, we have to tell it
something anyway.  Note that each request might serve different client.
But when the die_error(503, "The load average on the server is too 
high") doesn't generate load by itself, all should be all right.


'die $@ if $@' would call CORE::die, which means it would end gitweb
process.

For CGI server it doesn't matter anyway, as for each request the process
is respawned anyway (together with respawning Perl interpreter), and I
think that ModPerl::Registry and FastCGI servers monitor process that it
is to serve requests, and respawn it if/when it dies.
 
 
Thanks a lot for your comments.

-- 
Jakub Narebski
Poland
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
[RFC PATCH v7 4/9] gitweb: Prepare for splitting gitweb, Jakub Narebski, (Wed Dec 22, 4:56 pm)
[RFC PATCH v7 9/9] gitweb: Add optional output caching, Jakub Narebski, (Wed Dec 22, 4:58 pm)
Re: [RFC PATCH v7 4/9] gitweb: Prepare for splitting gitweb, Jonathan Nieder, (Fri Dec 24, 2:29 am)
Re: [RFC PATCH v7 1/9] gitweb: Go to DONE_REQUEST rather t ..., Jakub Narebski, (Sat Dec 25, 3:14 pm)
[RFC/PATCH] diff: funcname and word patterns for perl, Jonathan Nieder, (Sun Dec 26, 2:07 am)
Re: [RFC/PATCH] diff: funcname and word patterns for perl, Jonathan Nieder, (Sun Dec 26, 3:54 am)
Re: [RFC/PATCH] diff: funcname and word patterns for perl, Jonathan Nieder, (Sun Dec 26, 4:22 am)
Re: [RFC/PATCH] diff: funcname and word patterns for perl, Jakub Narebski, (Sun Dec 26, 4:14 pm)
Re: [RFC/PATCH] diff: funcname and word patterns for perl, Junio C Hamano, (Mon Dec 27, 10:18 am)
Re: [RFC/PATCH] diff: funcname and word patterns for perl, Jakub Narebski, (Mon Dec 27, 3:44 pm)