From: | "Drouvot, Bertrand" <bdrouvot(at)amazon(dot)com> |
---|---|
To: | Dilip Kumar <dilipbalaut(at)gmail(dot)com>, Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | PostgreSQL Hackers <pgsql-hackers(at)lists(dot)postgresql(dot)org> |
Subject: | Re: [BUG] Failed Assertion in ReorderBufferChangeMemoryUpdate() |
Date: | 2021-09-06 15:24:23 |
Message-ID: | 73dcd904-cfee-21f2-d363-317cd517cb00@amazon.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-hackers |
Hi,
On 9/6/21 1:54 PM, Dilip Kumar wrote:
>
> *CAUTION*: This email originated from outside of the organization. Do
> not click links or open attachments unless you can confirm the sender
> and know the content is safe.
>
>
> On Mon, Sep 6, 2021 at 4:04 PM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com
> <mailto:amit(dot)kapila16(at)gmail(dot)com>> wrote:
>
> On Fri, Aug 13, 2021 at 3:15 PM Drouvot, Bertrand
> <bdrouvot(at)amazon(dot)com <mailto:bdrouvot(at)amazon(dot)com>> wrote:
> >
> >
> > Please find attached a patch proposal to avoid the failed
> assertion (by ensuring that ReorderBufferChangeMemoryUpdate()
> being triggered with "addition" set to false in
> ReorderBufferToastReplace() is done after the elog(ERROR,)).
> >
>
> The error can occur at multiple places (like via palloc or various
> other places) between the first time we subtract the change_size and
> add it back after the change is re-computed. I think the correct fix
> would be that in the beginning we just compute the change_size by
> ReorderBufferChangeSize and then after re-computing the change, we
> just subtract the old change_size and add the new change_size. What do
> you think?
>
>
> Yeah, that seems more logical to me.
Thanks for your feedback!
That seems indeed more logical, so I see 3 options to do so:
1) Add a new API say ReorderBufferChangeMemorySubstractSize() (with a
Size as one parameter) and make use of it in ReorderBufferToastReplace()
2) Add a new "Size" parameter to ReorderBufferChangeMemoryUpdate(), so
that if this parameter is > 0 then it would be used instead of "sz =
ReorderBufferChangeSize(change)"
3) Do the substraction directly into ReorderBufferToastReplace()
without any API
I'm inclined to go for option 2), what do you think?
Thanks
Bertrand
From | Date | Subject | |
---|---|---|---|
Next Message | Thomas Habets | 2021-09-06 15:42:07 | [PATCH] Add `verify-system` sslmode to use system CA pool for server cert |
Previous Message | gkokolatos | 2021-09-06 15:02:50 | Re: Showing I/O timings spent reading/writing temp buffers in EXPLAIN |