mirror of
https://github.com/postgres/postgres.git
synced 2025-08-25 20:23:07 +03:00
Run checkpointer and bgwriter in crash recovery.
Start up the checkpointer and bgwriter during crash recovery (except in
--single mode), as we do for replication. This wasn't done back in
commit cdd46c76
out of caution. Now it seems like a better idea to make
the environment as similar as possible in both cases. There may also be
some performance advantages.
Reviewed-by: Robert Haas <robertmhaas@gmail.com>
Reviewed-by: Aleksander Alekseev <aleksander@timescale.com>
Tested-by: Jakub Wartak <Jakub.Wartak@tomtom.com>
Discussion: https://postgr.es/m/CA%2BhUKGJ8NRsqgkZEnsnRc2MFROBV-jCnacbYvtpptK2A9YYp9Q%40mail.gmail.com
This commit is contained in:
@@ -129,10 +129,10 @@ InitSync(void)
|
||||
{
|
||||
/*
|
||||
* Create pending-operations hashtable if we need it. Currently, we need
|
||||
* it if we are standalone (not under a postmaster) or if we are a startup
|
||||
* or checkpointer auxiliary process.
|
||||
* it if we are standalone (not under a postmaster) or if we are a
|
||||
* checkpointer auxiliary process.
|
||||
*/
|
||||
if (!IsUnderPostmaster || AmStartupProcess() || AmCheckpointerProcess())
|
||||
if (!IsUnderPostmaster || AmCheckpointerProcess())
|
||||
{
|
||||
HASHCTL hash_ctl;
|
||||
|
||||
@@ -589,27 +589,3 @@ RegisterSyncRequest(const FileTag *ftag, SyncRequestType type,
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/*
|
||||
* In archive recovery, we rely on checkpointer to do fsyncs, but we will have
|
||||
* already created the pendingOps during initialization of the startup
|
||||
* process. Calling this function drops the local pendingOps so that
|
||||
* subsequent requests will be forwarded to checkpointer.
|
||||
*/
|
||||
void
|
||||
EnableSyncRequestForwarding(void)
|
||||
{
|
||||
/* Perform any pending fsyncs we may have queued up, then drop table */
|
||||
if (pendingOps)
|
||||
{
|
||||
ProcessSyncRequests();
|
||||
hash_destroy(pendingOps);
|
||||
}
|
||||
pendingOps = NULL;
|
||||
|
||||
/*
|
||||
* We should not have any pending unlink requests, since mdunlink doesn't
|
||||
* queue unlink requests when isRedo.
|
||||
*/
|
||||
Assert(pendingUnlinks == NIL);
|
||||
}
|
||||
|
Reference in New Issue
Block a user