Re: [HACKERS] postmaster startup failure
I ran into this too. Patched the code with Tom's change and it works fine. Thanks again Tom! Richard Schilling On 2003.07.17 11:04 Hannu Krosing wrote: > Tom Lane kirjutas N, 17.07.2003 kell 19:49: > > Ugh. The reason we hadn't seen this happen in the field was that it is > > a bug I introduced in a patch two months ago :-( > > > > 7.3.3 will in fact fail to start up, with the above error, any time the > > last record of the WAL file ends exactly at a page boundary. I think > > we're gonna need a quick 7.3.4 ... > > > > If you want a source patch for 7.3.3, here it is. > > Thanks! > > --- > Hannu > > > ---(end of broadcast)--- > TIP 9: the planner will ignore your desire to choose an index scan if your > joining column's datatypes do not match > ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
Re: [HACKERS] postmaster startup failure
Tom Lane kirjutas N, 17.07.2003 kell 19:49: > Ugh. The reason we hadn't seen this happen in the field was that it is > a bug I introduced in a patch two months ago :-( > > 7.3.3 will in fact fail to start up, with the above error, any time the > last record of the WAL file ends exactly at a page boundary. I think > we're gonna need a quick 7.3.4 ... > > If you want a source patch for 7.3.3, here it is. Thanks! --- Hannu ---(end of broadcast)--- TIP 9: the planner will ignore your desire to choose an index scan if your joining column's datatypes do not match
Re: [HACKERS] postmaster startup failure
Hannu Krosing <[EMAIL PROTECTED]> writes: > WHen running PostgreSQL 7.3.3-1 (from rpm's) on Redhat 9.0 I got the > following in logs and the postmaster will not start up. > PANIC: XLogWrite: write request 0/30504000 is past end of log > 0/30504000 Ugh. The reason we hadn't seen this happen in the field was that it is a bug I introduced in a patch two months ago :-( 7.3.3 will in fact fail to start up, with the above error, any time the last record of the WAL file ends exactly at a page boundary. I think we're gonna need a quick 7.3.4 ... If you want a source patch for 7.3.3, here it is. regards, tom lane *** src/backend/access/transam/xlog.c.orig Thu May 22 10:39:49 2003 --- src/backend/access/transam/xlog.c Thu Jul 17 12:36:20 2003 *** *** 2483,2488 --- 2483,2489 EndOfLog; XLogRecord *record; char *buffer; + uint32 freespace; /* Use malloc() to ensure record buffer is MAXALIGNED */ buffer = (char *) malloc(_INTL_MAXLOGRECSZ); *** *** 2678,2685 memcpy((char *) Insert->currpage, readBuf, BLCKSZ); Insert->currpos = (char *) Insert->currpage + (EndOfLog.xrecoff + BLCKSZ - XLogCtl->xlblocks[0].xrecoff); - /* Make sure rest of page is zero */ - MemSet(Insert->currpos, 0, INSERT_FREESPACE(Insert)); LogwrtResult.Write = LogwrtResult.Flush = EndOfLog; --- 2679,2684 *** *** 2689,2694 --- 2688,2714 XLogCtl->LogwrtRqst.Write = EndOfLog; XLogCtl->LogwrtRqst.Flush = EndOfLog; + + freespace = INSERT_FREESPACE(Insert); + if (freespace > 0) + { + /* Make sure rest of page is zero */ + MemSet(Insert->currpos, 0, freespace); + XLogCtl->Write.curridx = 0; + } + else + { + /* +* Whenever Write.LogwrtResult points to exactly the end of a page, +* Write.curridx must point to the *next* page (see XLogWrite()). +* +* Note: it might seem we should do AdvanceXLInsertBuffer() here, +* but we can't since we haven't yet determined the correct StartUpID +* to put into the new page's header. The first actual attempt to +* insert a log record will advance the insert state. +*/ + XLogCtl->Write.curridx = NextBufIdx(0); + } #ifdef NOT_USED /* UNDO */ ---(end of broadcast)--- TIP 3: if posting/reading through Usenet, please send an appropriate subscribe-nomail command to [EMAIL PROTECTED] so that your message can get through to the mailing list cleanly
Re: [HACKERS] postmaster startup failure
Hannu Krosing <[EMAIL PROTECTED]> writes: > WHen running PostgreSQL 7.3.3-1 (from rpm's) on Redhat 9.0 I got the > following in logs and the postmaster will not start up. > PANIC: XLogWrite: write request 0/30504000 is past end of log > 0/30504000 This looks like you've stumbled across some sort of boundary-condition bug in xlog.c. It must be a pretty low-probability situation since we've not seen it before. How large is the database in question --- would it be feasible to send it to me (as a tar of the whole $PGDATA directory) for examination? regards, tom lane ---(end of broadcast)--- TIP 4: Don't 'kill -9' the postmaster
[HACKERS] postmaster startup failure
WHen running PostgreSQL 7.3.3-1 (from rpm's) on Redhat 9.0 I got the following in logs and the postmaster will not start up. Any Ideas what I could do to start up ? This in on a laptop used for development, but I still would like to not initdb. postmaster successfully started LOG: database system shutdown was interrupted at 2003-07-17 00:42:29 EEST LOG: checkpoint record is at 0/304E76A8 LOG: redo record is at 0/304E76A8; undo record is at 0/0; shutdown FALSE LOG: next transaction id: 3981836; next oid: 4003572 LOG: database system was not properly shut down; automatic recovery in progress LOG: redo starts at 0/304E76E8 LOG: ReadRecord: unexpected pageaddr 0/2C504000 in log file 0, segment 48, offset 5259264 LOG: redo done at 0/30503FDC PANIC: XLogWrite: write request 0/30504000 is past end of log 0/30504000 LOG: startup process (pid 2445) was terminated by signal 6 LOG: aborting startup due to startup process failure -' Hannu ---(end of broadcast)--- TIP 8: explain analyze is your friend