команды.
А вот этого я не видел. Можете показать?
воспроизводится на раз-два
# show synchronous_standby_names ;
synchronous_standby_names
---------------------------
node2
# create table test(i int);
# выключаем node2
# begin ;
BEGIN
*# insert into test values (0);
INSERT 0 1
*# commit;
^CCancel request sent
WARNING: canceling wait for synchronous replication due to user request
DETAIL: The transaction has already committed locally, but might not have been replicated to the standby.
COMMIT
Спасибо! Я посмотрю...
И действительно! И вот это, мне кажется, bug. А именно этот пример был в thread-е? (Я ещё вернусь к этому, я думаю.)
А почему бы Вам не написать bug report хотя бы на эту тему (раз уж Вы это нашли)? Вроде такого: > CREATE TABLE test(i int); > ALTER SYSTEM SET synchronous_standby_names = 'no_such_thing'; > SELECT pg_reload_conf(); > BEGIN TRANSACTION; > INSERT INTO test values (1); -- INSERT 0 1 > COMMIT; -- Hangs -- Canceling it with CTRL-C gets: ^CCancel request sent WARNING: canceling wait for synchronous replication due to user request DETAIL: The transaction has already committed locally, but might not have been replicated to the standby. COMMIT -- This is unexpected! Why do we get this last "COMMIT" tag?! Documentation claims: The guarantee we offer is that the application will not receive explicit acknowledgment of the successful commit of a transaction until the WAL data is known to be safely received by all the synchronous standbys. А получается, что мы получаем именно explicit acknowledgment of the successful commit. :(
Обсуждают сегодня