Thread: 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. +