pg_archivecleanup debug message consistency
pg_archivecleanup -d (=verbose/DEBUG mode) mainly emits 2 types of messages:
pg_archivecleanup: keep WAL file "000000010000000000000002" and later
and:
pg_archivecleanup: removing file
"/var/data2/pg_stuff/dump/hotprime/replication_archive/00000001000000000000001B"
I found it a bit annoying to not see the full path in the 'keep WAL file'-message (esp. when it is
repeated many screenfulls).
If only for consistency, this patch adds the path info to that message.
Erik Rijkers
Attachments:
pg_archivecleanup.c.difftext/x-patch; name=pg_archivecleanup.c.diffDownload
--- contrib/pg_archivecleanup/pg_archivecleanup.c.orig 2010-08-22 00:05:06.000000000 +0200
+++ contrib/pg_archivecleanup/pg_archivecleanup.c 2010-08-21 23:56:47.000000000 +0200
@@ -308,8 +308,15 @@
SetWALFileNameForCleanup();
if (debug)
+ {
+#ifdef WIN32
+ snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, exclusiveCleanupFileName);
+#else
+ snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, exclusiveCleanupFileName);
+#endif
fprintf(stderr, "%s: keep WAL file \"%s\" and later\n",
- progname, exclusiveCleanupFileName);
+ progname, WALFilePath);
+ }
/*
* Remove WAL files older than cut-off"Erik Rijkers" <er@xs4all.nl> writes:
If only for consistency, this patch adds the path info to that message.
Seems reasonable, but speaking of consistency:
+#ifdef WIN32 + snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, exclusiveCleanupFileName); +#else + snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, exclusiveCleanupFileName); +#endif
I see that you copied-and-pasted this pattern from somewhere else in
pg_archivecleanup.c, but I'd like to argue that it's out of place there
too. We don't go out of our way to show Windows paths with backslashes
anywhere in the core code, so why is pg_archivecleanup doing it? I
think we should just drop the ifdef and do %s/%s always.
regards, tom lane
On Sun, August 22, 2010 17:54, Tom Lane wrote:
"Erik Rijkers" <er@xs4all.nl> writes:
If only for consistency, this patch adds the path info to that message.
Seems reasonable, but speaking of consistency:
+#ifdef WIN32 + snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, exclusiveCleanupFileName); +#else + snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, exclusiveCleanupFileName); +#endifI see that you copied-and-pasted this pattern from somewhere else in
pg_archivecleanup.c, but I'd like to argue that it's out of place there
too. We don't go out of our way to show Windows paths with backslashes
anywhere in the core code, so why is pg_archivecleanup doing it? I
think we should just drop the ifdef and do %s/%s always.
yes, I agree that's better; attached is that change.
And it works fine on linux; but I am not in a position to try it on windows.
Erik Rijkers
Attachments:
pg_archivecleanup.c.difftext/x-patch; name=pg_archivecleanup.c.diffDownload
--- contrib/pg_archivecleanup/pg_archivecleanup.c.orig 2010-08-22 18:31:03.000000000 +0200
+++ contrib/pg_archivecleanup/pg_archivecleanup.c 2010-08-22 18:33:12.000000000 +0200
@@ -117,12 +117,7 @@
strspn(xlde->d_name, "0123456789ABCDEF") == XLOG_DATA_FNAME_LEN &&
strcmp(xlde->d_name + 8, exclusiveCleanupFileName + 8) < 0)
{
-#ifdef WIN32
- snprintf(WALFilePath, MAXPGPATH, "%s\\%s", archiveLocation, xlde->d_name);
-#else
snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, xlde->d_name);
-#endif
-
if (debug)
fprintf(stderr, "%s: removing file \"%s\"\n",
progname, WALFilePath);
@@ -308,8 +303,10 @@
SetWALFileNameForCleanup();
if (debug)
- fprintf(stderr, "%s: keep WAL file \"%s\" and later\n",
- progname, exclusiveCleanupFileName);
+ {
+ snprintf(WALFilePath, MAXPGPATH, "%s/%s", archiveLocation, exclusiveCleanupFileName);
+ fprintf(stderr, "%s: keep WAL file \"%s\" and later\n", progname, WALFilePath);
+ }
/*
* Remove WAL files older than cut-off