From: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> |
---|---|
To: | Fujii Masao <masao(dot)fujii(at)oss(dot)nttdata(dot)com> |
Cc: | Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>, pgsql-hackers(at)lists(dot)postgresql(dot)org |
Subject: | Re: Review for GetWALAvailability() |
Date: | 2020-06-25 03:57:18 |
Message-ID: | 20200625035718.GA28721@alvherre.pgsql |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
On 2020-Jun-25, Fujii Masao wrote:
> /*
> * Find the oldest extant segment file. We get 1 until checkpoint removes
> * the first WAL segment file since startup, which causes the status being
> * wrong under certain abnormal conditions but that doesn't actually harm.
> */
> oldestSeg = XLogGetLastRemovedSegno() + 1;
>
> I see the point of the above comment, but this can cause wal_status to be
> changed from "lost" to "unreserved" after the server restart. Isn't this
> really confusing? At least it seems better to document that behavior.
Hmm.
> Or if we *can ensure* that the slot with invalidated_at set always means
> "lost" slot, we can judge that wal_status is "lost" without using fragile
> XLogGetLastRemovedSegno(). Thought?
Hmm, this sounds compelling -- I think it just means we need to ensure
we reset invalidated_at to zero if the slot's restart_lsn is set to a
correct position afterwards. I don't think we have any operation that
does that, so it should be safe -- hopefully I didn't overlook anything?
Neither copy nor advance seem to work with a slot that has invalid
restart_lsn.
> Or XLogGetLastRemovedSegno() should be fixed so that it returns valid
> value even after the restart?
This seems more work to implement.
--
Álvaro Herrera https://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From | Date | Subject | |
---|---|---|---|
Next Message | Michael Paquier | 2020-06-25 04:41:24 | Re: should libpq also require TLSv1.2 by default? |
Previous Message | Fujii Masao | 2020-06-25 03:34:16 | Re: Review for GetWALAvailability() |