On Mon, 18 Nov 2019 at 17:52, Amit Kapila <amit.kapil...@gmail.com> wrote: > I have one more question regarding this patch. It seems to me that > the files opened via OpenTransientFile or OpenTemporaryFile are > automatically closed at transaction end(abort), but that doesn't seem > to be the case for files opened with PathNameOpenFile. See > AtEOXact_Files and AtEOSubXact_Files. So, now with the change > proposed by this patch, don't we need to deal it in some other way?
For the API's that use VFDs (like PathNameOpenFile), the files opened are always recorded in the VfdCache array. So it is not required to do the cleanup at (sub)transaction end, because the kernel fds get closed dynamically in ReleaseLruFiles() whenever they reach max_safe_fds limit. So if a transaction aborts, the fds might remain open, but those will get cleaned up whenever we require more fds, through ReleaseLruFiles(). Whereas, for files opened through OpenTransientFile(), VfdCache is not involved, so this needs transaction end cleanup. -- Thanks, -Amit Khandekar EnterpriseDB Corporation The Postgres Database Company