On Thu, Apr 21, 2016 at 9:47 PM, Kyotaro HORIGUCHI
<horiguchi.kyotaro@lab.ntt.co.jp> wrote:
> A lock was already held in BackendPidGetProc(). Is it also
> needless? If so, we should use BackendPidGetProcWithLock() instad
> (the name seems a bit confusing, though).
Oh, that's really sad. No, that lock is definitely needed. We should
probably try to figure out some day if there is a way to make this
completely lockless, but that'll have to be 9.7 material or later.
:-(
> What I did in the patch was just extending the lock duration
> until reading the pointer proc. I didn't added any additional
> lock.
Sorry, I didn't realize that. Good point.
>> > The
>> > only thing we need to do is to prevent the value from being read
>> > twice, and we already have precedent for how to prevent that in
>> > freelist.c.
>
> However, I don't have objections for the patch applied.
OK, let's leave it like that for now, then.
--
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company