Обсуждение: pg_dump -Fd fails to detect ENOSPC
pg_dump -Fc works correctly, but -Fd does not detect out of disk space
condition (even if --jobs is not specified). Client and server version 9.3.5.
sudo lvcreate -L 1M -n full data
sudo mkfs.ext3 -j -m0 /dev/data/full
sudo mkdir /srv/full
sudo mount /dev/data/full /srv/full
sudo chown postgres: /srv/full
sudo -u postgres strace -xs3 pg_dump -t 'a*' ts -Fd -f /srv/full/x
[...]
write(4, "\x64\x63\x81"..., 1024) = 1024
write(4, "\x40\x58\xd7"..., 15360) = 7168
write(4, "\x8f\x71\xad"..., 8192) = -1 ENOSPC (No space left on device)
write(4, "\x35\x33\xe7"..., 1024) = 1024
write(4, "\xd7\xe4\x0e"..., 15360) = -1 ENOSPC (No space left on device)
write(4, "\x35\x33\xe7"..., 1024) = -1 ENOSPC (No space left on device)
write(4, "\x35\x33\xe7"..., 1024) = -1 ENOSPC (No space left on device)
poll([{fd=3, events=POLLIN|POLLERR}], 1, -1) = 1 ([{fd=3, revents=POLLIN}])
recvfrom(3, "YST"..., 24430, 0, NULL, NULL) = 24430
write(4, "\x35\x33\xe7"..., 1024) = -1 ENOSPC (No space left on device)
write(4, "\x35\x33\xe7"..., 1024) = -1 ENOSPC (No space left on device)
write(4, "\x35\x33\xe7"..., 1024) = -1 ENOSPC (No space left on device)
[...]
Seems to be a simple unchecked return value...I'm testing with this, but won't
endeavor to propose a formal patch.
pg_dump.c
if (copybuf)
{
int ret2;
ret2=WriteData(fout, copybuf, ret);
if (ret!=ret2) {
exit_horribly(NULL, "error writing, (%d %d)\n", ret, ret2);
}
PQfreemem(copybuf);
}
Justin Pryzby <pryzby@telsasoft.com> writes:
> pg_dump -Fc works correctly, but -Fd does not detect out of disk space
> condition (even if --jobs is not specified). Client and server version 9.3.5.
I believe this was dealt with by Bruce in commit 14ea89366, which
will appear in 9.4. Arguably that was a back-patchable bug fix, but
the patch seemed a bit large to risk back-patching.
regards, tom lane
On Wed, Sep 17, 2014 at 09:16:51AM -0700, Tom Lane wrote: > Justin Pryzby <pryzby@telsasoft.com> writes: > > pg_dump -Fc works correctly, but -Fd does not detect out of disk space > > condition (even if --jobs is not specified). Client and server version 9.3.5. > > I believe this was dealt with by Bruce in commit 14ea89366, which > will appear in 9.4. Arguably that was a back-patchable bug fix, but > the patch seemed a bit large to risk back-patching. Yeah, that and the lack of complaints about the problem discouraged backpatching this. -- Bruce Momjian <bruce@momjian.us> http://momjian.us EnterpriseDB http://enterprisedb.com + Everyone has their own god. +