From: | vignesh C <vignesh21(at)gmail(dot)com> |
---|---|
To: | Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> |
Cc: | Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Tomas Vondra <tomas(dot)vondra(at)2ndquadrant(dot)com>, Dilip Kumar <dilipbalaut(at)gmail(dot)com>, PostgreSQL mailing lists <pgsql-bugs(at)lists(dot)postgresql(dot)org>, PostgreSQL Hackers <pgsql-hackers(at)postgresql(dot)org> |
Subject: | Re: Reorderbuffer crash during recovery |
Date: | 2019-12-31 06:05:38 |
Message-ID: | CALDaNm3MDxFnsZsnSqVhPBLS3=qzNH6+YzB=xYuX2vbtsUeFgw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-bugs pgsql-hackers |
On Mon, Dec 30, 2019 at 11:17 AM Amit Kapila <amit(dot)kapila16(at)gmail(dot)com> wrote:
>
> On Fri, Dec 27, 2019 at 8:37 PM Alvaro Herrera <alvherre(at)2ndquadrant(dot)com> wrote:
> >
> > On 2019-Dec-27, vignesh C wrote:
> >
> > > I felt amit solution also solves the problem. Attached patch has the
> > > fix based on the solution proposed.
> > > Thoughts?
> >
> > This seems a sensible fix to me, though I didn't try to reproduce the
> > failure.
> >
> > > @@ -2472,6 +2457,7 @@ ReorderBufferSerializeTXN(ReorderBuffer *rb, ReorderBufferTXN *txn)
> > > }
> > >
> > > ReorderBufferSerializeChange(rb, txn, fd, change);
> > > + txn->final_lsn = change->lsn;
> > > dlist_delete(&change->node);
> > > ReorderBufferReturnChange(rb, change);
> >
> > Should this be done insider ReorderBufferSerializeChange itself, instead
> > of in its caller?
> >
>
> makes sense. But, I think we should add a comment specifying the
> reason why it is important to set final_lsn while serializing the
> change.
Fixed
> > Also, would it be sane to verify that the TXN
> > doesn't already have a newer final_lsn? Maybe as an Assert.
> >
>
> I don't think this is a good idea because we update the final_lsn with
> commit_lsn in ReorderBufferCommit after which we can try to serialize
> the remaining changes. Instead, we should update it only if the
> change_lsn value is greater than final_lsn.
>
Fixed.
Thanks Alvaro & Amit for your suggestions. I have made the changes
based on your suggestions. Please find the updated patch for the same.
I have also verified the patch in back branches. Separate patch was
required for Release-10 branch, patch for the same is attached as
0001-Reorder-buffer-crash-while-aborting-old-transactions-REL_10.patch.
Thoughts?
Regards,
Vignesh
EnterpriseDB: http://www.enterprisedb.com
Attachment | Content-Type | Size |
---|---|---|
0001-Reorder-buffer-crash-while-aborting-old-transactions.patch | text/x-patch | 3.1 KB |
0001-Reorder-buffer-crash-while-aborting-old-transactions-REL_10.patch | text/x-patch | 3.1 KB |
From | Date | Subject | |
---|---|---|---|
Next Message | Juan José Santamaría Flecha | 2019-12-31 11:22:30 | Re: pg_upgrade |
Previous Message | Felipe Pimenta | 2019-12-31 03:02:17 | pgAdmin 4 |
From | Date | Subject | |
---|---|---|---|
Next Message | Amit Kapila | 2019-12-31 06:13:52 | Re: [HACKERS] Block level parallel vacuum |
Previous Message | Thomas Munro | 2019-12-31 04:05:31 | Re: Cache relation sizes? |