We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see ourdocumentation.
There was an error while loading.Please reload this page.
1 parent633b4b5 commit30845bfCopy full SHA for 30845bf
backup.c
@@ -230,6 +230,12 @@ do_backup_database(parray *backup_list, pgBackupOption bkupopt)
230
231
if (current.backup_mode==BACKUP_MODE_DIFF_PTRACK)
232
{
233
+XLogRecPtrptrack_lsn=get_last_ptrack_lsn();
234
+if (ptrack_lsn<prev_backup->start_lsn||ptrack_lsn >=current.start_lsn)
235
+elog(ERROR,"Wrong ptrack lsn:%lx prev:%lx current:%lx",
236
+ptrack_lsn,
237
+prev_backup->start_lsn,
238
+current.start_lsn);
239
parray_qsort(backup_files_list,pgFileComparePathDesc);
240
make_pagemap_from_ptrack(backup_files_list);
241
}
parsexlog.c
@@ -107,11 +107,9 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
107
108
XLogPageReadPrivate*private= (XLogPageReadPrivate*)xlogreader->private_data;
109
uint32targetPageOff;
110
-XLogRecPtrtargetSegEnd;
111
XLogSegNotargetSegNo;
112
113
XLByteToSeg(targetPagePtr,targetSegNo);
114
-XLogSegNoOffsetToRecPtr(targetSegNo+1,0,targetSegEnd);
115
targetPageOff=targetPagePtr %XLogSegSize;
116
117
/*
pg_arman.h
@@ -298,6 +298,7 @@ extern void time2iso(char *buf, size_t len, time_t time);
298
externconstchar*status2str(BackupStatusstatus);
299
externvoidremove_trailing_space(char*buf,intcomment_mark);
300
externvoidremove_not_digit(char*buf,size_tlen,constchar*str);
301
+externXLogRecPtrget_last_ptrack_lsn(void);
302
303
/* in status.c */
304
externboolis_pg_running(void);
util.c
@@ -75,6 +75,21 @@ sanityChecks(void)
75
"target master need to use either data checksums or \"wal_log_hints = on\".");
76
77
78
+XLogRecPtr
79
+get_last_ptrack_lsn(void)
80
+{
81
+char*buffer;
82
+size_tsize;
83
+XLogRecPtrlsn;
84
+
85
+buffer=slurpFile(pgdata,"global/ptrack_control",&size, false);
86
+if (buffer==NULL)
87
+return0;
88
89
+lsn=*(XLogRecPtr*)buffer;
90
+returnlsn;
91
+}
92
93
94
* Utility shared by backup and restore to fetch the current timeline
95
* used by a node.