Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Report exit code from external recovery commands properly
authorPeter Eisentraut <peter_e@gmx.net>
Wed, 13 Nov 2013 11:38:18 +0000 (06:38 -0500)
committerPeter Eisentraut <peter_e@gmx.net>
Tue, 3 Dec 2013 03:31:05 +0000 (22:31 -0500)
When an external recovery command such as restore_command or
archive_cleanup_command fails, report the exit code properly,
distinguishing signals and normal exists, using the existing
wait_result_to_str() facility, instead of just reporting the return
value from system().

Reviewed-by: Peter Geoghegan <pg@heroku.com>
src/backend/access/transam/xlogarchive.c

index 342975c7b642fe91f58924f5820b15812873199f..be95684a5af2ad648b535627dec81b60c0b7aba8 100644 (file)
@@ -300,8 +300,8 @@ RestoreArchivedFile(char *path, const char *xlogfname,
    signaled = WIFSIGNALED(rc) || WEXITSTATUS(rc) > 125;
 
    ereport(signaled ? FATAL : DEBUG2,
-       (errmsg("could not restore file \"%s\" from archive: return code %d",
-               xlogfname, rc)));
+       (errmsg("could not restore file \"%s\" from archive: %s",
+               xlogfname, wait_result_to_str(rc))));
 
 not_available:
 
@@ -410,9 +410,10 @@ ExecuteRecoveryCommand(char *command, char *commandName, bool failOnSignal)
        ereport((signaled && failOnSignal) ? FATAL : WARNING,
        /*------
           translator: First %s represents a recovery.conf parameter name like
-         "recovery_end_command", and the 2nd is the value of that parameter. */
-               (errmsg("%s \"%s\": return code %d", commandName,
-                       command, rc)));
+         "recovery_end_command", the 2nd is the value of that parameter, the
+         third an already translated error message. */
+               (errmsg("%s \"%s\": %s", commandName,
+                       command, wait_result_to_str(rc))));
    }
 }