Re: MarkBufferDirtyHint() and LSN update
| От | Antonin Houska |
|---|---|
| Тема | Re: MarkBufferDirtyHint() and LSN update |
| Дата | |
| Msg-id | 94901.1572630686@antos обсуждение исходный текст |
| Ответ на | Re: MarkBufferDirtyHint() and LSN update (Robert Haas <robertmhaas@gmail.com>) |
| Список | pgsql-hackers |
Robert Haas <robertmhaas@gmail.com> wrote: > On Wed, Oct 30, 2019 at 9:43 AM Antonin Houska <ah@cybertec.at> wrote: > > 5. In the first session, FlushBuffer()->TerminateBufferIO() will not clear > > BM_DIRTY because MarkBufferDirtyHint() has eventually set > > BM_JUST_DIRTIED. Thus the hint bit change itself will be written by the next > > call of FlushBuffer(). However page LSN is hasn't been updated so the > > requirement that WAL must be flushed first is not met. > > This part confuses me. Are you saying that MarkBufferDirtyHint() can > set BM_JUST_DIRTIED without setting BM_DIRTY? No, I'm saying that MarkBufferDirtyHint() leaves BM_DIRTY set, as expected. However, if things happen in the order I described, then LSN returned by XLogSaveBufferForHint() is not assigned to the page. -- Antonin Houska Web: https://www.cybertec-postgresql.com
В списке pgsql-hackers по дате отправления: