Re: Checking pgwin32_is_junction() errors

Поиск
Список
Период
Сортировка
От r.zharkov@postgrespro.ru
Тема Re: Checking pgwin32_is_junction() errors
Дата
Msg-id 4590c37927d7b8ee84f9855d83229018@postgrespro.ru
обсуждение исходный текст
Ответ на Re: Checking pgwin32_is_junction() errors  (Thomas Munro <thomas.munro@gmail.com>)
Ответы Re: Checking pgwin32_is_junction() errors  (Thomas Munro <thomas.munro@gmail.com>)
Список pgsql-hackers
On 2022-08-06 08:02, Thomas Munro wrote:
> 
> Pushed.
> 
> Hmm, this stuff could *really* use a little test framework that's run
> by check-world, that exercises these various replacement operations.
> But I also suspect that problems in this area are likely to be due to
> concurrency.  It's hard to make a simple test that simulates the case
> where a file is unlinked between system calls within stat() and hits
> the STATUS_DELETE_PENDING case.  That check is code I cargo-culted in
> this patch.  So much of the stuff we've had in the tree relating to
> that area has been wrong in the past...

Hello, hackers!

initdb on my windows 10 system stopped working after the commit
c5cb8f3b: "Provide lstat() for Windows."
The error message is: creating directory C:/HOME/data ... initdb:
error: could not create directory "C:/HOME": File exists

"C:/HOME" is the junction point to the second volume on my hard drive -
"\??\Volume{GUID}\" which name pgreadlink() erroneously strips here:
https://github.com/postgres/postgres/blob/7e29a79a46d30dc236d097825ab849158929d977/src/port/dirmod.c#L357.
So initdb could not stat the file with name "Volume{GUID}", tried to
create it and failed.
With the attached patch initdb works fine again.

-- 
regards,

Roman
Вложения

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Amit Langote
Дата:
Сообщение: Re: PG 15 (and to a smaller degree 14) regression due to ExprEvalStep size
Следующее
От: Kyotaro Horiguchi
Дата:
Сообщение: Re: logical decoding and replication of sequences