[Dancer-users] mysterious behavior putting Dancer app in production on Starman
Mr. Puneet Kishor
punk.kish at gmail.com
Sat Jul 16 18:21:43 CEST 2011
--
Puneet Kishor http://punkish.org
Researcher http://paleodb.org http://macrostrat.org http://carbonmodel.org
Science Fellow http://creativecommons.org
Charter Member http://osgeo.org
On Jul 15, 2011, at 3:48 PM, David Precious <davidp at preshweb.co.uk> wrote:
> On Friday 15 July 2011 02:55:55 Mr. Puneet Kishor wrote:
>> Here is the interesting thing -- if I add the -D switch to the second app
>> as well, it fails to return the polys and the points. It fails with the
>> error
>>
>> {"error":"Warning caught during route execution: DBD::mysql::st
>> fetchall_arrayref failed: fetch() without execute() at
>> <path/to>/macrostrat.pm line 79.\n"}
>>
>> The offending lines are
>>
>> 71> my $sql = qq{
>> 72> ..
>> 73>
>> 74>
>> 75> };
>> 76>
>> 77> my $sth = $dbh->prepare($sql);
>> 78> $sth->execute();
>> 79> my $res = $sth->fetchall_arrayref({});
>>
>> The above could be just correlation rather than causal, but it definitely
>> seems to be a pattern. First, this is bizarre, and why so? And, two...
>> this is totally bogus... how can execute() not take place above? Perl
>> doesn't have a habit of jumping over lines, does it?
>
> You haven't actually performed any error checking;
In a later email I did report that --
> Paul Findlay's advice, I launched my offending app with the following invocation
>
> $DBI_TRACE=2=logs/dbi.log plackup -E production -p 5001 -s Starman -w 10 -a bin/app.pl
>
> And, following is what stood out to me as the potential culprit in the log file
>
> > Handle is not in asynchronous mode error 2000 recorded: Handle is
> > not in asynchronous mode
> > !! ERROR: 2000 CLEARED by call to fetch method
>
> (I am shooting in the dark here) I believe Dancer uses a lot of global variables.
> Would that be connected to this error? On occasion, I am also seeing another
> mysterious behavior, so mysterious that I feel I am smoking something"
I posted this question on perlmonks as well, and there has been a little discussion, but nothing conclusive yet. [http://www.perlmonks.org/index.pl?node_id=914782]. I am going to try turning on the async feature in DBI and see if that make any difference.
> either make sure RaiseError
> is enabled on your database handle, or check for errors, e.g.:
>
> $sth->execute()
> or die "Failed to execute query - " . $dbh->errstr;
>
> As for why the behaviour changed when you selected the production environment,
> perhaps it's down to differing settings in enviroments/development.yml and
> environments/production.yml ?
The development.yml and production.yml settings are identical in all meaningful ways, as far as I can tell. The only differences are the ones that dancer -a cooks up when creating a bare shell of an app... Different warning levels, warning targets, and that is about it.
The only difference I can see is that with -D switch the app runs in the background, and I get no diagnostic messages. Btw, does Starman (or plackup) support logging error and accept requests like Apache does?
>
>
> --
> David Precious ("bigpresh")
> http://www.preshweb.co.uk/
>
> "Programming is like sex. One mistake and you have to support
> it for the rest of your life". (Michael Sinz)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.backup-manager.org/pipermail/dancer-users/attachments/20110716/0f9049ab/attachment.htm>
More information about the Dancer-users
mailing list