Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jR0wR-0005S2-O6 for pgsql-bugs@arkaria.postgresql.org; Tue, 21 Apr 2020 22:00:31 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1jR0wQ-0005Xa-IA for pgsql-bugs@arkaria.postgresql.org; Tue, 21 Apr 2020 22:00:30 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jR0wQ-0005XK-7y for pgsql-bugs@lists.postgresql.org; Tue, 21 Apr 2020 22:00:30 +0000 Received: from mail.dalibo.com ([212.85.157.172]) by magus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1jR0wM-0000xd-Sg for pgsql-bugs@lists.postgresql.org; Tue, 21 Apr 2020 22:00:29 +0000 Received: from firost (larco.ioguix.net [82.66.0.6]) by mail.dalibo.com (Postfix) with ESMTPSA id CA5241FC66; Wed, 22 Apr 2020 00:00:22 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=dalibo.com; s=a; t=1587506422; bh=/AtZ72OS9ciuU5Z8vfhjrEkIBM/U2Fj8S6wRd5KdSPw=; h=Date:From:To:Cc:Subject:In-Reply-To:References:From; b=DSswue2vUTRchNRLGHjdPX+hgRhlTb7tAek4hCcAeqN35hvcsueEJyZN3D37acJwC Lq6DPjseauVqJPP63JJgMKsLyIXzGiGcWN7pByRxygtd8S+Zy7/ALiCDPbuBXQ1tPN SGfslRgLoWCs/pjQ8Ivh9cHSOwCdTyU9+8XrIESE= Date: Wed, 22 Apr 2020 00:00:22 +0200 From: Jehan-Guillaume de Rorthais To: Kyotaro Horiguchi Cc: michael@paquier.xyz, masao.fujii@oss.nttdata.com, pgsql-bugs@lists.postgresql.org Subject: Re: [BUG] non archived WAL removed during production crash recovery Message-ID: <20200422000022.7aa6a62b@firost> In-Reply-To: <20200421.150817.1089565975398030716.horikyota.ntt@gmail.com> References: <20200421021501.GE77439@paquier.xyz> <20200421.120925.76453535156648004.horikyota.ntt@gmail.com> <20200421045739.GC6436@paquier.xyz> <20200421.150817.1089565975398030716.horikyota.ntt@gmail.com> Organization: Dalibo MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Precedence: bulk On Tue, 21 Apr 2020 15:08:17 +0900 (JST) Kyotaro Horiguchi wrote: > At Tue, 21 Apr 2020 13:57:39 +0900, Michael Paquier > wrote in > > On Tue, Apr 21, 2020 at 12:09:25PM +0900, Kyotaro Horiguchi wrote: > > > + if (!XLogArchivingAlways() && > > > + GetRecoveryState() == RECOVERY_STATE_ARCHIVE) > > > > > > Is rewritten as > > > > > > + if (!XLogArchivingAlways() && > > > + GetDBState() > DB_IN_CRASH_RECOVERY) > > > > > > FWIW, what annoyed me is there are three variables that are quite > > > similar but has different domains, ControlFile->state, > > > XLogCtl->SharedRecoveryState, and LocalRecoveryInProgress. I didn't > > > mind there were two, but three seems a bit too many to me. In fact, my original goal [1] was to avoid adding another shared boolean related to the same topic. So I understand your feeling. I played with this idea again, based on your argument that there's no problem if the update to DB_IN_ARCHIVE_RECOVERY reaches checkpointer with some delay. The other point I feel bad with is to open and check the controlfile again and again for each segment to archive, even on running production instance. It's not that it would be heavy, but it feels overkill to fetch this information that should be available more easily. That leads me an idea where we would keep the ControlFile data up-to-date in shared memory. There's a few duplicates between ControlFile and XLogCtl, so maybe it could make the code a little simpler at some other places than just fixing $SUBJECT using DBState? I'm not sure of the implications and impacts though. This seems way bigger than the current fix and with many traps on the way. Maybe we could discuss this in another thread if you think it deserves it? Regards, [1] https://www.postgresql.org/message-id/flat/20200403182625.0fccc6fd%40firost#28a756094a4b1f3dd24927fb6311927d