Re: Return value of pg_promote()

Поиск
Список
Период
Сортировка
От Michael Paquier
Тема Re: Return value of pg_promote()
Дата
Msg-id ZNyCgY2LMmMdsb/j@paquier.xyz
обсуждение исходный текст
Ответ на Re: Return value of pg_promote()  (Ashutosh Sharma <ashu.coek88@gmail.com>)
Ответы Re: Return value of pg_promote()
Список pgsql-hackers
On Thu, Jun 08, 2023 at 04:53:50PM +0530, Ashutosh Sharma wrote:
> Thanks for sharing your thoughts, Laurenz and Fujii-san. I've prepared
> a patch that makes pg_promote error out if it couldn't send SIGUSR1 to
> the postmaster or if the postmaster died in the middle of standby
> promotion. PFA. Please note that now (with this patch) pg_promote only
> returns false if the standby could not be promoted within the given
> wait time. In case of any kind of failure, it just reports an error
> based on the type of failure that occurred.

     if (kill(PostmasterPid, SIGUSR1) != 0)
     {
-        ereport(WARNING,
-                (errmsg("failed to send signal to postmaster: %m")));
         (void) unlink(PROMOTE_SIGNAL_FILE);
-        PG_RETURN_BOOL(false);
+        ereport(ERROR,
+                (errmsg("failed to send signal to postmaster: %m")));
     }

Shouldn't you assign an error code to this one rather than the
default one for internal errors, like ERRCODE_SYSTEM_ERROR?

     /* return immediately if waiting was not requested */
@@ -744,7 +743,9 @@ pg_promote(PG_FUNCTION_ARGS)
          * necessity for manual cleanup of all postmaster children.
          */
         if (rc & WL_POSTMASTER_DEATH)
-            PG_RETURN_BOOL(false);
+            ereport(FATAL,
+                    (errcode(ERRCODE_ADMIN_SHUTDOWN),
+                     errmsg("terminating connection due to unexpected postmaster exit")));

I would add an errcontext here, to let somebody know that the
connection died while waiting for the promotion to be processed, say
"while waiting on promotion".
--
Michael

Вложения

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

Предыдущее
От: Michael Paquier
Дата:
Сообщение: Re: pg_logical_emit_message() misses a XLogFlush()
Следующее
От: Peter Eisentraut
Дата:
Сообщение: Re: cataloguing NOT NULL constraints