From: | Bruce Momjian <bruce(at)momjian(dot)us> |
---|---|
To: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
Cc: | pgsql-hackers(at)postgreSQL(dot)org |
Subject: | Re: Bogus error handling in pg_upgrade |
Date: | 2014-01-10 04:07:52 |
Message-ID: | 20140110040752.GC4873@momjian.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On Sun, Dec 29, 2013 at 12:25:04AM -0500, Tom Lane wrote:
> A credulous person might suppose that this chunk of code is designed
> to abort if pg_resetxlog fails:
>
> prep_status("Setting next transaction ID for new cluster");
> exec_prog(UTILITY_LOG_FILE, NULL, true,
> "\"%s/pg_resetxlog\" -f -x %u \"%s\"",
> new_cluster.bindir, old_cluster.controldata.chkpnt_nxtxid,
> new_cluster.pgdata);
> check_ok();
>
> In point of fact, it does no such thing, but blithely continues
> (even though pg_resetxlog has corrupted things horribly before failing).
Well, exec_prog() does this:
result = system(cmd);
if (result != 0)
So, is pg_resetxlog returning a zero value? I am guessing it is.
> check_ok() is particularly badly named, since it contains not one iota
> of error checking. misleadingly_claim_ok() would be a better name.
>
> If this isn't broken-by-design, I'd like an explanation why not.
It is probably because it came from initdb.c, but I always read check_ok
as report_ok. Should I rename it?
--
Bruce Momjian <bruce(at)momjian(dot)us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ Everyone has their own god. +
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2014-01-10 04:45:24 | Re: Planning time in explain/explain analyze |
Previous Message | Amit Kapila | 2014-01-10 04:06:38 | Re: ALTER SYSTEM SET command to change postgresql.conf parameters |