Re: [HACKERS] During Xlog replaying, is there maybe emitted xlog?

2012-07-17 Thread Tom Lane
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

-- 
Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org)
To make changes to your subscription:
http://www.postgresql.org/mailpref/pgsql-hackers


Re: [HACKERS] During Xlog replaying, is there maybe emitted xlog?

2012-07-17 Thread xu2002261
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