1. 12 Jul, 2021 1 commit
    • Michael Paquier's avatar
      Fix issues with Windows' stat() for files pending on deletion · de1510e2
      Michael Paquier authored
      The code introduced by bed90759 to enhance the stat() implementation on
      Windows for file sizes larger than 4GB fails to properly detect files
      pending for deletion with its method based on NtQueryInformationFile()
      or GetFileInformationByHandleEx(), as proved by Alexander Lakhin in a
      custom TAP test of his own.
      
      The method used in the implementation of open() to sleep and loop when
      when failing on ERROR_ACCESS_DENIED (EACCES) is showing much more
      stability, so switch to this method.  This could still lead to issues if
      the permission problem stays around for much longer than the timeout of
      1 second used, but that should (hopefully) never happen in
      performance-critical paths.  Still, there could be a point in increasing
      the timeouts for the sake of machines that handle heavy loads.
      
      Note that WIN32's open() now uses microsoft_native_stat() as it should
      be similar to stat() when working around issues with concurrent file
      deletions.
      
      I have spent some time testing this patch with pgbench in combination
      of the SQL functions from genfile.c, as well as running the TAP test
      provided on the thread with MSVC builds, and this looks much more
      stable than the previous method.
      
      Author: Alexander Lakhin
      Reviewed-by: Tom Lane, Michael Paquier,	Justin Pryzby
      Discussion: https://postgr.es/m/c3427edf-d7c0-ff57-90f6-b5de3bb62709@gmail.com
      Backpatch-through: 14
      de1510e2
  2. 02 Jan, 2021 1 commit
  3. 21 Oct, 2020 1 commit
  4. 12 Oct, 2020 1 commit
  5. 10 Oct, 2020 2 commits
  6. 09 Oct, 2020 1 commit