Re: Design of pg_stat_subscription_workers vs pgstats - Mailing list pgsql-hackers
From | Peter Smith |
---|---|
Subject | Re: Design of pg_stat_subscription_workers vs pgstats |
Date | |
Msg-id | CAHut+Pt28WdVt44CMf+fE8HeWj6ciHtwJMrVbWMvLepe8_aUsQ@mail.gmail.com Whole thread Raw |
In response to | Re: Design of pg_stat_subscription_workers vs pgstats (Peter Smith <smithpb2250@gmail.com>) |
List | pgsql-hackers |
Below are my review comments just for the v1 patch test code. ====== 1. "table sync error" versus "tablesync error" +# Wait for the table sync error to be reported. +$node_subscriber->poll_query_until( + 'postgres', + qq[ +SELECT apply_error_count = 0 AND sync_error_count > 0 +FROM pg_stat_subscription_activity +WHERE subname = 'tap_sub' +]) or die "Timed out while waiting for table sync error"; + +# Truncate test_tab1 so that table sync can continue. +$node_subscriber->safe_psql('postgres', "TRUNCATE test_tab1;"); + # Wait for initial table sync for test_tab1 to finish. IMO all these "table sync" should be changed to "tablesync", because a table "sync error" sounds like something completely different to a "tablesync error". SUGGESTIONS - "Wait for the table sync error to be reported." --> "Wait for the tablesync error to be reported." - "Timed out while waiting for table sync error" --> "Timed out while waiting for tablesync error" - "Truncate test_tab1 so that table sync can continue." --> "Truncate test_tab1 so that tablesync worker can fun to completion." - "Wait for initial table sync for test_tab1 to finish." --> "Wait for the tablesync worker of test_tab1 to finish." ~~~ 2. Unnecessary INSERT VALUES (2)? (I think this is a duplicate of what [Osumi] #6 reported) +# Insert more data to test_tab1 on the subscriber and then on the publisher, raising an +# error on the subscriber due to violation of the unique constraint on test_tab1. +$node_subscriber->safe_psql('postgres', "INSERT INTO test_tab1 VALUES (2)"); Why does the test do INSERT data (2)? There is already data (1) from the tablesync which will cause an apply worker PK violation when another VALUES (1) is published. Note, the test comment also needs to change... ~~~ 3. Wait for the apply worker error +# Wait for the apply error to be reported. +$node_subscriber->poll_query_until( + 'postgres', + qq[ +SELECT apply_error_count > 0 AND sync_error_count > 0 +FROM pg_stat_subscription_activity +WHERE subname = 'tap_sub' +]) or die "Timed out while waiting for apply error"; This test is only for apply worker errors. So why is the test SQL checking "AND sync_error_count > 0"? (This is similar to what [Tang] #2 reported, but I think she was referring to the other tablesync test) ~~~ 4. Wrong worker? (looks like a duplicate of what [Osumi] #5 already) + +# Truncate test_tab1 so that table sync can continue. +$node_subscriber->safe_psql('postgres', "TRUNCATE test_tab1;"); $node_subscriber->stop('fast'); $node_publisher->stop('fast'); Cut/paste error? Aren't you doing TRUNCATE here so the apply worker can continue; not the tablesync worker (which already completed) "Truncate test_tab1 so that table sync can continue." --> "Truncate test_tab1 so that the apply worker can continue." ------ [Osumi] https://www.postgresql.org/message-id/CAD21AoBRt%3DcyKsZP83rcMkHnT498gHH0TEP34fZBrGCxT-Ahwg%40mail.gmail.com [Tang] https://www.postgresql.org/message-id/TYCPR01MB612840D018FEBD38268CC83BFB3C9%40TYCPR01MB6128.jpnprd01.prod.outlook.com Kind Regards, Peter Smith. Fujitsu Australia
pgsql-hackers by date: