Re: PATCH: pgagent fix for 'Caught unhandled unknown exception; terminating' bug in SQL steps

From: Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com>
To: Dave Page <dpage(at)pgadmin(dot)org>
Cc: Thomas Krennwallner <tk+pgsql(at)postsubmeta(dot)net>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: PATCH: pgagent fix for 'Caught unhandled unknown exception; terminating' bug in SQL steps
Date: 2015-03-31 12:56:14
Message-ID: CAG7mmoxAFZVqWW7FJLYy=4n4rfGr2N_OoUhgk5rQvK6Y-FsxMA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

On Tue, Mar 31, 2015 at 6:20 PM, Dave Page <dpage(at)pgadmin(dot)org> wrote:

>
>
> On Tue, Mar 31, 2015 at 8:45 AM, Ashesh Vashi <
> ashesh(dot)vashi(at)enterprisedb(dot)com> wrote:
>
>> On Thu, Mar 26, 2015 at 6:19 PM, Thomas Krennwallner <
>> tk+pgsql(at)postsubmeta(dot)net> wrote:
>>
>>> Hi!
>>>
>>> Running pgagent 3.4.0 on Debian jessie with an SQL jobstep crashes the
>>> worker thread with the error message
>>>
>>> Caught unhandled unknown exception; terminating
>>>
>>> Both job and jobstep status then remain as 'r' (running) until the
>>> pgagent process quits. After restarting pgagent, which cleans up the
>>> job status and sets it to 'd' (aborted), the job containing the SQL
>>> jobstep is free to run again, but the next run will end up in the same
>>> deadlock situation.
>>>
>>> I have tracked down the problem to DBconn::GetLastError(), which gets
>>> called after each SQL jobstep execution in Job::Execute(): there,
>>> DBconn::GetLastError() throws an exception whenever the last error
>>> message is empty.
>>>
>>> The attached patch fixes this problem by adding missing bounds checks
>>> to DBconn::GetLastError().
>>>
>> Thanks for the patch.
>> But - I was thinking about another fix for the same.
>> I used the wxString::Trim(trimRight=true) function in order to remove the
>> white-spaces from the right side.
>>
>>
>> Dave,
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>>
>> *diff --git a/connection.cpp b/connection.cppindex 6103c00..ccbb5c7
>> 100644--- a/connection.cpp+++ b/connection.cpp@@ -314,14 +314,7 @@ int
>> DBconn::ExecuteVoid(const wxString &query) wxString
>> DBconn::GetLastError() { // Return the last error message, minus any
>> trailing line ends- if (lastError.substr(lastError.length() - 2, 2)
>> == wxT("\r\n")) // DOS- return lastError.substr(0,
>> lastError.length() - 2);- else if
>> (lastError.substr(lastError.length() - 1, 1) == wxT("\n")) //
>> Unix- return lastError.substr(0, lastError.length() -
>> 1);- else if (lastError.substr(lastError.length() - 1, 1) ==
>> wxT("\r")) // Mac- return lastError.substr(0,
>> lastError.length() - 1);- else- return
>> lastError;+ return lastError.Trim(true); }*
>>
>> Do you think - above diff make sense?
>> If yes - I will commit the code.
>>
>
>
> That does seem like it would do it.
>
Thanks.
I will commit the changes.

--

Thanks & Regards,

Ashesh Vashi
EnterpriseDB INDIA: Enterprise PostgreSQL Company
<http://www.enterprisedb.com>

*http://www.linkedin.com/in/asheshvashi*
<http://www.linkedin.com/in/asheshvashi>

>
> --
> Dave Page
> Blog: http://pgsnake.blogspot.com
> Twitter: @pgsnake
>
> EnterpriseDB UK: http://www.enterprisedb.com
> The Enterprise PostgreSQL Company
>

In response to

Responses

Browse pgadmin-hackers by date

  From Date Subject
Next Message Ashesh Vashi 2015-03-31 16:13:32 Re: autocommit feature in pgadmin
Previous Message Dave Page 2015-03-31 12:50:13 Re: PATCH: pgagent fix for 'Caught unhandled unknown exception; terminating' bug in SQL steps