Re: dropdb --force

Поиск
Список
Период
Сортировка
От vignesh C
Тема Re: dropdb --force
Дата
Msg-id CALDaNm0kZwVG4kzM3WLvXJY7bepcuX8X5nGyFzHce2Pn0a7KAw@mail.gmail.com
обсуждение исходный текст
Ответ на Re: dropdb --force  (Pavel Stehule <pavel.stehule@gmail.com>)
Ответы Re: dropdb --force  (Pavel Stehule <pavel.stehule@gmail.com>)
Список pgsql-hackers
On Wed, Sep 18, 2019 at 9:41 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:
>
>
>
> st 18. 9. 2019 v 5:59 odesílatel vignesh C <vignesh21@gmail.com> napsal:
>>
>> On Wed, Sep 18, 2019 at 8:30 AM Pavel Stehule <pavel.stehule@gmail.com> wrote:
>> >
>> >
>> Hi Pavel,
>>
>> One Comment:
>> In the documentation we say drop database will fail after 60 seconds
>>   <varlistentry>
>>     <term><literal>FORCE</literal></term>
>>     <listitem>
>>      <para>
>>       Attempt to terminate all existing connections to the target database.
>>      </para>
>>      <para>
>>       This will fail, if current user has no permissions to terminate other
>>       connections. Required permissions are the same as with
>>       <literal>pg_terminate_backend</literal>, described
>>       in <xref linkend="functions-admin-signal"/>.
>>
>>       This will also fail, if the connections do not terminate in 60 seconds.
>>      </para>
>>     </listitem>
>>    </varlistentry>
>
>
> This is not valid. With FORCE flag the clients are closed immediately
>
>>
>>
>> But in TerminateOtherDBBackends:
>> foreach (lc, pids)
>> + {
>> + int pid = lfirst_int(lc);
>> +
>> + (void) kill(pid, SIGTERM); /* ignore any error */
>> + }
>> +
>> + /* sleep 100ms */
>> + pg_usleep(100 * 1000L);
>> + }
>>
>> We check for any connected backends after sending kill signal in
>> CountOtherDBBackends and throw error immediately.
>>
>> I had also tested this scenario to get the following error immediately:
>> test=# drop database (force) test1;
>> ERROR:  database "test1" is being accessed by other users
>> DETAIL:  There is 1 other session using the database.
>>
>
> sure - you cannot to kill self
>
This was not a case where we try to do drop database from the same
session, I got this error when one of the process took longer time to
terminate the other connected process.
But this scenario was simulated using gdb, I'm not sure if similar
scenario is possible without gdb in production environment. If
terminating process does not happen immediately then the above
scenario can happen.

Regards,
Vignesh
EnterpriseDB: http://www.enterprisedb.com



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

Предыдущее
От: Fabien COELHO
Дата:
Сообщение: Re: pgbench - allow to create partitioned tables
Следующее
От: Pavel Stehule
Дата:
Сообщение: Re: dropdb --force