Re: BUG #15460: Error while creating index or constraint

Peter Geoghegan <pg@bowt.ie>

From: Peter Geoghegan <pg@bowt.ie>
To: paul.vanderlinden@mapcreator.eu
Cc: PostgreSQL mailing lists <pgsql-bugs@lists.postgresql.org>, Heikki Linnakangas <hlinnaka@iki.fi>, Thomas Munro <thomas.munro@enterprisedb.com>
Date: 2018-10-29T15:15:03Z
Lists: pgsql-bugs
On Mon, Oct 29, 2018 at 2:11 PM Peter Geoghegan <pg@bowt.ie> wrote:
> This first line looks like it might be interesting:
>
> LOG:  could not rmdir directory
> "base/pgsql_tmp/pgsql_tmp5088.0.sharedfileset": Directory not empty
> ERROR:  could not determine size of temporary file "0"

(Thomas Munro is CC'd here.)

> I suppose that this could actually just be a result of the ERROR; the
> exact order isn't a reliable indicator of the sequence of events
> across processes (A useful log_line_prefix setting might clear this up
> if you collect the trace_sort output again).

Hmm. So apparently Windows has a habit of setting an ENOTEMPTY errcode
when rmdir'ing a directory that somebody merely has a handle to. It
could just be that somebody has a Windows Explorer window open -- you
still get ENOTEMPTY [1]! Not sure if this is truly relevant to the
problem at hand, but it seems worth being aware of.

[1] https://github.com/gruntjs/grunt-contrib-clean/issues/66
-- 
Peter Geoghegan


Commits

  1. Have BufFileSize() ereport() on FileSize() failure.

  2. Use 64 bit type for BufFileSize().

  3. Adjust trace_sort log messages.

  4. Fix some sloppiness in the new BufFileSize() and BufFileAppend() functions.