• Heikki Linnakangas's avatar
    On Windows, when a file is deleted and another process still has an open · 4e2d5efc
    Heikki Linnakangas authored
    file handle on it, the file goes into "pending deletion" state where it
    still shows up in directory listing, but isn't accessible otherwise. That
    confuses RemoveOldXLogFiles(), making it think that the file hasn't been
    archived yet, while it actually was, and it was deleted along with the .done
    file.
    
    Fix that by renaming the file with ".deleted" extension before deleting it.
    Also check the return value of rename() and unlink(), so that if the removal
    fails for any reason (e.g another process is holding the file locked), we
    don't delete the .done file until the WAL file is really gone.
    
    Backpatch to 8.2, which is the oldest version supported on Windows.
    4e2d5efc
xlog.c 240 KB