On Sat, Mar 18, 2017 at 10:59 AM, Petr Jelinek
<petr.jeli...@2ndquadrant.com> wrote:
>> 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?

Yes, I think that sounds good.

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

Hmm, yeah.  If you take breaks while sending to check for data that
you need to receive, then you should be fine.

Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company

Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:

Reply via email to