Re: [GENERAL] PANIC: heap_update_redo: no block - Mailing list pgsql-hackers

From Tom Lane
Subject Re: [GENERAL] PANIC: heap_update_redo: no block
Date
Msg-id 14448.1143472969@sss.pgh.pa.us
Whole thread Raw
Responses Re: [GENERAL] PANIC: heap_update_redo: no block
List pgsql-hackers
[ redirecting to a more appropriate mailing list ]

"Alex bahdushka" <bahdushka@gmail.com> writes:

> LOG:  REDO @ D/19176610; LSN D/19176644: prev D/191765E8; xid 81148979: Heap - clean: rel 1663/16386/16559898; blk 0
> LOG:  REDO @ D/19176644; LSN D/191766A4: prev D/19176610; xid 81148979: Heap - move: rel 1663/16386/16559898; tid
1/1;new 0/10
 
> PANIC:  heap_update_redo: no block: target blcknum: 1, relation(1663/16386/16559898) length: 1

I think what's happened here is that VACUUM FULL moved the only tuple
off page 1 of the relation, then truncated off page 1, and now
heap_update_redo is panicking because it can't find page 1 to replay the
move.  Curious that we've not seen a case like this before, because it
seems like a generic hazard for WAL replay.

The simplest fix would be to treat WAL records as no-ops if they refer
to nonexistent pages, but that seems much too prone to hide real failure
conditions.  Another thought is to remember that we ignored this record,
and then complain if we don't see a TRUNCATE that would've removed the
page.  That would be pretty complicated but not impossible.  Anyone have
a better idea?
        regards, tom lane


pgsql-hackers by date:

Previous
From: "Dave Page"
Date:
Subject: Re: Remote administration contrib module
Next
From: Tom Lane
Date:
Subject: Re: Recovery from multi trouble