On Thu, 10 Sep 2020 at 14:24, Amit Kapila <amit.kapil...@gmail.com> wrote:
>
> On Wed, Sep 9, 2020 at 9:37 PM Fujii Masao <masao.fu...@oss.nttdata.com> 
> wrote:
> >
> > On 2020/09/09 22:57, Magnus Hagander wrote:
> > > On Wed, Sep 9, 2020 at 3:56 PM Tomas Vondra <tomas.von...@2ndquadrant.com 
> > > <mailto:tomas.von...@2ndquadrant.com>> wrote:
> > >
> > >     On Wed, Sep 09, 2020 at 03:53:40PM +0530, Amit Kapila wrote:
> > >      >On Wed, Sep 9, 2020 at 3:15 PM Magnus Hagander <mag...@hagander.net 
> > > <mailto:mag...@hagander.net>> wrote:
> > >      >>
> > >      >> On Wed, Sep 9, 2020 at 5:04 AM Amit Kapila 
> > > <amit.kapil...@gmail.com <mailto:amit.kapil...@gmail.com>> wrote:
> > >      >>>
> > >      >>
> > >      >> Though in fact the one inconsistent place in the code now is that 
> > > if it is corrupt in the db entry part of the file it returns true and the 
> > > global timestamp, which I would argue is perhaps incorrect and it should 
> > > return false.
> > >      >>
> > >      >
> > >      >Yeah, this is exactly the case I was pointing out where we return 
> > > true
> > >      >before the patch, basically the code below:
> > >      >case 'D':
> > >      >if (fread(&dbentry, 1, offsetof(PgStat_StatDBEntry, tables),
> > >      >  fpin) != offsetof(PgStat_StatDBEntry, tables))
> > >      >{
> > >      >ereport(pgStatRunningInCollector ? LOG : WARNING,
> > >      >(errmsg("corrupted statistics file \"%s\"",
> > >      >statfile)));
> > >      >goto done;
> > >      >}
> > >      >
> > >      >done:
> > >      >FreeFile(fpin);
> > >      >return true;
> > >      >
> > >      >Now, if we decide to return 'false' here, then surely there is no
> > >      >argument and we should return false in other cases as well. 
> > > Basically,
> > >      >I think we should be consistent in handling the corrupt file case.
> > >      >
> > >
> > >     FWIW I do agree with this - we should return false here, to make it
> > >     return false like in the other data corruption cases. AFAICS that's 
> > > the
> > >     only inconsistency here.
> > >
> > >
> > > +1, I think that's the place to fix, rather than reversing all the other 
> > > places.
> >
> > +1 as I suggested upthread!
> >
>
> Please find the patch attached based on the above discussion. I have
> slightly adjusted the comments.

FWIW reading the discussion, I also agree to fix it to return false in
case of file corruption.

Regarding the v2 patch, I think we should return false in the
following case too:

            default:
                ereport(pgStatRunningInCollector ? LOG : WARNING,
                        (errmsg("corrupted statistics file \"%s\"",
                                statfile)));
                goto done;

Regards,

-- 
Masahiko Sawada            http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services


Reply via email to