Skip to content

Commit 7fbe1f8

Browse files
committed
[Issue #449] fix tests
1 parent d4f9aa3 commit 7fbe1f8

File tree

2 files changed

+15
-7
lines changed

2 files changed

+15
-7
lines changed

src/parsexlog.c

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1028,11 +1028,15 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10281028
GetXLogFileName(xlogfname, reader_data->tli, reader_data->xlogsegno, wal_seg_size);
10291029

10301030
/* obtain WAL archive subdir for ARCHIVE backup */
1031+
// TODO: move to separate function and rewrite it
10311032
if (reader_data->honor_subdirs)
10321033
{
10331034
char archive_subdir[MAXPGPATH];
10341035
get_archive_subdir(archive_subdir, wal_archivedir, xlogfname, SEGMENT);
10351036

1037+
/* default value for xlogpath for error message */
1038+
snprintf(reader_data->xlogpath, MAXPGPATH, "%s/%s", archive_subdir, xlogfname);
1039+
10361040
/* check existence of wal_dir/xlogid/segment.gz file ... */
10371041
snprintf(fullpath_gz, MAXPGPATH, "%s/%s.gz", archive_subdir, xlogfname);
10381042

@@ -1069,6 +1073,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
10691073
/* use directory as-is */
10701074
else
10711075
{
1076+
/* default value for xlogpath for error message */
1077+
snprintf(reader_data->xlogpath, MAXPGPATH, "%s/%s", wal_archivedir, xlogfname);
10721078
archive_dir:
10731079
#ifdef HAVE_LIBZ
10741080
/* ... failing that check existence of wal_dir/segment.gz ... */
@@ -1130,7 +1136,6 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11301136
elog(LOG, "Thread [%d]: Opening WAL segment \"%s\"",
11311137
reader_data->thread_num, reader_data->xlogpath);
11321138

1133-
reader_data->xlogexists = true;
11341139
reader_data->xlogfile = fio_open(reader_data->xlogpath,
11351140
O_RDONLY | PG_BINARY, FIO_LOCAL_HOST);
11361141

@@ -1141,6 +1146,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11411146
strerror(errno));
11421147
return -1;
11431148
}
1149+
else
1150+
reader_data->xlogexists = true;
11441151
}
11451152
#ifdef HAVE_LIBZ
11461153
/* Try to open compressed WAL segment */
@@ -1149,7 +1156,6 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11491156
elog(LOG, "Thread [%d]: Opening compressed WAL segment \"%s\"",
11501157
reader_data->thread_num, reader_data->gz_xlogpath);
11511158

1152-
reader_data->xlogexists = true;
11531159
reader_data->gz_xlogfile = fio_gzopen(reader_data->gz_xlogpath,
11541160
"rb", -1, FIO_LOCAL_HOST);
11551161
if (reader_data->gz_xlogfile == NULL)
@@ -1159,6 +1165,8 @@ SimpleXLogPageRead(XLogReaderState *xlogreader, XLogRecPtr targetPagePtr,
11591165
strerror(errno));
11601166
return -1;
11611167
}
1168+
else
1169+
reader_data->xlogexists = true;
11621170
}
11631171
#endif
11641172
/* Exit without error if WAL segment doesn't exist */

tests/validate.py

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1545,7 +1545,7 @@ def test_validate_corrupt_wal_1(self):
15451545
backup_id_2 = self.backup_node(backup_dir, 'node', node)
15461546

15471547
# Corrupt WAL
1548-
wals_dir = os.path.join(backup_dir, 'wal', 'node')
1548+
wals_dir = os.path.join(backup_dir, 'wal', 'node', '00000000')
15491549
wals = [f for f in os.listdir(wals_dir) if os.path.isfile(os.path.join(wals_dir, f)) and not f.endswith('.backup')]
15501550
wals.sort()
15511551
for wal in wals:
@@ -1610,7 +1610,7 @@ def test_validate_corrupt_wal_2(self):
16101610
target_xid = res[0][0]
16111611

16121612
# Corrupt WAL
1613-
wals_dir = os.path.join(backup_dir, 'wal', 'node')
1613+
wals_dir = os.path.join(backup_dir, 'wal', 'node', '00000000')
16141614
wals = [f for f in os.listdir(wals_dir) if os.path.isfile(os.path.join(wals_dir, f)) and not f.endswith('.backup')]
16151615
wals.sort()
16161616
for wal in wals:
@@ -1673,10 +1673,10 @@ def test_validate_wal_lost_segment_1(self):
16731673
backup_id = self.backup_node(backup_dir, 'node', node)
16741674

16751675
# Delete wal segment
1676-
wals_dir = os.path.join(backup_dir, 'wal', 'node')
1676+
wals_dir = os.path.join(backup_dir, 'wal', 'node', '00000000')
16771677
wals = [f for f in os.listdir(wals_dir) if os.path.isfile(os.path.join(wals_dir, f)) and not f.endswith('.backup')]
16781678
wals.sort()
1679-
file = os.path.join(backup_dir, 'wal', 'node', wals[-1])
1679+
file = os.path.join(wals_dir, wals[-1])
16801680
os.remove(file)
16811681

16821682
# cut out '.gz'
@@ -1778,7 +1778,7 @@ def test_validate_corrupt_wal_between_backups(self):
17781778
self.backup_node(backup_dir, 'node', node)
17791779

17801780
# Corrupt WAL
1781-
wals_dir = os.path.join(backup_dir, 'wal', 'node')
1781+
wals_dir = os.path.join(backup_dir, 'wal', 'node', '00000000')
17821782
with open(os.path.join(wals_dir, walfile), "rb+", 0) as f:
17831783
f.seek(9000)
17841784
f.write(b"b")

0 commit comments

Comments
 (0)