On 02/22/2017 03:20 PM, Benjamins, John wrote:
Hi,
Sorry, you are right, it is actually using Dancer2::Plugin::Pg. Unfortunately I did not write this code, so I am not sure why it is checking $?, but that would seem to be a way to get unexpected results (which is what we are seeing!). What is the correct way to check the result of something like: $pg->selectAll( $query, $env_name )? How do I know the error returned, if any? Sorry if this is a basic question...
Thank you again!
John
Hello John, this plugin uses DBI behind the scenes - so if you have set RaiseError: 1, it will cause a 500 if the query fails. So checking $? is itself causing unexpected results. If you want to see if a query crashes, you can wrap the selectall call in an eval and check $@ - that makes more sense. Regards Racke
-----Original Message----- From: dancer-users [mailto:dancer-users-bounces@dancer.pm] On Behalf Of Stefan Hornburg (Racke) Sent: Wednesday, February 22, 2017 7:40 AM To: dancer-users@dancer.pm Subject: Re: [dancer-users] Problem with web service using dancer2
On 02/22/2017 01:32 PM, Benjamins, John wrote:
Hi,
The log has this for one of 20 threads with PID 37775:
[37775] Read 366 bytes: "GET /v1/environments/testtest1/requests HTTP/1.1\r\nHost: apews:8096\r\nUser-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:51.0) Gecko/20100101 Firefox/51.0\r\nAccept: application/json, text/javascript, */*; q=0.01\r\nAccept-Language: en-US,en;q=0.5\r\nAccept-Encoding: gzip, deflate\r\nReferer: http://apews:8080/ape_mgmt/\r\nOrigin: http://apews:8080\r\nConnection: keep-alive\r\n\r\n" [EnvMgmt:37775] core @2017-02-22 02:17:09> looking for get /v1/environments/testtest1/requests in /usr/local/share/perl5/Dancer2/Core/App.pm l. 34 [EnvMgmt:37775] core @2017-02-22 02:17:09> Entering hook core.app.before_request in (eval 176) l. 1 [EnvMgmt:37775] info @2017-02-22 02:17:09> Sub: get_env_requests_status -- Query: select request_id AS requestnumber, client_code AS clientcode, request_status AS requeststatus, entity_id AS environment, request_url AS requesturl, request_method AS requestmethod, request_desc AS requestdesc, created_timestamp AS createdtime from entity_requests where entity_id = 'testtest1' in /home/dancer2/EnvMgmt/bin/../lib/EnvUtils.pm l. 240 [EnvMgmt:37775] info @2017-02-22 02:17:09> Sub: get_env_requests_status -- Exitcode: 72057594037927935 in /home/dancer2/EnvMgmt/bin/../lib/EnvUtils.pm l. 255 [EnvMgmt:37775] info @2017-02-22 02:17:09> ERROR: ARRAY(0x3e73f90) $VAR1 = [ { .... (data removed for brevity) ... } ]; in /home/dancer2/EnvMgmt/bin/../lib/EnvUtils.pm l. 259 [EnvMgmt:37775] core @2017-02-22 02:17:09> Entering hook core.app.after_request in (eval 176) l. 1 [37775] Wrote 285 bytes [37775] Wrote 5 bytes [37775] Request done [37775] Waiting on previous connection for keep-alive request... [37775] Closing connection
The code around l. 255 in EnvUtils.pm is:
# # Get requests status for selected environment. #
sub get_env_requests_status { my ($env_name) = @_;
# $env_name = $env_name . '%';
my $pg = Pg; my $debug = 'select request_id AS requestnumber,' . ' client_code AS clientcode,' . ' request_status AS requeststatus,' . ' entity_id AS environment,' . ' request_url AS requesturl,' . ' request_method AS requestmethod,' . ' request_desc AS requestdesc,' . ' created_timestamp AS createdtime' . ' from entity_requests' . ' where entity_id = \'' . $env_name . '\''; info "Sub: get_env_requests_status -- Query: $debug";
my $query = 'select request_id AS requestnumber,' . ' client_code AS clientcode,' . ' request_status AS requeststatus,' . ' entity_id AS environment,' . ' request_url AS requesturl,' . ' request_method AS requestmethod,' . ' request_desc AS requestdesc,' . ' created_timestamp AS createdtime' . ' from entity_requests' . ' where entity_id = ?'; my $result = $pg->selectAll( $query, $env_name ); my $exitcode = $? >> 8;
info "Sub: get_env_requests_status -- Exitcode: $exitcode";
if ($exitcode) { my $str = sprintf("%s", Dumper($result)); info "ERROR: $result $str"; return 372; # Error: Cannot select the request status for selected env. }
return @{$result}; };
And we are using Data::Dumper to print the $result of the query.
Thank you!
John
Hello John,
I thought you are using DBI ... but what kind of module is Pg?
At any rate, it looks odd to me to query the exit code when you don't run an external command.
Also I would use q{} or qq{} instead of appending lines with the dot operator.
Regards Racke
-----Original Message----- From: dancer-users [mailto:dancer-users-bounces@dancer.pm] On Behalf Of Stefan Hornburg (Racke) Sent: Wednesday, February 22, 2017 7:03 AM To: dancer-users@dancer.pm Subject: Re: [dancer-users] Problem with web service using dancer2
On 02/22/2017 12:56 PM, Benjamins, John wrote:
Hi,
We are using Dancer2 (version is 0.203001) to provide a web service, and this has been deployed in a Docker container. It is using Postgres as a database backend and perl DBI. We are having an issue were the service starts to return error 500 from database queries, even though it is returning what appears to be valid data. Any suggestions on where we should start looking? Restarting the pod running the web service fixes the issue for a while, but after a day or so of activity, the issue comes back.
Please let me know if there is any additional information I can provide that would help describe the problem better.
Thanks,
Hello,
what does Dancer report in the log file about the reason of the 500 error?
Regards Racke
This message is marked *Public*
--------------------------------------------------------------------- - -------------------------------------------------- Please consider the environment before printing this email and any attachments.
This e-mail and any attachments are intended only for the individual or company to which it is addressed and may contain information which is privileged, confidential and prohibited from disclosure or unauthorized use under applicable law. If you are not the intended recipient of this e-mail, you are hereby notified that any use, dissemination, or copying of this e-mail or the information contained in this e-mail is strictly prohibited by the sender. If you have received this transmission in error, please return the material received to the sender and delete all copies from your system.
_______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
-- Ecommerce and Linux consulting + Perl and web application programming. Debian and Sympa administration. _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
This message is marked Public
Please consider the environment before printing this email and any attachments.
This e-mail and any attachments are intended only for the individual or company to which it is addressed and may contain information which is privileged, confidential and prohibited from disclosure or unauthorized use under applicable law. If you are not the intended recipient of this e-mail, you are hereby notified that any use, dissemination, or copying of this e-mail or the information contained in this e-mail is strictly prohibited by the sender. If you have received this transmission in error, please return the material received to the sender and delete all copies from your system. _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
-- Ecommerce and Linux consulting + Perl and web application programming. Debian and Sympa administration. _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
This message is marked Public
Please consider the environment before printing this email and any attachments.
This e-mail and any attachments are intended only for the individual or company to which it is addressed and may contain information which is privileged, confidential and prohibited from disclosure or unauthorized use under applicable law. If you are not the intended recipient of this e-mail, you are hereby notified that any use, dissemination, or copying of this e-mail or the information contained in this e-mail is strictly prohibited by the sender. If you have received this transmission in error, please return the material received to the sender and delete all copies from your system. _______________________________________________ dancer-users mailing list dancer-users@dancer.pm http://lists.preshweb.co.uk/mailman/listinfo/dancer-users
-- Ecommerce and Linux consulting + Perl and web application programming. Debian and Sympa administration.