Обсуждение: Annoying error messages in _dosmaperr
Hello,
I found that pg_resetxlog always prints the following message on Windows.
mapped win32 error code 2 to 2
Can we supress this annoying message? It seems to come from _dosmaperr,
but the error "postmaster.pid is not found" is a *normal* situation
in pg_resetxlog.
-> open("%s/postmaster.pid", O_RDONLY, 0) -> pgwin32_open() -> _dosmaperr() #ifndef FRONTEND
ereport(DEBUG5,...); #else fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno);
#endif
DEBUG5 means the messages are completely non-critical. Therefore, client
programs also don't need to report them, no? If possible, I'd like to
remove the #else block (or all of them) from the above routine.
(On the other hand, "unrecognized win32 error code" part should be there.)
Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center
ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> writes:
> Can we supress this annoying message? It seems to come from _dosmaperr,
> but the error "postmaster.pid is not found" is a *normal* situation
> in pg_resetxlog.
> -> open("%s/postmaster.pid", O_RDONLY, 0)
> -> pgwin32_open()
> -> _dosmaperr()
> #ifndef FRONTEND
> ereport(DEBUG5, ...);
> #else
> fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno);
> #endif
> DEBUG5 means the messages are completely non-critical. Therefore, client
> programs also don't need to report them, no? If possible, I'd like to
> remove the #else block (or all of them) from the above routine.
I suppose ideally we'd have some sort of debug-output switch on the
client side and code the #else branch like this
if (debug >= 5) fprintf(stderr, ...);
It's probably not worth the trouble to do that, but maybe we could just
have a FRONTEND_DEBUG compile time switch:
#ifndef FRONTEND ereport(DEBUG5, ...); #elif FRONTEND_DEBUG fprintf(stderr, _("mapped
win32error code %lu to %d"), e, errno); #endif
That would at least leave the code in place if anyone needed the
debugging output badly enough to do a custom build.
regards, tom lane
Tom Lane <tgl@sss.pgh.pa.us> wrote:
> It's probably not worth the trouble to do that, but maybe we could just
> have a FRONTEND_DEBUG compile time switch:
> That would at least leave the code in place if anyone needed the
> debugging output badly enough to do a custom build.
It would be a simplest solution.
I grep-ed sources with #ifndef FRONTEND and #ifdef FRONTEND,
but there are no other "DEBUG or stderr" codes. All other codes
are "WARNING/LOG or stderr", so I keep all of them as-is.
Index: src/port/win32error.c
===================================================================
--- src/port/win32error.c (HEAD)
+++ src/port/win32error.c (working copy)
@@ -180,7 +180,7 @@ ereport(DEBUG5, (errmsg_internal("mapped win32 error code %lu to %d",
e, errno)));
-#else
+#elif FRONTEND_DEBUG fprintf(stderr, _("mapped win32 error code %lu to %d"), e, errno);#endif
return;
Regards,
---
ITAGAKI Takahiro
NTT Open Source Software Center
ITAGAKI Takahiro <itagaki.takahiro@oss.ntt.co.jp> writes:
> I grep-ed sources with #ifndef FRONTEND and #ifdef FRONTEND,
> but there are no other "DEBUG or stderr" codes. All other codes
> are "WARNING/LOG or stderr", so I keep all of them as-is.
Looks good, applied.
regards, tom lane