Re: [bug fix] PostgreSQL fails to start on Windows if it crashes after tablespace creation

Поиск
Список
Период
Сортировка
От Asif Naeem
Тема Re: [bug fix] PostgreSQL fails to start on Windows if it crashes after tablespace creation
Дата
Msg-id CAEB4t-OcdKpd=x-3N4vw4obG_LtPVB9MUNNbwtTeBXPUCOMOkQ@mail.gmail.com
обсуждение исходный текст
Ответ на Re: [bug fix] PostgreSQL fails to start on Windows if it crashes after tablespace creation  ("MauMau" <maumau307@gmail.com>)
Список pgsql-hackers
Hi MauMau,

Ah. Sorry, I missed that part. As NTFS junctions and symbolic links are different (although they behave similarly), there seems only a minor inconvenience related to misleading error message i.e.

+ #ifdef WIN32
if (rmdir(linkloc) < 0 && errno != ENOENT)
+ #else
   if (unlink(linkloc) < 0 && errno != ENOENT)
+ #endif
   ereport(ERROR,
   (errcode_for_file_access(),
    errmsg("could not remove symbolic link \"%s\": %m",

What is your opinion about it, Is it not worth changing ? . Thanks.



On Wed, Jan 15, 2014 at 7:42 PM, MauMau <maumau307@gmail.com> wrote:
From: "Asif Naeem" <anaeem.it@gmail.com>

As you have
followed destroy_tablespace_directories() function, Is there any specific
reason not to use same logic to detect type of the file/link i.e.
“(lstat(linkloc, &st) == 0 && S_ISDIR(st.st_mode))”, It also seems have
more appropriate error message i.e.

Thanks for reviewing and testing the patch.  Yes, at first I did what you mentioned, but modified the patch according to some advice in the mail thread.  During redo, create_tablespace_directories() needs to handle the case where the $PGDATA/pg_tblspc/xxx is not a symlink but a directory even on UNIX/Linux.  Please see TablespaceCreateDbspace is(). destroy_tablespace_directories() doesn't have to handle such situation.

Regards
MauMau


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

Предыдущее
От: Amit Kapila
Дата:
Сообщение: Re: Performance Improvement by reducing WAL for Update Operation
Следующее
От: Amit Kapila
Дата:
Сообщение: Re: Why conf.d should be default, and auto.conf and recovery.conf should be in it