Обсуждение: [PATCH] remove condition always true (/src/backend/access/heap/vacuumlazy.c)

Поиск
Список
Период
Сортировка

[PATCH] remove condition always true (/src/backend/access/heap/vacuumlazy.c)

От
Ranier Vilela
Дата:
Hi,
I'm not sure that the patch is 100% correct.
But the fix is about expression about always true.
But if this patch is correct, he fix one possible bug.

The comment says:
* Perform checking of FSM after releasing lock, the fsm is
* approximate, after all.

But this is not what the code does, apparently it checks before unlocking.

best regards,
Ranier Vilela
Вложения

Re: [PATCH] remove condition always true(/src/backend/access/heap/vacuumlazy.c)

От
Andres Freund
Дата:
Hi,

On 2020-03-30 15:07:40 -0300, Ranier Vilela wrote:
> I'm not sure that the patch is 100% correct.

This is *NOT* correct.


> But the fix is about expression about always true.
> But if this patch is correct, he fix one possible bug.
> 
> The comment says:
> * Perform checking of FSM after releasing lock, the fsm is
> * approximate, after all.
> 
> But this is not what the code does, apparently it checks before unlocking.

No, it doesn't. The freespace check isn't the PageIsNew(), it's the
GetRecordedFreeSpace() call. Which happens after unlocking.

Greetings,

Andres Freund



Re: [PATCH] remove condition always true (/src/backend/access/heap/vacuumlazy.c)

От
Ranier Vilela
Дата:
Em seg., 30 de mar. de 2020 às 18:14, Andres Freund <andres@anarazel.de> escreveu:
Hi,

On 2020-03-30 14:10:29 -0700, Andres Freund wrote:
> On 2020-03-30 17:08:01 -0300, Ranier Vilela wrote:
> > Em seg., 30 de mar. de 2020 às 16:05, Andres Freund <andres@anarazel.de>
> > escreveu:
> >
> > > Hi,
> > >
> > > On 2020-03-30 15:07:40 -0300, Ranier Vilela wrote:
> > > > I'm not sure that the patch is 100% correct.
> > >
> > > This is *NOT* correct.
> > >
> > Anyway, the original source, still wrong.
> > What is the use of testing PageIsNew (page) twice in a row, if nothing has
> > changed.
>
> Yea, that can be reduced. It's pretty harmless though.
>
> We used to require a cleanup lock (which requires dropping the lock,
> acquiring a cleanup lock - which allows for others to make the page be
> not empty) before acting on the empty page in vacuum. That's why
> PageIsNew() had to be checked again.
Well, this is what the patch does, promove reduced and continue to check PageIsNew after unlock.
 
regards,
Ranier Vilela

Re: [PATCH] remove condition always true (/src/backend/access/heap/vacuumlazy.c)

От
Ranier Vilela
Дата:
Hi,
Thanks for the commit.

Ranier Vilela