|
View:
New views
2 Messages
—
Rating Filter:
Alert me
|
|
|
FastCGI/Oracle timeout issueSo I have a little trouble with my CGIapp running under fastCGI. These are the only two apps I run under FastCGI (currently) so I don't have a huge amount of experience with it. The phenotype is this: Our Oracle users have a connection limit set (usually 4 hours or so) - including the user "WEBB" which the CGI scripts all use. If a fastcgi/cgiapp script is unused for a long time (slightly greater than the time out) than the Oracle user logs out. The CGI app (under fastcgi) then hangs, eternally cycling one of about 3 different error messages. The error messages are caught in a run mode like this: ####################################################################### sub setup { ####################################################################### my $self = shift; $self->start_mode('display_search_form'); ... } ####################################################################### sub display_error { ####################################################################### my $self = shift; my $title = $self->{title} || "Error from CGI::Application $0"; my %dataHash = ( page_title => $title, errors => \@_, internal_url => $self->{URL}, external_url => $self->{extURL}, parameter => { $self->query->Vars } ); $dataHash{errors} = $self->{error_message} if ($self- >{error_message}); return $self->tt_process('error.tmpl', \%dataHash); } I thought that I could try to catch the error in the main controller loop: (WWW::Reports::LocusReport::LocusSummary ISA CGI::Application)0 while (my $q = CGI::Fast->new) { my $app = WWW::Reports::LocusReport::LocusSummary->new(QUERY => $q, tmpl_path => [ $ROOT_TMPL_PATH . "/Reports/LocusReport/LocusSummary", $ROOT_TMPL_PATH . "/Reports/LocusReport", $ROOT_TMPL_PATH . "/Reports", $ROOT_TMPL_PATH ], ); $app->run; die "Error found, killing process" if $app->{error_message}; } But this doesn't appear to work... perhaps the object is cleansed between output and exit of $app->run? I can just stick an exit or die in the display_error runmode method... but this results in a 500 error. The good news is that after the 500 error, a reload restarts the fastCGI process and gets a good result. I would really like to catch this error and restart the process with a minimum of fuss. I would be OK with showing the error.tmpl; I could add a reload to it or something. I suppose some way of dropping the database handle and reconnecting would work. I am using CGI::Application::Plugin::DBH and dbh_cached with DBD::Oracle. Thanks, Ben -- Ben Hitz Senior Scientific Programmer ** Saccharomyces Genome Database ** GO Consortium Stanford University ** hitz@... ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################ |
|
|
Re: FastCGI/Oracle timeout issueJust an update on this... I did manage to trap the error in the teardown method and kill the process. I just had confused myself with fallback error processing. Ben On Aug 13, 2009, at 2:43 PM, Benjamin Hitz wrote: > Our Oracle users have a connection limit set (usually 4 hours or so) > - including the user "WEBB" which the CGI scripts all use. > If a fastcgi/cgiapp script is unused for a long time (slightly > greater than the time out) than the Oracle user logs out. The CGI > app (under fastcgi) then hangs, eternally cycling one of about 3 > different error messages. -- Ben Hitz Senior Scientific Programmer Saccharomyces Genome Project Stanford University hitz@... ##### CGI::Application community mailing list ################ ## ## ## To unsubscribe, or change your message delivery options, ## ## visit: http://www.erlbaum.net/mailman/listinfo/cgiapp ## ## ## ## Web archive: http://www.erlbaum.net/pipermail/cgiapp/ ## ## Wiki: http://cgiapp.erlbaum.net/ ## ## ## ################################################################ |
| Free embeddable forum powered by Nabble | Forum Help |