Re: parallel restore vs. windows
Andrew Dunstan <andrew@dunslane.net>
From: Andrew Dunstan <andrew@dunslane.net>
To: Andrew Chernow <ac@esilo.com>
Cc: PostgreSQL-development <pgsql-hackers@postgresql.org>
Date: 2008-12-09T17:36:40Z
Lists: pgsql-hackers
Andrew Chernow wrote: >> >> Parts of AH need deep cloning, notably the formatData member, which >> is done in _ReopenArchive(). >> > > Is it okay to clone this from within the thread? I don't see why not. > > The reopen() appears to mess with AH->FH, which mutltiple threads are > calling fclose on. The second thread is going to fail and the first > fclose() will close the main threads handle. > > + #ifndef WIN32 > + if (fclose(AH->FH) != 0) > + die_horribly(AH, modulename, "could not close archive file: > %s\n", > + strerror(errno)); > + #else > > How are things failing? Core dump, maybe you are seeing the above > error? The non-windows path is safe from this because a) it never > does an fclose and b) its a fork and has its own copy of the FH. No, as this fragment shows, fclose() is NOT called on Windows. The program dies with a nasty dialog box when restoring a dump of the regression database after the second COPY thread disconnects. cheers andrew