pg.ddx.io  pgsql-hackers@postgresql.org mailing list archive  
help / color / mirror / Atom feed
From: r.zharkov@postgrespro.ru
To: Tom Lane <tgl@sss.pgh.pa.us>
Cc: Badrul Chowdhury <bachow@microsoft.com>
Cc: pgsql-hackers@lists.postgresql.org
Subject: Re: Intermittent pg_ctl failures on Windows
Date: Wed, 17 Jul 2019 21:54:16 +0700
Message-ID: <3b46fc8be044c79b5eff7d26c810d2fd@postgrespro.ru> (raw)
In-Reply-To: <26631.1563371508@sss.pgh.pa.us>
References: <16922.1520722108@sss.pgh.pa.us>
	<DM5PR2101MB0984D3DB39BCCCF189ECD15ED1D30@DM5PR2101MB0984.namprd21.prod.outlook.com>
	<0057a0ce5a8893e4713a9a9d7e352162@postgrespro.ru>
	<26631.1563371508@sss.pgh.pa.us>

On 2019-07-17 20:51, Tom Lane wrote:
> r.zharkov@postgrespro.ru writes:
>> pg_ctl now opens the postmaster.pid file using pgwin32_open() function
>> to correctly handle share locks.
> 
> HEAD already does that, no?  See f02259fe9.
> 

You are right. I tested branch REL_11_STABLE and it is my mistake.

>> On Windows systems we cannot handle ERROR_DELETE_PENDING because
>> GetLastError() returns ERROR_ACCESS_DENIED instead.
>> So we rename the lock files before delete them.
> 
> This seems improbably broken/stupid.  Also, I've not seen any buildfarm
> failures that would match this; it's always pg_ctl complaining not the
> postmaster.
> 

The probability is very small. In one of our tests pg_ctl fails with 
that error sometime.
In a test with multiple frequent restarts the probability is 5-6%. On 
other machines probability differs.
To find out the real error code we used the Process Monitor utility.

>> To avoid the second error we added the wait for cmd.exe finish in the
>> do_stop() and do_restart() functions.
> 
> Hmmm ... there seems the germ of a good idea here, but can't we do
> it with less (and less ugly) code?
> 
> Alternatively, perhaps we could fix things so that the parent cmd.exe
> shell isn't involved in logfile access?  That'd require teaching the
> postmaster to open/redirect its stdout/stderr, which is kind of
> annoying, but it might beat hacking things as you have done here.
> 

If we need parent cmd.exe only for log writing, can we start the 
postmaster without it?
Is cmd.exe necessary?


-- 
regards, Roman Zharkov





view thread (16+ messages)  latest in thread

Message-ID: <3b46fc8be044c79b5eff7d26c810d2fd@postgrespro.ru>
Permalink:  ../3b46fc8be044c79b5eff7d26c810d2fd@postgrespro.ru/
Also on:    postgresql.org/message-id/3b46fc8be044c79b5eff7d26c810d2fd@postgrespro.ru

 · 

reply

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Reply to all the recipients using the --to and --cc options:
  reply via email

  To: pgsql-hackers@postgresql.org
  Cc: r.zharkov@postgrespro.ru, tgl@sss.pgh.pa.us, bachow@microsoft.com, pgsql-hackers@lists.postgresql.org
  Subject: Re: Intermittent pg_ctl failures on Windows
  In-Reply-To: <3b46fc8be044c79b5eff7d26c810d2fd@postgrespro.ru>

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

This inbox is served by DDX for PostgreSQL; see mirroring instructions
for how to clone and mirror all data and code used for this inbox