Re: [HACKERS] background sessions - Mailing list pgsql-hackers

From Petr Jelinek
Subject Re: [HACKERS] background sessions
Date
Msg-id 31da1617-5d7a-b4a9-85cb-3ae7abdd95dd@2ndquadrant.com
Whole thread Raw
In response to Re: [HACKERS] background sessions  (Robert Haas <robertmhaas@gmail.com>)
Responses Re: [HACKERS] background sessions  (Robert Haas <robertmhaas@gmail.com>)
List pgsql-hackers
On 15/03/17 17:58, Robert Haas wrote:
> On Wed, Mar 15, 2017 at 6:43 AM, Pavel Stehule <pavel.stehule@gmail.com> wrote:
>> I don't understand - CHECK_FOR_INTERRUPTS called from executor implicitly.
> 
> True.  So there shouldn't be any problem here.  I'm confused as can be
> about what you want changed.
> 
> Some review of the patch itself:
> 
> +    pq_redirect_to_shm_mq(session->seg, session->command_qh);
> +    pq_beginmessage(&msg, 'X');
> +    pq_endmessage(&msg);
> +    pq_stop_redirect_to_shm_mq();
> 
> shm_redirect_to_shm_mq() wasn't really designed to be used this way;
> it's designed for use by the worker, not the process that launched it.
> If an error occurs while output is redirected, bad things will happen.
> I think it would be better to find a way of sending that message to
> the queue without doing this.

Couldn't we just create special version of pq_endmessage that sends to
shm_mq?

> 
> Also, I suspect this is deadlock-prone.  If we get stuck trying to
> send a message to the background session while the queue is full, and
> at the same time the session is stuck trying to send us a long error
> message, we will have an undetected deadlock.  That's why
> pg_background() puts the string being passed to the worker into the
> DSM segment in its entirety, rather than sending it through a shm_mq.
> 

Yeah I think this will need to use the nowait = true when sending to
shm_mq and chunk the message if necessary...

--  Petr Jelinek                  http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training &
Services



pgsql-hackers by date:

Previous
From: Magnus Hagander
Date:
Subject: Re: [HACKERS] createlang/droplang deprecated
Next
From: Tom Lane
Date:
Subject: Re: [HACKERS] createlang/droplang deprecated