Re: fix pg_mkdir_p to tolerate concurrent directory creation
Álvaro Herrera <alvherre@kurilemu.de>
From: Álvaro Herrera <alvherre@kurilemu.de>
To: Andrew Dunstan <andrew@dunslane.net>
Cc: PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>
Date: 2026-06-19T14:01:47Z
Lists: pgsql-hackers
On 2026-Jun-18, Andrew Dunstan wrote: > > While working on the pytest stuff, I found this issue when making it work on > Windows, but the issue can exist everywhere. pg_mkdir_p can fail if there is > a concurrent directory creation. This patch makes it tolerant of concurrent > directory creation. Hmm, should the 'break's in the loop be 'continue's? If you're creating path a/b/c, and a concurrent process beats you but is only attempting to do a/b, then with the break you'll fail to create the final c. -- Álvaro Herrera 48°01'N 7°57'E — https://www.EnterpriseDB.com/ Bob [Floyd] used to say that he was planning to get a Ph.D. by the "green stamp method," namely by saving envelopes addressed to him as 'Dr. Floyd'. After collecting 500 such letters, he mused, a university somewhere in Arizona would probably grant him a degree. (Don Knuth)
Commits
-
Make pg_mkdir_p() tolerant of a concurrent directory creation.
- f25a07b2d94c 19 (unreleased) landed
- f0a831ef3e68 17 (unreleased) landed
- aa80c34c85f4 18 (unreleased) landed
- 9951e3d382c6 16 (unreleased) landed
- 4b3bc6b71453 14 (unreleased) landed
- 4647ac14230d 15 (unreleased) landed