@@ -789,7 +789,7 @@ catalog_get_backup_list(const char *instance_name, time_t requested_backup_id)
789789 }
790790 else if (strcmp (base36enc (backup -> start_time ), data_ent -> d_name ) != 0 )
791791 {
792- elog (VERBOSE , "backup ID in control file \"%s\" doesn't match name of the backup folder \"%s\"" ,
792+ elog (WARNING , "backup ID in control file \"%s\" doesn't match name of the backup folder \"%s\"" ,
793793 base36enc (backup -> start_time ), backup_conf_path );
794794 }
795795
@@ -1952,7 +1952,7 @@ pin_backup(pgBackup *target_backup, pgSetBackupParams *set_backup_params)
19521952 {
19531953 char expire_timestamp [100 ];
19541954
1955- time2iso (expire_timestamp , lengthof (expire_timestamp ), target_backup -> expire_time );
1955+ time2iso (expire_timestamp , lengthof (expire_timestamp ), target_backup -> expire_time , false );
19561956 elog (INFO , "Backup %s is pinned until '%s'" , base36enc (target_backup -> start_time ),
19571957 expire_timestamp );
19581958 }
@@ -2003,7 +2003,7 @@ add_note(pgBackup *target_backup, char *note)
20032003 * Write information about backup.in to stream "out".
20042004 */
20052005void
2006- pgBackupWriteControl (FILE * out , pgBackup * backup )
2006+ pgBackupWriteControl (FILE * out , pgBackup * backup , bool utc )
20072007{
20082008 char timestamp [100 ];
20092009
@@ -2035,27 +2035,27 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
20352035 (uint32 ) (backup -> stop_lsn >> 32 ),
20362036 (uint32 ) backup -> stop_lsn );
20372037
2038- time2iso (timestamp , lengthof (timestamp ), backup -> start_time );
2038+ time2iso (timestamp , lengthof (timestamp ), backup -> start_time , utc );
20392039 fio_fprintf (out , "start-time = '%s'\n" , timestamp );
20402040 if (backup -> merge_time > 0 )
20412041 {
2042- time2iso (timestamp , lengthof (timestamp ), backup -> merge_time );
2042+ time2iso (timestamp , lengthof (timestamp ), backup -> merge_time , utc );
20432043 fio_fprintf (out , "merge-time = '%s'\n" , timestamp );
20442044 }
20452045 if (backup -> end_time > 0 )
20462046 {
2047- time2iso (timestamp , lengthof (timestamp ), backup -> end_time );
2047+ time2iso (timestamp , lengthof (timestamp ), backup -> end_time , utc );
20482048 fio_fprintf (out , "end-time = '%s'\n" , timestamp );
20492049 }
20502050 fio_fprintf (out , "recovery-xid = " XID_FMT "\n" , backup -> recovery_xid );
20512051 if (backup -> recovery_time > 0 )
20522052 {
2053- time2iso (timestamp , lengthof (timestamp ), backup -> recovery_time );
2053+ time2iso (timestamp , lengthof (timestamp ), backup -> recovery_time , utc );
20542054 fio_fprintf (out , "recovery-time = '%s'\n" , timestamp );
20552055 }
20562056 if (backup -> expire_time > 0 )
20572057 {
2058- time2iso (timestamp , lengthof (timestamp ), backup -> expire_time );
2058+ time2iso (timestamp , lengthof (timestamp ), backup -> expire_time , utc );
20592059 fio_fprintf (out , "expire-time = '%s'\n" , timestamp );
20602060 }
20612061
@@ -2109,29 +2109,29 @@ pgBackupWriteControl(FILE *out, pgBackup *backup)
21092109void
21102110write_backup (pgBackup * backup , bool strict )
21112111{
2112- FILE * fp_out = NULL ;
2112+ FILE * fp = NULL ;
21132113 char path [MAXPGPATH ];
21142114 char path_temp [MAXPGPATH ];
21152115 char buf [8192 ];
21162116
21172117 join_path_components (path , backup -> root_dir , BACKUP_CONTROL_FILE );
21182118 snprintf (path_temp , sizeof (path_temp ), "%s.tmp" , path );
21192119
2120- fp_out = fopen (path_temp , PG_BINARY_W );
2121- if (fp_out == NULL )
2120+ fp = fopen (path_temp , PG_BINARY_W );
2121+ if (fp == NULL )
21222122 elog (ERROR , "Cannot open control file \"%s\": %s" ,
21232123 path_temp , strerror (errno ));
21242124
21252125 if (chmod (path_temp , FILE_PERMISSION ) == -1 )
21262126 elog (ERROR , "Cannot change mode of \"%s\": %s" , path_temp ,
21272127 strerror (errno ));
21282128
2129- setvbuf (fp_out , buf , _IOFBF , sizeof (buf ));
2129+ setvbuf (fp , buf , _IOFBF , sizeof (buf ));
21302130
2131- pgBackupWriteControl (fp_out , backup );
2131+ pgBackupWriteControl (fp , backup , true );
21322132
21332133 /* Ignore 'out of space' error in lax mode */
2134- if (fflush (fp_out ) != 0 )
2134+ if (fflush (fp ) != 0 )
21352135 {
21362136 int elevel = ERROR ;
21372137 int save_errno = errno ;
@@ -2144,17 +2144,18 @@ write_backup(pgBackup *backup, bool strict)
21442144
21452145 if (!strict && (save_errno == ENOSPC ))
21462146 {
2147- fclose (fp_out );
2147+ fclose (fp );
2148+ fio_unlink (path_temp , FIO_BACKUP_HOST );
21482149 return ;
21492150 }
21502151 }
21512152
2152- if (fsync ( fileno ( fp_out )) < 0 )
2153- elog (ERROR , "Cannot sync control file \"%s\": %s" ,
2153+ if (fclose ( fp ) != 0 )
2154+ elog (ERROR , "Cannot close control file \"%s\": %s" ,
21542155 path_temp , strerror (errno ));
21552156
2156- if (fclose ( fp_out ) != 0 )
2157- elog (ERROR , "Cannot close control file \"%s\": %s" ,
2157+ if (fio_sync ( path_temp , FIO_BACKUP_HOST ) < 0 )
2158+ elog (ERROR , "Cannot sync control file \"%s\": %s" ,
21582159 path_temp , strerror (errno ));
21592160
21602161 if (rename (path_temp , path ) < 0 )
0 commit comments