aboutsummaryrefslogtreecommitdiff
path: root/src/backend/access/transam/twophase.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend/access/transam/twophase.c')
-rw-r--r--src/backend/access/transam/twophase.c40
1 files changed, 22 insertions, 18 deletions
diff --git a/src/backend/access/transam/twophase.c b/src/backend/access/transam/twophase.c
index e8d4e37fe30..0c99b336641 100644
--- a/src/backend/access/transam/twophase.c
+++ b/src/backend/access/transam/twophase.c
@@ -1219,6 +1219,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
uint32 crc_offset;
pg_crc32c calc_crc,
file_crc;
+ int r;
TwoPhaseFilePath(path, xid);
@@ -1228,8 +1229,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
if (give_warnings)
ereport(WARNING,
(errcode_for_file_access(),
- errmsg("could not open two-phase state file \"%s\": %m",
- path)));
+ errmsg("could not open file \"%s\": %m", path)));
return NULL;
}
@@ -1249,8 +1249,7 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
errno = save_errno;
ereport(WARNING,
(errcode_for_file_access(),
- errmsg("could not stat two-phase state file \"%s\": %m",
- path)));
+ errmsg("could not stat file \"%s\": %m", path)));
}
return NULL;
}
@@ -1277,7 +1276,8 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
buf = (char *) palloc(stat.st_size);
pgstat_report_wait_start(WAIT_EVENT_TWOPHASE_FILE_READ);
- if (read(fd, buf, stat.st_size) != stat.st_size)
+ r = read(fd, buf, stat.st_size);
+ if (r != stat.st_size)
{
int save_errno = errno;
@@ -1285,11 +1285,17 @@ ReadTwoPhaseFile(TransactionId xid, bool give_warnings)
CloseTransientFile(fd);
if (give_warnings)
{
- errno = save_errno;
- ereport(WARNING,
- (errcode_for_file_access(),
- errmsg("could not read two-phase state file \"%s\": %m",
- path)));
+ if (r < 0)
+ {
+ errno = save_errno;
+ ereport(WARNING,
+ (errcode_for_file_access(),
+ errmsg("could not read file \"%s\": %m", path)));
+ }
+ else
+ ereport(WARNING,
+ (errmsg("could not read file \"%s\": read %d of %zu",
+ path, r, stat.st_size)));
}
pfree(buf);
return NULL;
@@ -1632,8 +1638,7 @@ RemoveTwoPhaseFile(TransactionId xid, bool giveWarning)
if (errno != ENOENT || giveWarning)
ereport(WARNING,
(errcode_for_file_access(),
- errmsg("could not remove two-phase state file \"%s\": %m",
- path)));
+ errmsg("could not remove file \"%s\": %m", path)));
}
/*
@@ -1661,8 +1666,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
if (fd < 0)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not recreate two-phase state file \"%s\": %m",
- path)));
+ errmsg("could not recreate file \"%s\": %m", path)));
/* Write content and CRC */
pgstat_report_wait_start(WAIT_EVENT_TWOPHASE_FILE_WRITE);
@@ -1677,7 +1681,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
errno = save_errno ? save_errno : ENOSPC;
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not write two-phase state file: %m")));
+ errmsg("could not write file \"%s\": %m", path)));
}
if (write(fd, &statefile_crc, sizeof(pg_crc32c)) != sizeof(pg_crc32c))
{
@@ -1690,7 +1694,7 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
errno = save_errno ? save_errno : ENOSPC;
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not write two-phase state file: %m")));
+ errmsg("could not write file \"%s\": %m", path)));
}
pgstat_report_wait_end();
@@ -1707,14 +1711,14 @@ RecreateTwoPhaseFile(TransactionId xid, void *content, int len)
errno = save_errno;
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not fsync two-phase state file: %m")));
+ errmsg("could not fsync file \"%s\": %m", path)));
}
pgstat_report_wait_end();
if (CloseTransientFile(fd) != 0)
ereport(ERROR,
(errcode_for_file_access(),
- errmsg("could not close two-phase state file: %m")));
+ errmsg("could not close file \"%s\": %m", path)));
}
/*