Andrew Dunstan wrote:
>
>
> Dave Page wrote:
>>> The reason it should be in the Global namespace is that shmem is one
>>> part of
>>> detecting an existing postmaster. Especially in situations where the
>>> db is started
>>> by hand, the protection against duplicate startup is important.
>>>
>>
>> Yeah, as Magnus reminded me.
>>
>
> IMNSHO we need to find a different exclusion mechanism that isn't as
> cumbersome and surrounded by caveats as this one.
>
> The buildfarm also uses an exclusion mechanism, based on Perl's
> flock(), and it's a simple one line call. AFAIK that works just fine
> on Windows (I will double check). If so, we should possibly look at
> how Perl does that on Windows.
I have verified that it does indeed work. Underneath the hood it uses
the native call LockFileEx() see win32io.c in Perl source. I suggest we
should switch from this flaky use of Global namespace to having the
postmaster acquire an explicit lock on a file in the datadir.
cheers
andrew