On Mon, Jan 27, 2014 at 03:45:38PM +0100, Magnus Hagander wrote:
> On Mon, Jan 27, 2014 at 3:43 PM, Robert Haas <robertmh...@gmail.com> wrote:
> 
>     On Sun, Jan 26, 2014 at 1:03 PM, Andres Freund <and...@2ndquadrant.com>
>     wrote:
>     > For some reason CheckForStandbyTrigger() doesn't report permission
>     > errors when stat()int the trigger file. Shouldn't we fix that?
>     >
>     > static bool
>     > CheckForStandbyTrigger(void)
>     > {
>     > ...
>     >         if (stat(TriggerFile, &stat_buf) == 0)
>     >         {
>     >                 ereport(LOG,
>     >                                 (errmsg("trigger file found: %s",
>     TriggerFile)));
>     >                 unlink(TriggerFile);
>     >                 triggered = true;
>     >                 fast_promote = true;
>     >                 return true;
>     >         }
>     >
>     > Imo the stat() should warn about all errors but ENOENT?
> 
>     Seems reasonable.  It could lead to quite a bit of log spam, I
>     suppose, but the way things are now could be pretty mystifying if
>     you've located your trigger file somewhere outside $PGDATA, and a
>     parent directory is lacking permissions.
> 
> 
> +1. Since it actually indicates something that's quite broken (since with that
> you can never make the trigger work until you fix it), the log spam seems like
> it would be appropriate. (Logspam is never nice, but a single log line is also
> very easy to miss - this should log enough that you wouldn't) 

I have developed the attached patch to address this issue.

-- 
  Bruce Momjian  <br...@momjian.us>        http://momjian.us
  EnterpriseDB                             http://enterprisedb.com

  + Everyone has their own god. +
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
new file mode 100644
index 0106cdf..88ad51f
*** a/src/backend/access/transam/xlog.c
--- b/src/backend/access/transam/xlog.c
*************** CheckForStandbyTrigger(void)
*** 11102,11107 ****
--- 11102,11113 ----
  		fast_promote = true;
  		return true;
  	}
+ 	else if (errno != ENOENT)
+ 		ereport(ERROR,
+ 				(errcode_for_file_access(),
+ 				 errmsg("could not stat trigger file \"%s\": %m",
+ 						TriggerFile)));
+ 
  	return false;
  }
  
-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers

Reply via email to