Re: Minimal logical decoding on standbys
От | Amit Khandekar |
---|---|
Тема | Re: Minimal logical decoding on standbys |
Дата | |
Msg-id | CAJ3gD9d8Af6Fjhkon33kNVSFhdNXJQds=aepGFxWMmh0YMk8Lg@mail.gmail.com обсуждение исходный текст |
Ответ на | Re: Minimal logical decoding on standbys (Andres Freund <andres@anarazel.de>) |
Ответы |
Re: Minimal logical decoding on standbys
|
Список | pgsql-hackers |
On Fri, 14 Dec 2018 at 06:25, Andres Freund <andres@anarazel.de> wrote: > I've a prototype attached, but let's discuss the details in a separate > thread. This also needs to be changed for pluggable storage, as we don't > know about table access methods in the startup process, so we can't call > can't determine which AM the heap is from during > btree_xlog_delete_get_latestRemovedXid() (and sibling routines). Attached is a WIP test patch 0003-WIP-TAP-test-for-logical-decoding-on-standby.patch that has a modified version of Craig Ringer's test cases (012_logical_decoding_on_replica.pl) that he had attached in [1]. Here, I have also attached his original file (Craigs_012_logical_decoding_on_replica.pl). Also attached are rebased versions of couple of Andres's implementation patches. I have added a new test scenario : DROP TABLE from master *before* the logical records of the table insertions are retrieved from standby. The logical records should be successfully retrieved. Regarding the test result failures, I could see that when we drop a logical replication slot at standby server, then the catalog_xmin of physical replication slot becomes NULL, whereas the test expects it to be equal to xmin; and that's the reason a couple of test scenarios are failing : ok 33 - slot on standby dropped manually Waiting for replication conn replica's replay_lsn to pass '0/31273E0' on master done not ok 34 - physical catalog_xmin still non-null not ok 35 - xmin and catalog_xmin equal after slot drop # Failed test 'xmin and catalog_xmin equal after slot drop' # at t/016_logical_decoding_on_replica.pl line 272. # got: # expected: 2584 Other than the above, there is this test scenario which I had to remove : ######################################################### # Conflict with recovery: xmin cancels decoding session ######################################################### # # Start a transaction on the replica then perform work that should cause a # recovery conflict with it. We'll check to make sure the client gets # terminated with recovery conflict. # # Temporarily disable hs feedback so we can test recovery conflicts. # It's fine to continue using a physical slot, the xmin should be # cleared. We only check hot_standby_feedback when establishing # a new decoding session so this approach circumvents the safeguards # in place and forces a conflict. This test starts pg_recvlogical, and expects it to be terminated due to recovery conflict because hs feedback is disabled. But that does not happen; instead, pg_recvlogical does not return. But I am not sure why it does not terminate with Andres's patch; it was expected to terminate with Craig Ringer's patch. Further, there are subsequent test scenarios that test pg_recvlogical with hs_feedback disabled, which I have removed because pg_recvlogical does not return. I am yet to clearly understand why that happens. I suspect that is only because hs_feedback is disabled. Also, the testcases verify pg_controldata's oldestCatalogXmin values, which are now not present with Andres's patch; so I removed tracking of oldestCatalogXmin. [1] https://www.postgresql.org/message-id/CAMsr+YEVmBJ=dyLw=+kTihmUnGy5_EW4Mig5T0maieg_Zu=XCg@mail.gmail.com Thanks -Amit Khandekar
Вложения
В списке pgsql-hackers по дате отправления: