mirror of https://github.com/postgres/postgres
Fix some BufFileRead() error reporting
Remove "%m" from error messages where errno would be bogus. Add short
read byte counts where appropriate.
This is equivalent to what was done in
7897e3bb90
, but some code was apparently
developed concurrently to that and not updated accordingly.
Reviewed-by: Amit Kapila <amit.kapila16@gmail.com>
Discussion: https://www.postgresql.org/message-id/flat/f3501945-c591-8cc3-5ef0-b72a2e0eaa9c@enterprisedb.com
This commit is contained in:
parent
9a740f81eb
commit
1561612e3b
|
@ -371,7 +371,8 @@ SendBackupManifest(backup_manifest_info *manifest, bbsink *sink)
|
||||||
if (rc != bytes_to_read)
|
if (rc != bytes_to_read)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not read from temporary file: %m")));
|
errmsg("could not read from temporary file: read only %zu of %zu bytes",
|
||||||
|
rc, bytes_to_read)));
|
||||||
bbsink_manifest_contents(sink, bytes_to_read);
|
bbsink_manifest_contents(sink, bytes_to_read);
|
||||||
manifest_bytes_done += bytes_to_read;
|
manifest_bytes_done += bytes_to_read;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2063,7 +2063,7 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
||||||
nchanges = 0;
|
nchanges = 0;
|
||||||
while (true)
|
while (true)
|
||||||
{
|
{
|
||||||
int nbytes;
|
size_t nbytes;
|
||||||
int len;
|
int len;
|
||||||
|
|
||||||
CHECK_FOR_INTERRUPTS();
|
CHECK_FOR_INTERRUPTS();
|
||||||
|
@ -2079,8 +2079,8 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
||||||
if (nbytes != sizeof(len))
|
if (nbytes != sizeof(len))
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not read from streaming transaction's changes file \"%s\": %m",
|
errmsg("could not read from streaming transaction's changes file \"%s\": read only %zu of %zu bytes",
|
||||||
path)));
|
path, nbytes, sizeof(len))));
|
||||||
|
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
elog(ERROR, "incorrect length %d in streaming transaction's changes file \"%s\"",
|
elog(ERROR, "incorrect length %d in streaming transaction's changes file \"%s\"",
|
||||||
|
@ -2090,11 +2090,12 @@ apply_spooled_messages(FileSet *stream_fileset, TransactionId xid,
|
||||||
buffer = repalloc(buffer, len);
|
buffer = repalloc(buffer, len);
|
||||||
|
|
||||||
/* and finally read the data into the buffer */
|
/* and finally read the data into the buffer */
|
||||||
if (BufFileRead(stream_fd, buffer, len) != len)
|
nbytes = BufFileRead(stream_fd, buffer, len);
|
||||||
|
if (nbytes != len)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not read from streaming transaction's changes file \"%s\": %m",
|
errmsg("could not read from streaming transaction's changes file \"%s\": read only %zu of %zu bytes",
|
||||||
path)));
|
path, nbytes, (size_t) len)));
|
||||||
|
|
||||||
BufFileTell(stream_fd, &fileno, &offset);
|
BufFileTell(stream_fd, &fileno, &offset);
|
||||||
|
|
||||||
|
@ -3992,6 +3993,7 @@ static void
|
||||||
subxact_info_read(Oid subid, TransactionId xid)
|
subxact_info_read(Oid subid, TransactionId xid)
|
||||||
{
|
{
|
||||||
char path[MAXPGPATH];
|
char path[MAXPGPATH];
|
||||||
|
size_t nread;
|
||||||
Size len;
|
Size len;
|
||||||
BufFile *fd;
|
BufFile *fd;
|
||||||
MemoryContext oldctx;
|
MemoryContext oldctx;
|
||||||
|
@ -4011,13 +4013,12 @@ subxact_info_read(Oid subid, TransactionId xid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* read number of subxact items */
|
/* read number of subxact items */
|
||||||
if (BufFileRead(fd, &subxact_data.nsubxacts,
|
nread = BufFileRead(fd, &subxact_data.nsubxacts, sizeof(subxact_data.nsubxacts));
|
||||||
sizeof(subxact_data.nsubxacts)) !=
|
if (nread != sizeof(subxact_data.nsubxacts))
|
||||||
sizeof(subxact_data.nsubxacts))
|
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not read from streaming transaction's subxact file \"%s\": %m",
|
errmsg("could not read from streaming transaction's subxact file \"%s\": read only %zu of %zu bytes",
|
||||||
path)));
|
path, nread, sizeof(subxact_data.nsubxacts))));
|
||||||
|
|
||||||
len = sizeof(SubXactInfo) * subxact_data.nsubxacts;
|
len = sizeof(SubXactInfo) * subxact_data.nsubxacts;
|
||||||
|
|
||||||
|
@ -4035,11 +4036,15 @@ subxact_info_read(Oid subid, TransactionId xid)
|
||||||
sizeof(SubXactInfo));
|
sizeof(SubXactInfo));
|
||||||
MemoryContextSwitchTo(oldctx);
|
MemoryContextSwitchTo(oldctx);
|
||||||
|
|
||||||
if ((len > 0) && ((BufFileRead(fd, subxact_data.subxacts, len)) != len))
|
if (len > 0)
|
||||||
|
{
|
||||||
|
nread = BufFileRead(fd, subxact_data.subxacts, len);
|
||||||
|
if (nread != len)
|
||||||
ereport(ERROR,
|
ereport(ERROR,
|
||||||
(errcode_for_file_access(),
|
(errcode_for_file_access(),
|
||||||
errmsg("could not read from streaming transaction's subxact file \"%s\": %m",
|
errmsg("could not read from streaming transaction's subxact file \"%s\": read only %zu of %zu bytes",
|
||||||
path)));
|
path, nread, len)));
|
||||||
|
}
|
||||||
|
|
||||||
BufFileClose(fd);
|
BufFileClose(fd);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue