@@ -511,6 +511,22 @@ do_backup_instance(void)
511511 pgBackupWriteBackupControlFile (& current );
512512 }
513513
514+ /*
515+ * It`s illegal to take PTRACK backup if LSN from ptrack_control() is not equal to
516+ * start_backup LSN of previous backup
517+ */
518+ if (current .backup_mode == BACKUP_MODE_DIFF_PTRACK )
519+ {
520+ XLogRecPtr ptrack_lsn = get_last_ptrack_lsn ();
521+
522+ if (ptrack_lsn > prev_backup -> stop_lsn || ptrack_lsn == InvalidXLogRecPtr )
523+ {
524+ elog (ERROR , "LSN from ptrack_control %lx differs from STOP LSN of previous backup %lx.\n"
525+ "Create new full backup before an incremental one." ,
526+ ptrack_lsn , prev_backup -> stop_lsn );
527+ }
528+ }
529+
514530 /* Clear ptrack files for FULL and PAGE backup */
515531 if (current .backup_mode != BACKUP_MODE_DIFF_PTRACK && is_ptrack_enable )
516532 pg_ptrack_clear ();
@@ -580,14 +596,6 @@ do_backup_instance(void)
580596
581597 if (current .backup_mode == BACKUP_MODE_DIFF_PTRACK )
582598 {
583- XLogRecPtr ptrack_lsn = get_last_ptrack_lsn ();
584-
585- if (ptrack_lsn > prev_backup -> stop_lsn || ptrack_lsn == InvalidXLogRecPtr )
586- {
587- elog (ERROR , "LSN from ptrack_control %lx differs from STOP LSN of previous backup %lx.\n"
588- "Create new full backup before an incremental one." ,
589- ptrack_lsn , prev_backup -> stop_lsn );
590- }
591599 parray_qsort (backup_files_list , pgFileComparePath );
592600 make_pagemap_from_ptrack (backup_files_list );
593601 }
0 commit comments