| From: | Anthonin Bonnefoy <anthonin(dot)bonnefoy(at)datadoghq(dot)com> |
|---|---|
| To: | Alexander Lakhin <exclusion(at)gmail(dot)com> |
| Cc: | Fujii Masao <masao(dot)fujii(at)gmail(dot)com>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
| Subject: | Re: Shutdown indefinitely stuck due to unflushed FPI_FOR_HINT record |
| Date: | 2026-03-05 08:40:25 |
| Message-ID: | CAO6_Xqq73TPa3M6nQ7RqRhKkcphy1JX7aNGTYy-x_Sn+6a8Z_Q@mail.gmail.com |
| Views: | Whole Thread | Raw Message | Download mbox | Resend email |
| Thread: | |
| Lists: | pgsql-hackers |
Hi Alexander,
On Thu, Mar 5, 2026 at 7:30 AM Alexander Lakhin <exclusion(at)gmail(dot)com> wrote:
> Hello Anthonin and Masao-san,
> Thank you for working on this!
>
> It looks like the same issue was discovered and discussed before, but that
> time without a final fix: [1]. I tried v5 patch with my
> 099_walsender_stop.pl test and it executed 100 internal iterations
> successfully, while without the patch it failed for me on iterations 6, 8, 5.
>
> [1] https://www.postgresql.org/message-id/flat/f15d665f-4cd1-4894-037c-afdbe369287e%40gmail.com
Thanks for the tests and the additional context.
Looking at the the thread, the latest patch provided a similar solution using:
+ XLogFlush(GetInsertRecPtr());
So it was relying on GetInsertRecPtr() instead of
GetXLogInsertRecPtr(). As mentioned in the thread, GetInsertRecPtr()
only returns the position of the last full xlog page, meaning it
doesn't fix the issue we have where the last partial page contains a
continuation record.
Testing the XLogFlush(GetInsertRecPtr()) patch with my script, I still
get the shutdown stuck issue.
Using GetXLogInsertRecPtr() is required to make sure the last partial
page is correctly flushed.
Regards,
Anthonin Bonnefoy
| From | Date | Subject | |
|---|---|---|---|
| Next Message | Chao Li | 2026-03-05 08:52:45 | Re: eliminate xl_heap_visible to reduce WAL (and eventually set VM on-access) |
| Previous Message | David Steele | 2026-03-05 08:15:29 | Re: Improve checks for GUC recovery_target_xid |