Re: Decoding speculative insert with toast leaks memory
Amit Kapila <amit.kapila16@gmail.com>
From: Amit Kapila <amit.kapila16@gmail.com>
To: Dilip Kumar <dilipbalaut@gmail.com>
Cc: Andres Freund <andres@anarazel.de>,
Ashutosh Bapat <ashutosh.bapat.oss@gmail.com>, Peter Eisentraut <peter.eisentraut@2ndquadrant.com>, Petr Jelinek <petr.jelinek@enterprisedb.com>, PostgreSQL Hackers <pgsql-hackers@lists.postgresql.org>, Tomas Vondra <tomas.vondra@enterprisedb.com>
Date: 2021-06-09T05:33:01Z
Lists: pgsql-hackers
On Tue, Jun 8, 2021 at 5:16 PM Dilip Kumar <dilipbalaut@gmail.com> wrote: > > Based on the off list discussion, I have modified the test based on > the idea showed in > "isolation/specs/insert-conflict-specconflict.spec", other open point > we had about the race condition that how to ensure that when we unlock > any session it make progress, IMHO the isolation tested is designed in > a way that either all the waiting session returns with the output or > again block on a heavy weight lock before performing the next step. > Few comments: 1. The test has a lot of similarities and test duplication with what we are doing in insert-conflict-specconflict.spec. Can we move it to insert-conflict-specconflict.spec? I understand that having it in test_decoding has the advantage that we can have all decoding tests in one place but OTOH, we can avoid a lot of test-code duplication if we add it in insert-conflict-specconflict.spec. 2. +#permutation "s1_session" "s1_lock_s2" "s1_lock_s3" "s1_begin" "s1_insert_tbl1" "s2_session" "s2_begin" "s2_insert_tbl1" "s3_session" "s3_begin" "s3_insert_tbl1" "s1_unlock_s2" "s1_unlock_s3" "s1_lock_s2" "s1_abort" "s3_commit" "s1_unlock_s2" "s2_insert_tbl2" "s2_commit" "s1_get_changes" This permutation is not matching with what we are actually doing. 3. +# Test that speculative locks are correctly acquired and released, s2 +# inserts, s1 updates. This test description doesn't seem to be correct. Can we change it to something like: "Test logical decoding of speculative aborts for toast insertion followed by insertion into a different table which doesn't have a toast"? Also, let's prepare and test the patches for back-branches. It would be better if you can prepare separate patches for code and test-case for each branch then I can merge them before commit. This helps with testing on back-branches. -- With Regards, Amit Kapila.
Commits
-
Fix ABI break introduced by commit 4daa140a2f.
- e95f617acc48 11.13 landed
- 72b51e214a2c 12.8 landed
- 56e366f6757d 13.4 landed
-
Fix valgrind issue in pgoutput.c.
- 357cb8f07f95 13.4 landed
-
Fix decoding of speculative aborts.
- 43acadfcebec 9.6.23 landed
- 35f56c124a7a 10.18 landed
- 1f8a934e0a86 11.13 landed
- 40ad7ebff6ca 12.8 landed
- 602a32a685e4 13.4 landed
- 4daa140a2f50 14.0 landed
-
pgoutput: Fix memory leak due to RelationSyncEntry.map.
- d2505681211b 13.4 cited
-
Fix initialization of RelationSyncEntry for streaming transactions.
- 69bd60672af6 14.0 cited
-
Implement streaming mode in ReorderBuffer.
- 7259736a6e5b 14.0 cited