Re: trying again to get incremental backup - Mailing list pgsql-hackers
From | Dilip Kumar |
---|---|
Subject | Re: trying again to get incremental backup |
Date | |
Msg-id | CAFiTN-s_MTt0fbz44gtiZwZh4wCO75BbHaErmzT019bcYtrRKw@mail.gmail.com Whole thread Raw |
In response to | Re: trying again to get incremental backup (Robert Haas <robertmhaas@gmail.com>) |
List | pgsql-hackers |
On Tue, Nov 14, 2023 at 2:10 AM Robert Haas <robertmhaas@gmail.com> wrote: > > On Mon, Nov 13, 2023 at 11:25 AM Alvaro Herrera <alvherre@alvh.no-ip.org> wrote: > > Great stuff you got here. I'm doing a first pass trying to grok the > > whole thing for more substantive comments, but in the meantime here are > > some cosmetic ones. > > Thanks, thanks, and thanks. > > I've fixed some things that you mentioned in the attached version. > Other comments below. Here are some more comments based on what I have read so far, mostly cosmetics comments. 1. + * summary file yet, then stoppng doesn't make any sense, and we + * should wait until the next stop point instead. Typo /stoppng/stopping 2. + /* Close temporary file and shut down xlogreader. */ + FileClose(io.file); + We have already freed the xlogreader so the second part of the comment is not valid. 3.+ /* + * If a relation fork is truncated on disk, there is in point in + * tracking anything about block modifications beyond the truncation + * point. Typo. /there is in point/ there is no point 4. +/* + * Special handling for WAL recods with RM_XACT_ID. + */ /recods/records 5. + if (xact_info == XLOG_XACT_COMMIT || + xact_info == XLOG_XACT_COMMIT_PREPARED) + { + xl_xact_commit *xlrec = (xl_xact_commit *) XLogRecGetData(xlogreader); + xl_xact_parsed_commit parsed; + int i; + + ParseCommitRecord(XLogRecGetInfo(xlogreader), xlrec, &parsed); + for (i = 0; i < parsed.nrels; ++i) + { + ForkNumber forknum; + + for (forknum = 0; forknum <= MAX_FORKNUM; ++forknum) + if (forknum != FSM_FORKNUM) + BlockRefTableSetLimitBlock(brtab, &parsed.xlocators[i], + forknum, 0); + } + } For SmgrCreate and Truncate I understand setting the 'limit block' but why for commit/abort? I think it would be better to add some comments here. 6. + * Caller must set private_data->tli to the TLI of interest, + * private_data->read_upto to the lowest LSN that is not known to be safe + * to read on that timeline, and private_data->historic to true if and only + * if the timeline is not the current timeline. This function will update + * private_data->read_upto and private_data->historic if more WAL appears + * on the current timeline or if the current timeline becomes historic. + */ +static int +summarizer_read_local_xlog_page(XLogReaderState *state, + XLogRecPtr targetPagePtr, int reqLen, + XLogRecPtr targetRecPtr, char *cur_page) The comments say "private_data->read_upto to the lowest LSN that is not known to be safe" but is it really the lowest LSN? I think it is the highest LSN this is known to be safe for that TLI no? 7. + /* If it's time to remove any old WAL summaries, do that now. */ + MaybeRemoveOldWalSummaries(); I was just wondering whether removing old summaries should be the job of the wal summarizer or it should be the job of the checkpointer, I mean while removing the old wals it can also check and remove the old summaries? Anyway, it's just a question and I do not have a strong opinion on this. 8. + /* + * Whether we we removed the file or not, we need not consider it + * again. + */ Typo /Whether we we removed/ Whether we removed 9. +/* + * Get an entry from a block reference table. + * + * If the entry does not exist, this function returns NULL. Otherwise, it + * returns the entry and sets *limit_block to the value from the entry. + */ +BlockRefTableEntry * +BlockRefTableGetEntry(BlockRefTable *brtab, const RelFileLocator *rlocator, + ForkNumber forknum, BlockNumber *limit_block) If this function is already returning 'BlockRefTableEntry' then why would it need to set an extra '*limit_block' out parameter which it is actually reading from the entry itself? -- Regards, Dilip Kumar EnterpriseDB: http://www.enterprisedb.com
pgsql-hackers by date: