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
|
Список | 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 по дате отправления: