On Mon, Mar 4, 2019 at 8:31 PM Julien Rouhaud <rjuju...@gmail.com> wrote: > > On Fri, Feb 22, 2019 at 3:01 PM Magnus Hagander <mag...@hagander.net> wrote: > > > > It tracks things that happen in the general backends. Possibly we should > > also consider counting the errors actually found when running base backups? > > OTOH, that part of the code doesn't really track things like databases (as > > it operates just on the raw data directory underneath), so that > > implementation would definitely not be as clean... > > Sorry I just realized that I totally forgot this part of the thread. > > While it's true that we operate on raw directory, I see that sendDir() > already setup a isDbDir var, and if this is true lastDir should > contain the oid of the underlying database. Wouldn't it be enough to > call sendFile() using this, something like (untested): > > if (!sizeonly) > - sent = sendFile(pathbuf, pathbuf + basepathlen + 1, &statbuf, true); > + sent = sendFile(pathbuf, pathbuf + basepathlen + 1, &statbuf, true, > isDbDir ? pg_atoi(lastDir+1, 4) : InvalidOid); > > and accordingly report any checksum error from sendFile()?
So this seem to work just fine without adding much code. PFA v3 of Magnus' patch including error reporting for BASE_BACKUP.
stat_checksums_v3.diff
Description: Binary data