From: | Andres Freund <andres(at)anarazel(dot)de> |
---|---|
To: | pgsql-committers(at)postgresql(dot)org |
Subject: | pgsql: Add defenses against pre-crash files to BufFileOpenShared(). |
Date: | 2017-12-13 21:32:24 |
Message-ID: | E1ePEdc-0005cp-AI@gemulon.postgresql.org |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | 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(-)
From | Date | Subject | |
---|---|---|---|
Next Message | Andres Freund | 2017-12-13 21:37:54 | Re: pgsql: Provide overflow safe integer math inline functions. |
Previous Message | Robert Haas | 2017-12-13 21:21:13 | pgsql: Fix parallel index scan hang with deleted or half-dead pages. |