Re: pgAgent crashes on failed connection

From: Dave Page <dpage(at)pgadmin(dot)org>
To: Heikki Linnakangas <heikki(dot)linnakangas(at)enterprisedb(dot)com>
Cc: Merlin Moncure <mmoncure(at)gmail(dot)com>, pgadmin-hackers <pgadmin-hackers(at)postgresql(dot)org>
Subject: Re: pgAgent crashes on failed connection
Date: 2011-09-29 11:06:31
Message-ID: CA+OCxow9dRAchttwU46cAyE+k+aee_qnQmQzi14=jGoj_5VJZA@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgadmin-hackers

On Wed, Sep 28, 2011 at 8:16 PM, Heikki Linnakangas
<heikki(dot)linnakangas(at)enterprisedb(dot)com> wrote:
> (sorry for the late reply, this fell through the cracks..)
>
> On 10.08.2011 11:48, Dave Page wrote:
>>
>> On Thu, Aug 4, 2011 at 8:30 PM, Merlin Moncure<mmoncure(at)gmail(dot)com>  wrote:
>>>
>>> On Thu, Aug 4, 2011 at 2:19 PM, Heikki Linnakangas
>>> <heikki(dot)linnakangas(at)enterprisedb(dot)com>  wrote:
>>>>
>>>> I created 100 identical pgagent jobs, with one step that simply does
>>>> "SELECT
>>>> pg_sleep(10)". I then forced them all to run immediately, with "UPDATE
>>>> pgagent.pga_job SET jobnextrun=now();". pgagent crashed.
>>>>
>>>> What happened is that the when all those jobs are launched at the same
>>>> time,
>>>> the server ran into the max_connections limit, and pgagent didn't handle
>>>> that too well. JobThread::JobThread constructor does not check for NULL
>>>> result from DBConn::Get(), and passes a NULL connection to Job::Job,
>>>> which
>>>> tries to reference it, leading to a segfault.
>>>>
>>>> I propose the attached patch.
>>>
>>> hm, in the event that happens, is that logged in the client somehow?
>>> wouldn't you want to throw an exception or something like that?
>>
>> I think the most straightforward way to handle this is to dump an
>> error into pgagent.pga_joblog when deleting the thread. Might be a
>> little ugly to pass the original error message back rather than a
>> generic one though. Can you take a look Heikki?
>
> You mean something like the attached? Works for me, but inserting an entry
> in joblog for each failed attempt might create a lot of entries there, if
> the problem persists.

Yes, like that :-). Thanks - patch applied.

--
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 pgAdmin Trac 2011-10-02 08:17:27 Re: [pgAdmin III] #74: Data type selection when creating a column... really hard task
Previous Message Dave Page 2011-09-29 11:06:06 pgAgent commit: More cleanly handle cases when the database connection