On Tue, Mar 31, 2015 at 8:45 AM, Ashesh Vashi <[email protected] > wrote:
> On Thu, Mar 26, 2015 at 6:19 PM, Thomas Krennwallner < > [email protected]> 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. -- Dave Page Blog: http://pgsnake.blogspot.com Twitter: @pgsnake EnterpriseDB UK: http://www.enterprisedb.com The Enterprise PostgreSQL Company
