aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon Riggs <simon@2ndQuadrant.com>2012-06-07 19:22:47 +0100
committerSimon Riggs <simon@2ndQuadrant.com>2012-06-07 19:22:47 +0100
commit2c8a4e9be2730342cbca85150a2a9d876aa77ff6 (patch)
treed4431bf22e39c7c2a145cb2ce838f2cad6e0d3f8
parentb50991eedb458a81d875d049f48fb62ab1685c0d (diff)
downloadpostgresql-2c8a4e9be2730342cbca85150a2a9d876aa77ff6.tar.gz
postgresql-2c8a4e9be2730342cbca85150a2a9d876aa77ff6.zip
Wake WALSender to reduce data loss at failover for async commit.
WALSender now woken up after each background flush by WALwriter, avoiding multi-second replication delay for an all-async commit workload. Replication delay reduced from 7s with default settings to 200ms and often much less, allowing significantly reduced data loss at failover. Andres Freund and Simon Riggs
-rw-r--r--src/backend/access/transam/xlog.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/backend/access/transam/xlog.c b/src/backend/access/transam/xlog.c
index d3650bdf051..0f2678cfda0 100644
--- a/src/backend/access/transam/xlog.c
+++ b/src/backend/access/transam/xlog.c
@@ -2271,6 +2271,13 @@ XLogBackgroundFlush(void)
END_CRIT_SECTION();
+ /*
+ * If we wrote something then we have something to send to standbys also,
+ * otherwise the replication delay become around 7s with just async commit.
+ */
+ if (wrote_something)
+ WalSndWakeup();
+
return wrote_something;
}