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-04-01 09:57:50
Message-ID: CAG7mmoyDexPSJQswOvb6SgKboTrwTLk5Qwbw=eqrqUteC3qTBA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

On Tue, Mar 31, 2015 at 6:26 PM, Ashesh Vashi <ashesh(dot)vashi(at)enterprisedb(dot)com
> wrote:

> 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.
>
I have committed the changes.
Thanks Thomas Krennwallner for the report and for the patch too.

--

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>

>
> --
>
> 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

Browse pgadmin-hackers by date

  From Date Subject
Next Message Prasad 2015-04-03 22:46:29 Re: Patch : PGPASSFILE fix
Previous Message Ashesh Vashi 2015-04-01 09:56:01 pgAgent commit: Fixed a bug in DBconn::GetLastError() function.