On 9 October 2017 at 15:37, Konstantin Knizhnik <k.knizh...@postgrespro.ru> wrote: > Thank you for explanations. > > On 08.10.2017 16:00, Craig Ringer wrote: >> >> I think it'd be helpful if you provided reproduction instructions, >> test programs, etc, making it very clear when things are / aren't >> related to your changes. > > > It will be not so easy to provide some reproducing scenario, because > actually it involves many components (postgres_fdw, pg_pasthman, > pg_shardman, LR,...)
So simplify it to a test case that doesn't. > I have checked syncrepl.c file, particularly SyncRepGetSyncRecPtr function. > Each wal sender independently calculates minimal LSN among all synchronous > replicas and wakeup backends waiting for this LSN. It means that transaction > performing update of data in one shard will actually wait confirmation from > replication channels for all shards. That's expected for the current sync rep design, yes. Because it's based on lsn, and was designed for physical rep where there's no question about whether we're sending some data to some peers and not others. So all backends will wait for the slowest-responding peer, including peers that don't need to actually do anything for this xact. You could possibly hack around that by having the output plugin advance the slot position when it sees that it just processed an empty xact. -- Craig Ringer http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers