]> granicus.if.org Git - postgresql/commitdiff
Revoke augmentation of WAL records for btree delete, per discussion.
authorSimon Riggs <simon@2ndQuadrant.com>
Mon, 1 Feb 2010 13:40:28 +0000 (13:40 +0000)
committerSimon Riggs <simon@2ndQuadrant.com>
Mon, 1 Feb 2010 13:40:28 +0000 (13:40 +0000)
doc/src/sgml/config.sgml
src/backend/access/nbtree/nbtpage.c
src/backend/access/transam/xlog.c
src/backend/utils/misc/guc.c
src/backend/utils/misc/postgresql.conf.sample
src/include/access/xlog.h

index c8c30c984155c323ce8551c235c9d2ce018bf825..077039e3e1535eb88825eca1aee29dbb8e3105d7 100644 (file)
@@ -1,4 +1,4 @@
-<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.247 2010/01/29 18:39:05 sriggs Exp $ -->
+<!-- $PostgreSQL: pgsql/doc/src/sgml/config.sgml,v 1.248 2010/02/01 13:40:28 sriggs Exp $ -->
 
 <chapter Id="runtime-config">
   <title>Server Configuration</title>
@@ -1840,22 +1840,6 @@ archive_command = 'copy "%p" "C:\\server\\archivedir\\%f"'  # Windows
       </listitem>
      </varlistentry>
 
-     <varlistentry id="minimize-standby-conflicts" xreflabel="minimize_standby_conflicts">
-      <term><varname>minimize_standby_conflicts</varname> (<type>boolean</type>)</term>
-      <indexterm>
-       <primary><varname>minimize_standby_conflicts</> configuration parameter</primary>
-      </indexterm>
-      <listitem>
-       <para>
-        Generates additional information to the transaction log (WAL) to minimize
-        the number of false positive cancelations caused by recovery conflicts on
-        a standby server that consumes WAL data from this server.
-        There is additional performance cost to enabling this parameter.
-        Parameter has no effect during recovery, only in normal running.
-       </para>
-      </listitem>
-     </varlistentry>
-
      </variablelist>
     </sect2>
    </sect1>
index 5fa4724602f1ab4fc1763bce752325fc94531c1d..71b23644e2b06787d8384a234219fb940fce126c 100644 (file)
@@ -9,7 +9,7 @@
  *
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.116 2010/01/29 18:39:05 sriggs Exp $
+ *       $PostgreSQL: pgsql/src/backend/access/nbtree/nbtpage.c,v 1.117 2010/02/01 13:40:28 sriggs Exp $
  *
  *     NOTES
  *        Postgres btree pages look like ordinary relation pages.      The opaque
@@ -29,7 +29,6 @@
 #include "storage/freespace.h"
 #include "storage/indexfsm.h"
 #include "storage/lmgr.h"
-#include "storage/procarray.h"
 #include "utils/inval.h"
 #include "utils/snapmgr.h"
 
@@ -672,18 +671,9 @@ _bt_delitems(Relation rel, Buffer buf,
 {
        Page            page = BufferGetPage(buf);
        BTPageOpaque opaque;
-       TransactionId latestRemovedXid = InvalidTransactionId;
 
        Assert(isVacuum || lastBlockVacuumed == 0);
 
-       /*
-        * If allowed, calculate an accurate latestRemovedXid, otherwise
-        * pass InvalidTransactionId which can cause false positive
-        * conflicts to be assessed when we replay this WAL record.
-        */
-       if (!isVacuum && XLogStandbyInfoActive() && MinimizeStandbyConflicts)
-               latestRemovedXid = GetOldestXmin(false, true);
-
        /* No ereport(ERROR) until changes are logged */
        START_CRIT_SECTION();
 
@@ -731,7 +721,13 @@ _bt_delitems(Relation rel, Buffer buf,
                        xlrec_delete.node = rel->rd_node;
                        xlrec_delete.block = BufferGetBlockNumber(buf);
 
-                       xlrec_delete.latestRemovedXid = latestRemovedXid;
+                       /*
+                        * XXX: We would like to set an accurate latestRemovedXid, but
+                        * there is no easy way of obtaining a useful value. So we punt
+                        * and store InvalidTransactionId, which forces the standby to
+                        * wait for/cancel all currently running transactions.
+                        */
+                       xlrec_delete.latestRemovedXid = InvalidTransactionId;
                        rdata[0].data = (char *) &xlrec_delete;
                        rdata[0].len = SizeOfBtreeDelete;
                }
index 8aa7976e3e3ca37c398b9a9e5399d814c44e25e7..49adda12f9a7c2ef09607a7862d4b1b91318f6f4 100644 (file)
@@ -7,7 +7,7 @@
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.365 2010/01/29 18:39:05 sriggs Exp $
+ * $PostgreSQL: pgsql/src/backend/access/transam/xlog.c,v 1.366 2010/02/01 13:40:28 sriggs Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -71,7 +71,6 @@ bool          XLogArchiveMode = false;
 char      *XLogArchiveCommand = NULL;
 bool           XLogRequestRecoveryConnections = true;
 int                    MaxStandbyDelay = 30;
-bool           MinimizeStandbyConflicts = false;
 bool           fullPageWrites = true;
 bool           log_checkpoints = false;
 int                    sync_method = DEFAULT_SYNC_METHOD;
index adf9f72b3596aa7ea8e9f05559034b5cf217a694..642fc6796a38614aa804f746e9d67dcb2564ecf8 100644 (file)
@@ -10,7 +10,7 @@
  * Written by Peter Eisentraut <peter_e@gmx.net>.
  *
  * IDENTIFICATION
- *       $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.537 2010/01/29 18:39:05 sriggs Exp $
+ *       $PostgreSQL: pgsql/src/backend/utils/misc/guc.c,v 1.538 2010/02/01 13:40:28 sriggs Exp $
  *
  *--------------------------------------------------------------------
  */
@@ -1222,17 +1222,6 @@ static struct config_bool ConfigureNamesBool[] =
                true, NULL, NULL
        },
 
-       {
-               {"minimize_standby_conflicts", PGC_POSTMASTER, WAL_SETTINGS,
-                       gettext_noop("Additional information is added to WAL records to"
-                                                " minimize the number of false positive cancelations"
-                                                " caused by recovery conflicts on WAL standby nodes."),
-                       NULL
-               },
-               &MinimizeStandbyConflicts,
-               false, NULL, NULL
-       },
-
        {
                {"allow_system_table_mods", PGC_POSTMASTER, DEVELOPER_OPTIONS,
                        gettext_noop("Allows modifications of the structure of system tables."),
index 928ccc76edf85a011c7ed87fdde64cbc4857b728..c915d19d66f8ea1af5fad2c57695462cb57a8cf7 100644 (file)
 # - Hot Standby -
 
 #recovery_connections = on     # allows connections during recovery
-#minimize_standby_conflicts = on # additional WAL info to avoid conflicts
-#max_standby_delay = 30                # max acceptable standby lag (s) to help queries
-                               # complete without conflict; -1 disables
+#max_standby_delay = 30                # max acceptable standby lag (s) to allow queries
+                               # to complete without conflict; -1 disables
 
 # - Replication -
 
index 546452f282f30fac6e1375b510990a318ae09fda..daae5077f7268aceb77ec63fb5d5762acecd0b17 100644 (file)
@@ -6,7 +6,7 @@
  * Portions Copyright (c) 1996-2010, PostgreSQL Global Development Group
  * Portions Copyright (c) 1994, Regents of the University of California
  *
- * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.100 2010/01/29 18:39:05 sriggs Exp $
+ * $PostgreSQL: pgsql/src/include/access/xlog.h,v 1.101 2010/02/01 13:40:28 sriggs Exp $
  */
 #ifndef XLOG_H
 #define XLOG_H
@@ -183,7 +183,6 @@ extern int  XLogArchiveTimeout;
 extern bool log_checkpoints;
 extern bool XLogRequestRecoveryConnections;
 extern int MaxStandbyDelay;
-extern bool MinimizeStandbyConflicts;
 
 #define XLogArchivingActive()  (XLogArchiveMode)
 #define XLogArchiveCommandSet() (XLogArchiveCommand[0] != '\0')