pgsql: Add defenses against pre-crash files to BufFileOpenShared().
От | Andres Freund |
---|---|
Тема | pgsql: Add defenses against pre-crash files to BufFileOpenShared(). |
Дата | |
Msg-id | E1ePEdc-0005cp-AI@gemulon.postgresql.org обсуждение исходный текст |
Список | pgsql-committers |
Add defenses against pre-crash files to BufFileOpenShared(). Crash restarts currently don't clean up temporary files, as a debugging aid. If a left-over file happens to have the same name as a segment file we're trying to create, we'll just truncate and reuse it, but there is a problem: BufFileOpenShared() determines how many segment files exist by trying to open .0, .1, .2, ... until it finds no more files. It might be confused by a junk file that has the next segment number. To defend against that, make sure we always create a gap after the end file by unlinking the following name if it exists. Also make it an error to try to open a BufFile that doesn't exist (has no segment 0), so as not to encourage the development of client code that depends on an interface that we can't reliably provide. Author: Thomas Munro Reviewed-By: Andres Freund Discussion: https://postgr.es/m/CAEepm%3D2jhCbC_GFQJaaDhWxLB4EXtT3vVd5czuRNaqF5CWSTog%40mail.gmail.com Branch ------ master Details ------- https://git.postgresql.org/pg/commitdiff/923e8dee88ada071fe41541e83f121ead4baf7f8 Modified Files -------------- src/backend/storage/file/buffile.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-)
В списке pgsql-committers по дате отправления: