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.
This commit is contained in:
Heikki Linnakangas 2015-04-15 23:13:32 +03:00
parent 41457fcf97
commit b5e560c246

View File

@ -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)