Thanks a lot. oops, indeed, the clean up stage is not in the XLog replay, So there is no problem.
2012-07-18 xu2002261 发件人： Tom Lane 发送时间： 2012-07-18 10:05:26 收件人： xu2002261 抄送： pgsql-hackers 主题： Re: [HACKERS] During Xlog replaying, is there maybe emitted xlog? "xu2002261" <xu2002...@163.com> writes: > Hi all, > I reviewed the source code, and saw the following calling path: > StartupXLOG() > StartupDatabase() > RmgrTable[rmid].rm_cleanup() > > btree_xlog_cleanup() > _bt_insert_parent > _bt_insertonpg() > XLogInsert() > As we can see, during xlog replaying, XLog may be emitted. So whether there > are some *ISSUE* in above calling stack? No, it's entirely correct. That path isn't "during" replay, it's upon completion of replay, where we're cleaning up anything that failed to be completed before the crash. Emitting more WAL is allowed then. Note the comment a few lines above the rm_cleanup calls: /* * Resource managers might need to write WAL records, eg, to record * index cleanup actions. So temporarily enable XLogInsertAllowed in * this process only. */ regards, tom lane