Re: standby recovery fails (tablespace related) (tentative patch and discussion)
Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
From: Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp>
To: pguo@pivotal.io
Cc: apraveen@pivotal.io, pgsql-hackers@postgresql.org
Date: 2019-04-24T08:13:54Z
Lists: pgsql-hackers
Attachments
Mmm. I posted to wrong thread. Sorry. At Tue, 23 Apr 2019 16:39:49 +0900 (Tokyo Standard Time), Kyotaro HORIGUCHI <horiguchi.kyotaro@lab.ntt.co.jp> wrote in <20190423.163949.36763221.horiguchi.kyotaro@lab.ntt.co.jp> > At Tue, 23 Apr 2019 13:31:58 +0800, Paul Guo <pguo@pivotal.io> wrote in <CAEET0ZEcwz57z2yfWRds43b3TfQPPDSWmbjGmD43xRxLT41NDg@mail.gmail.com> > > Hi Kyotaro, ignoring the MakePGDirectory() failure will fix this database > > create redo error, but I suspect some other kind of redo, which depends on > > the files under the directory (they are not copied since the directory is > > not created) and also cannot be covered by the invalid page mechanism, > > could fail. Thanks. > > If recovery starts from just after tablespace creation, that's > simple. The Symlink to the removed tablespace is already removed > in the case. Hence server innocently create files directly under > pg_tblspc, not in the tablespace. Finally all files that were > supposed to be created in the removed tablespace are removed > later in recovery. > > If recovery starts from recalling page in a file that have been > in the tablespace, XLogReadBufferExtended creates one (perhaps > directly in pg_tblspc as described above) and the files are > removed later in recoery the same way to above. This case doen't > cause FATAL/PANIC during recovery even in master. > > XLogReadBufferExtended@xlogutils.c > | * Create the target file if it doesn't already exist. This lets us cope > | * if the replay sequence contains writes to a relation that is later > | * deleted. (The original coding of this routine would instead suppress > | * the writes, but that seems like it risks losing valuable data if the > | * filesystem loses an inode during a crash. Better to write the data > | * until we are actually told to delete the file.) > > So buffered access cannot be a problem for the reason above. The > remaining possible issue is non-buffered access to files in > removed tablespaces. This is what I mentioned upthread: > > me> but I haven't checked this covers all places where need the same > me> treatment. RM_DBASE_ID is fixed by the patch. XLOG/XACT/CLOG/MULTIXACT/RELMAP/STANDBY/COMMIT_TS/REPLORIGIN/LOGICALMSG: - are not relevant. HEAP/HEAP2/BTREE/HASH/GIN/GIST/SEQ/SPGIST/BRIN/GENERIC: - Resources works on buffer is not affected. SMGR: - Both CREATE and TRUNCATE seems fine. TBLSPC: - We don't nest tablespace directories. No Problem. I don't find a similar case. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Improve recently-added test reliability
- ad0e08394746 10.22 landed
- 9d5c96d9be64 14.5 landed
- 8c5d9ccca967 13.8 landed
- 782e5631e5dd 12.12 landed
- 772e6383d1da 11.17 landed
- 6c1c9f88ad54 16.0 landed
- 6390bc740f90 15.0 landed
-
Fix new recovery test for log_error_verbosity=verbose case
- b998196bb59a 16.0 cited
-
Fix test instability
- fcd72cf295c3 11.17 landed
- 7cfe688dee86 13.8 landed
- 798d64488ca9 15.0 landed
- 6ffaf75a8001 10.22 landed
- 658e5d53459f 12.12 landed
- 59be1c942a47 16.0 landed
- 4d8d85740c02 14.5 landed
-
Fix replay of create database records on standby
- 9e4f914b5eba 16.0 landed
- a3aacb7cbfc7 14.5 landed
- 9a7e26b9c2ac 13.8 landed
- 8348413dbded 15.0 landed
- 6d20f8c5a46a 12.12 landed
- 5a10c262fc60 11.17 landed
- 084318c33a1f 10.22 landed
- ffd28516e699 14.3 landed
- 50e3ed8e9172 13.7 landed
- 49d9cfc68bf4 15.0 landed
-
Allow "in place" tablespaces.
- 961cab0a5a90 14.5 landed
- 16e7a8fd8e97 13.8 landed
- ca347f5433ed 12.12 landed
- 7bdbbb87340f 10.22 landed
- 258c896418bf 11.17 landed
-
Fix get_dirent_type() for Windows junction points.
- fee0165fc1cf 14.5 landed
- 6d306ab73168 15.0 landed
- 9d3444dcce4d 16.0 landed
-
Revert "Fix replay of create database records on standby"
- bf902c13930c 15.0 landed
- adc943b4e1fe 14.3 landed
- a54ed2de80ec 13.7 landed
-
Add end-to-end testing of pg_basebackup's tar-format output.
- 081876d75ea1 14.0 cited
-
Make DROP DATABASE command generate less WAL records.
- e6d8069522c8 13.0 cited
-
Consolidate methods for translating a Perl path to a Windows path.
- 660a2b19038b 12.0 cited