Re: Reorderbuffer crash during recovery - Mailing list pgsql-bugs

From Amit Kapila
Subject Re: Reorderbuffer crash during recovery
Date
Msg-id CAA4eK1LMgD5J8GpkLc2pAw9Opfe8KDz1OoY3eFSDQuZOQBU2Ng@mail.gmail.com
Whole thread Raw
In response to Re: Reorderbuffer crash during recovery  (Alvaro Herrera <alvherre@2ndquadrant.com>)
Responses Re: Reorderbuffer crash during recovery  (vignesh C <vignesh21@gmail.com>)
Re: Reorderbuffer crash during recovery  (vignesh C <vignesh21@gmail.com>)
List pgsql-bugs
On Fri, Dec 27, 2019 at 8:37 PM Alvaro Herrera <alvherre@2ndquadrant.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.

>  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.

-- 
With Regards,
Amit Kapila.
EnterpriseDB: http://www.enterprisedb.com



pgsql-bugs by date:

Previous
From: Jeff Janes
Date:
Subject: Re: BUG #16098: unexplained autovacuum to prevent wraparound
Next
From: Загороднев Роман Евгеньевич
Date:
Subject: RE: pg_upgrade