PathNameCreateTemporaryDir() vs concurrency

From: Thomas Munro <thomas(dot)munro(at)enterprisedb(dot)com>
To: Pg Hackers <pgsql-hackers(at)postgresql(dot)org>
Cc: Andres Freund <andres(at)anarazel(dot)de>
Subject: PathNameCreateTemporaryDir() vs concurrency
Date: 2017-12-26 11:11:22
Message-ID: CAEepm=1Vp1e3KtftLtw4B60ZV9teNeKu6HxoaaBptQMsRWjJbQ@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

Hi hackers,

While testing parallel hash join today, I saw a couple of errors like this:

2017-12-26 23:34:37.402 NZDT [13082] ERROR: cannot create temporary
subdirectory "base/pgsql_tmp/pgsql_tmp13080.0.sharedfileset": File
exists

There is a thinko in PathNameCreateTemporaryDir(), a new function
added in commit dc6c4c9d. It was designed to tolerate directories
existing already but forgot to handle it in the third mkdir call, so
it fails with unlucky timing. Please see attached.

--
Thomas Munro
http://www.enterprisedb.com

Attachment Content-Type Size
fix-named-tempdir-create.patch application/octet-stream 1.0 KB

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Tels 2017-12-26 11:18:47 Re: [HACKERS] Replication status in logical replication
Previous Message Daniel Verite 2017-12-26 11:03:54 Re: General purpose hashing func in pgbench