Parsed test spec with 3 sessions starting permutation: s2_free s2_vacuum s2_xid s2_recycle s3_note_free s1_park_level s1_verify s3_at_level s2_new_key s3_wake_level s1_done s3_new_key injection_points_set_local -------------------------- (1 row) step s2_free: DELETE FROM vt WHERE id > 100000; step s2_vacuum: VACUUM (FREEZE) vt; step s2_xid: SELECT pg_current_xact_id() IS NOT NULL AS took_an_xid; took_an_xid ----------- t (1 row) step s2_recycle: VACUUM vt; step s3_note_free: CREATE TABLE v_free AS SELECT deleted_pages FROM lion_index_stats('vt_d'); SELECT deleted_pages > 0 AS vacuum_freed_pages FROM v_free; vacuum_freed_pages ------------------ t (1 row) step s1_park_level: SELECT injection_points_attach('lion-verify-dir-level-walked', 'wait'); injection_points_attach ----------------------- (1 row) step s1_verify: SELECT lion_index_verify('vt_d', true); step s3_at_level: SELECT v_parked('lion-verify-dir-level-walked'); v_parked -------- (1 row) step s2_new_key: INSERT INTO vt SELECT 200000 + i, to_tsvector('simple', 'fresh') FROM generate_series(1, 20000) i; step s3_wake_level: SELECT injection_points_detach('lion-verify-dir-level-walked'); SELECT injection_points_wakeup('lion-verify-dir-level-walked'); injection_points_detach ----------------------- (1 row) injection_points_wakeup ----------------------- (1 row) step s1_verify: <... completed> lion_index_verify ----------------- (1 row) step s1_done: SELECT 'checked' AS s1; s1 ------- checked (1 row) step s3_new_key: SELECT s.deleted_pages < f.deleted_pages AS freed_pages_were_taken, (SELECT count(*) FROM vt WHERE d @@ 'fresh'::tsquery) AS fresh_rows FROM lion_index_stats('vt_d') s, v_free f; SELECT lion_index_verify('vt_d', true); freed_pages_were_taken|fresh_rows ----------------------+---------- t | 20000 (1 row) lion_index_verify ----------------- (1 row) starting permutation: s2_free s2_vacuum s2_xid s2_recycle s3_note_free s1_park_level s1_verify s3_at_level s2_grow_key s3_wake_level s1_done s3_grown_key injection_points_set_local -------------------------- (1 row) step s2_free: DELETE FROM vt WHERE id > 100000; step s2_vacuum: VACUUM (FREEZE) vt; step s2_xid: SELECT pg_current_xact_id() IS NOT NULL AS took_an_xid; took_an_xid ----------- t (1 row) step s2_recycle: VACUUM vt; step s3_note_free: CREATE TABLE v_free AS SELECT deleted_pages FROM lion_index_stats('vt_d'); SELECT deleted_pages > 0 AS vacuum_freed_pages FROM v_free; vacuum_freed_pages ------------------ t (1 row) step s1_park_level: SELECT injection_points_attach('lion-verify-dir-level-walked', 'wait'); injection_points_attach ----------------------- (1 row) step s1_verify: SELECT lion_index_verify('vt_d', true); step s3_at_level: SELECT v_parked('lion-verify-dir-level-walked'); v_parked -------- (1 row) step s2_grow_key: INSERT INTO vt SELECT 200000 + i, to_tsvector('simple', 'kept0') FROM generate_series(1, 8000) i; step s3_wake_level: SELECT injection_points_detach('lion-verify-dir-level-walked'); SELECT injection_points_wakeup('lion-verify-dir-level-walked'); injection_points_detach ----------------------- (1 row) injection_points_wakeup ----------------------- (1 row) step s1_verify: <... completed> lion_index_verify ----------------- (1 row) step s1_done: SELECT 'checked' AS s1; s1 ------- checked (1 row) step s3_grown_key: SELECT s.deleted_pages < f.deleted_pages AS freed_pages_were_taken, (SELECT count(*) FROM vt WHERE d @@ 'kept0'::tsquery) AS kept0_rows FROM lion_index_stats('vt_d') s, v_free f; SELECT lion_index_verify('vt_d', true); freed_pages_were_taken|kept0_rows ----------------------+---------- t | 12000 (1 row) lion_index_verify ----------------- (1 row) starting permutation: s1_park_walked s1_park_rewalk s1_note_held s1_verify s3_at_walked s2_touch s3_wake_walked_again s3_at_rewalk s3_wake_rewalk s3_at_walked s2_touch s3_wake_walked_again s3_at_rewalk s3_wake_rewalk s3_at_walked s2_touch s3_wake_walked s1_done s3_touched injection_points_set_local -------------------------- (1 row) step s1_park_walked: SELECT injection_points_attach('lion-verify-postree-walked', 'wait'); injection_points_attach ----------------------- (1 row) step s1_park_rewalk: SELECT injection_points_attach('lion-verify-postree-rewalk', 'wait'); injection_points_attach ----------------------- (1 row) step s1_note_held: SELECT injection_points_attach('lion-verify-postree-held', 'notice'); injection_points_attach ----------------------- (1 row) step s1_verify: SELECT lion_index_verify('vt_d', true); step s3_at_walked: SELECT v_parked('lion-verify-postree-walked'); v_parked -------- (1 row) step s2_touch: INSERT INTO vt SELECT 300000 + i, to_tsvector('simple', 'kept0 kept1 kept2 doomed') FROM generate_series(1, 10) i; step s3_wake_walked_again: SELECT injection_points_wakeup('lion-verify-postree-walked'); injection_points_wakeup ----------------------- (1 row) step s3_at_rewalk: SELECT v_parked('lion-verify-postree-rewalk'); v_parked -------- (1 row) step s3_wake_rewalk: SELECT injection_points_wakeup('lion-verify-postree-rewalk'); injection_points_wakeup ----------------------- (1 row) step s3_at_walked: SELECT v_parked('lion-verify-postree-walked'); v_parked -------- (1 row) step s2_touch: INSERT INTO vt SELECT 300000 + i, to_tsvector('simple', 'kept0 kept1 kept2 doomed') FROM generate_series(1, 10) i; step s3_wake_walked_again: SELECT injection_points_wakeup('lion-verify-postree-walked'); injection_points_wakeup ----------------------- (1 row) step s3_at_rewalk: SELECT v_parked('lion-verify-postree-rewalk'); v_parked -------- (1 row) step s3_wake_rewalk: SELECT injection_points_wakeup('lion-verify-postree-rewalk'); injection_points_wakeup ----------------------- (1 row) step s3_at_walked: SELECT v_parked('lion-verify-postree-walked'); v_parked -------- (1 row) step s2_touch: INSERT INTO vt SELECT 300000 + i, to_tsvector('simple', 'kept0 kept1 kept2 doomed') FROM generate_series(1, 10) i; step s3_wake_walked: SELECT injection_points_detach('lion-verify-postree-rewalk'); SELECT injection_points_detach('lion-verify-postree-walked'); SELECT injection_points_wakeup('lion-verify-postree-walked'); injection_points_detach ----------------------- (1 row) injection_points_detach ----------------------- (1 row) injection_points_wakeup ----------------------- (1 row) s1: NOTICE: notice triggered for injection point lion-verify-postree-held step s1_verify: <... completed> lion_index_verify ----------------- (1 row) step s1_done: SELECT 'checked' AS s1; s1 ------- checked (1 row) step s3_touched: SELECT (SELECT count(*) FROM vt WHERE d @@ 'kept0'::tsquery) AS kept0_rows; SELECT lion_index_verify('vt_d', true); kept0_rows ---------- 4030 (1 row) lion_index_verify ----------------- (1 row)