From: Heikki Linnakangas Date: Wed, 15 Apr 2015 20:13:32 +0000 (+0300) Subject: Error out in pg_rewind if lstat() fails. X-Git-Tag: REL9_5_ALPHA1~435 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=b5e560c24603e5325a81055c8f36cc45d48609e4;p=postgresql Error out in pg_rewind if lstat() fails. A "file not found" is expected if the source server is running, so don't complain about that. But any other error is definitely not expected. --- diff --git a/src/bin/pg_rewind/copy_fetch.c b/src/bin/pg_rewind/copy_fetch.c index 887fec9c9d..397bf204f9 100644 --- a/src/bin/pg_rewind/copy_fetch.c +++ b/src/bin/pg_rewind/copy_fetch.c @@ -75,17 +75,20 @@ recurse_dir(const char *datadir, const char *parentpath, if (lstat(fullpath, &fst) < 0) { - pg_log(PG_WARNING, "could not stat file \"%s\": %s", - fullpath, strerror(errno)); - - /* - * This is ok, if the new master is running and the file was just - * removed. If it was a data file, there should be a WAL record of - * the removal. If it was something else, it couldn't have been - * critical anyway. - * - * TODO: But complain if we're processing the target dir! - */ + if (errno == ENOENT) + { + /* + * File doesn't exist anymore. This is ok, if the new master + * is running and the file was just removed. If it was a data + * file, there should be a WAL record of the removal. If it + * was something else, it couldn't have been anyway. + * + * TODO: But complain if we're processing the target dir! + */ + } + else + pg_fatal("could not stat file \"%s\": %s", + fullpath, strerror(errno)); } if (parentpath)