From: | "MauMau" <maumau307(at)gmail(dot)com> |
---|---|
To: | "Amit Kapila" <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | "Asif Naeem" <anaeem(dot)it(at)gmail(dot)com>, "Andrew Dunstan" <andrew(at)dunslane(dot)net>, "pgsql-hackers" <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: [bug fix] PostgreSQL fails to start on Windows if it crashes after tablespace creation |
Date: | 2014-03-24 14:19:29 |
Message-ID: | 48E2E45C0A7446D1AF4757B66B2D2D8B@maumau |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
From: "Amit Kapila" <amit(dot)kapila16(at)gmail(dot)com>
> 1. Assume a tablespace tbs already exists.
> 2. Create table t1(c1 int) tablespace tbs;
> 3. drop table t1;
> 4. Drop tablespace tbs;
> 5. Do immediate shutdown (pg_ctl stop -mi);
> 6. During recovery it will create a table in directory (in function
> TablespaceCreateDbspace) which needs to be removed by
> destroy_tablespace_directories().
>
> I am neither aware of, nor could think of such a case for
> create_tablespace_directories(). Do you have any such case in mind
> which I might be missing?
A bit contrived example is:
1. After the directory is created by TablespaceCreateDbspace(), recovery is
stopped (e.g. due to power outage). The directory remains.
2. Restart the server, redoing CREATE TABLESPACE during recovery, which
executes create_tablespace_directories().
> By saying above, I don't mean that your current patch has any
> problem; even if there is no such scenario, I think your code is
> right as stat/isdir check seems to be okay to identify junction
> points and it avoids ifdef WIN32 check (which I personally think
> is bit annoying and we should try to avoid such code unless it
> is must or provides any significant advantage).
I think so, too.
Regards
MauMau
From | Date | Subject | |
---|---|---|---|
Next Message | Bruce Momjian | 2014-03-24 16:03:06 | Re: Useless "Replica Identity: NOTHING" noise from psql \d |
Previous Message | Tom Lane | 2014-03-24 14:14:26 | Re: Only first XLogRecData is visible to rm_desc with WAL_DEBUG |