On Thu, Dec 14, 2023 at 2:45 PM Ashutosh Bapat <ashutosh.bapat....@gmail.com> wrote: > > On Thu, Dec 14, 2023 at 12:37 PM Dilip Kumar <dilipbal...@gmail.com> wrote: > > > > I think you forgot to attach the patch. > > Sorry. Here it is. > > On Thu, Dec 14, 2023 at 2:36 PM Amit Kapila <amit.kapil...@gmail.com> wrote: > > > > > > > It looks like the solution works. But this is the only place where we > > process a change before SNAPSHOT reaches FULL. But this is also the > > only record which affects a decision to queue/not a following change. > > So it should be ok. The sequence_hash'es as separate for each > > transaction and they are cleaned when processing COMMIT record. > > > > > > > But it is possible that even commit or abort also happens before the > > snapshot reaches full state in which case the hash table will have > > stale or invalid (for aborts) entries. That will probably be cleaned > > at a later point by running_xact records. > > Why would cleaning wait till running_xact records? Won't txn entry > itself be removed when processing commit/abort record? At the same the > sequence hash will be cleaned as well. > > > Now, I think in theory, it > > is possible that the same RelFileLocator can again be allocated before > > we clean up the existing entry which can probably confuse the system. > > How? The transaction allocating the first time would be cleaned before > it happens the second time. So shouldn't matter. >
It can only be cleaned if we process it but xact_decode won't allow us to process it and I don't think it would be a good idea to add another hack for sequences here. See below code: xact_decode(LogicalDecodingContext *ctx, XLogRecordBuffer *buf) { SnapBuild *builder = ctx->snapshot_builder; ReorderBuffer *reorder = ctx->reorder; XLogReaderState *r = buf->record; uint8 info = XLogRecGetInfo(r) & XLOG_XACT_OPMASK; /* * If the snapshot isn't yet fully built, we cannot decode anything, so * bail out. */ if (SnapBuildCurrentState(builder) < SNAPBUILD_FULL_SNAPSHOT) return; -- With Regards, Amit Kapila.