• Heikki Linnakangas's avatar
    Fix some serious bugs in archive recovery, now that bgwriter is active · 7e48b77b
    Heikki Linnakangas authored
    during it:
    
    When bgwriter is active, the startup process can't perform mdsync() correctly
    because it won't see the fsync requests accumulated in bgwriter's private
    pendingOpsTable. Therefore make bgwriter responsible for the end-of-recovery
    checkpoint as well, when it's active.
    
    When bgwriter is active (= archive recovery), the startup process must not
    accumulate fsync requests to its own pendingOpsTable, since bgwriter won't
    see them there when it performs restartpoints. Make startup process drop its
    pendingOpsTable when bgwriter is launched to avoid that.
    
    Update minimum recovery point one last time when leaving archive recovery.
    It won't be updated by the end-of-recovery checkpoint because XLogFlush()
    sees us as out of recovery already.
    
    This fixes bug #4879 reported by Fujii Masao.
    7e48b77b
xlog.h 8.3 KB