This was rather surprising - my synchronous commit was... not cancelled. Is this expected behaviour?
d5r5fdj6u5ieml=> begin;
BEGIN
d5r5fdj6u5ieml=> set synchronous_commit = 'on';
SET
d5r5fdj6u5ieml=> insert into data values ('baz');
INSERT 0 1
d5r5fdj6u5ieml=> 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
d5r5fdj6u5ieml=> select * from data;
foo
-----
bar
baz
(2 rows)
d5r5fdj6u5ieml=> rollback;
NOTICE: there is no transaction in progress
ROLLBACK
d5r5fdj6u5ieml=>
--
Peter van Hardenberg
San Francisco, California
"Everything was beautiful, and nothing hurt." -- Kurt Vonnegut