Remove trace_recovery_messages
authorMichael Paquier <[email protected]>
Mon, 11 Dec 2023 10:49:02 +0000 (11:49 +0100)
committerMichael Paquier <[email protected]>
Mon, 11 Dec 2023 10:49:02 +0000 (11:49 +0100)
This GUC was intended as a debugging help in the 9.0 area when hot
standby and streaming replication were being developped, able to offer
more information at LOG level rather than DEBUGn.  There are more tools
available these days that are able to offer rather equivalent
information, like pg_waldump introduced in 9.3.  It is not obvious how
this facility is useful these days, so let's remove it.

Author: Bharath Rupireddy
Discussion: https://postgr.es/m/[email protected]

doc/src/sgml/config.sgml
src/backend/access/transam/xlog.c
src/backend/access/transam/xlogrecovery.c
src/backend/storage/ipc/procarray.c
src/backend/storage/ipc/standby.c
src/backend/utils/cache/inval.c
src/backend/utils/error/elog.c
src/backend/utils/misc/guc_tables.c
src/include/miscadmin.h

index 94d1eb2b81a4c51df568685c60281643aef367b7..44cada2b4030c7ee2dd8fdadfcb72b69b26d396c 100644 (file)
@@ -11216,32 +11216,6 @@ dynamic_library_path = 'C:\tools\postgresql;H:\my_project\lib;$libdir'
       </listitem>
      </varlistentry>
 
-     <varlistentry id="guc-trace-recovery-messages" xreflabel="trace_recovery_messages">
-      <term><varname>trace_recovery_messages</varname> (<type>enum</type>)
-      <indexterm>
-       <primary><varname>trace_recovery_messages</varname> configuration parameter</primary>
-      </indexterm>
-      </term>
-      <listitem>
-       <para>
-        Enables logging of recovery-related debugging output that otherwise
-        would not be logged. This parameter allows the user to override the
-        normal setting of <xref linkend="guc-log-min-messages"/>, but only for
-        specific messages. This is intended for use in debugging hot standby.
-        Valid values are <literal>DEBUG5</literal>, <literal>DEBUG4</literal>,
-        <literal>DEBUG3</literal>, <literal>DEBUG2</literal>, <literal>DEBUG1</literal>, and
-        <literal>LOG</literal>.  The default, <literal>LOG</literal>, does not affect
-        logging decisions at all.  The other values cause recovery-related
-        debug messages of that priority or higher to be logged as though they
-        had <literal>LOG</literal> priority; for common settings of
-        <varname>log_min_messages</varname> this results in unconditionally sending
-        them to the server log.
-        This parameter can only be set in the <filename>postgresql.conf</filename>
-        file or on the server command line.
-       </para>
-      </listitem>
-     </varlistentry>
-
      <varlistentry id="guc-trace-sort" xreflabel="trace_sort">
       <term><varname>trace_sort</varname> (<type>boolean</type>)
       <indexterm>
index daed1a7a493736a6189c72e526669228f946952b..01e0484584b4becb91ac6ea8cf3bad0ac672cb6e 100644 (file)
@@ -7213,7 +7213,7 @@ RecoveryRestartPoint(const CheckPoint *checkPoint, XLogReaderState *record)
     */
    if (XLogHaveInvalidPages())
    {
-       elog(trace_recovery(DEBUG2),
+       elog(DEBUG2,
             "could not record restart point at %X/%X because there "
             "are unresolved references to invalid pages",
             LSN_FORMAT_ARGS(checkPoint->redo));
index 4bc4d3e32373bd34a9b1f715eaf8f23e1f0561b8..a2c8fa3981ca6e6db1745b499f7d99ef067afbc5 100644 (file)
@@ -1704,9 +1704,7 @@ PerformWalRecovery(void)
                                         LSN_FORMAT_ARGS(xlogreader->ReadRecPtr));
 
 #ifdef WAL_DEBUG
-           if (XLOG_DEBUG ||
-               (record->xl_rmid == RM_XACT_ID && trace_recovery_messages <= DEBUG2) ||
-               (record->xl_rmid != RM_XACT_ID && trace_recovery_messages <= DEBUG3))
+           if (XLOG_DEBUG)
            {
                StringInfoData buf;
 
index 36c5870412610c416ed7f74fb2e0124acc4e4b3b..976f7856fbfd4324143045f2a3a6d08b8229eccd 100644 (file)
@@ -1109,11 +1109,11 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
                                      running->oldestRunningXid))
            {
                standbyState = STANDBY_SNAPSHOT_READY;
-               elog(trace_recovery(DEBUG1),
+               elog(DEBUG1,
                     "recovery snapshots are now enabled");
            }
            else
-               elog(trace_recovery(DEBUG1),
+               elog(DEBUG1,
                     "recovery snapshot waiting for non-overflowed snapshot or "
                     "until oldest active xid on standby is at least %u (now %u)",
                     standbySnapshotPendingXmin,
@@ -1208,7 +1208,7 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
            KnownAssignedXidsAdd(xids[i], xids[i], true);
        }
 
-       KnownAssignedXidsDisplay(trace_recovery(DEBUG3));
+       KnownAssignedXidsDisplay(DEBUG3);
    }
 
    pfree(xids);
@@ -1280,11 +1280,11 @@ ProcArrayApplyRecoveryInfo(RunningTransactions running)
 
    Assert(FullTransactionIdIsValid(TransamVariables->nextXid));
 
-   KnownAssignedXidsDisplay(trace_recovery(DEBUG3));
+   KnownAssignedXidsDisplay(DEBUG3);
    if (standbyState == STANDBY_SNAPSHOT_READY)
-       elog(trace_recovery(DEBUG1), "recovery snapshots are now enabled");
+       elog(DEBUG1, "recovery snapshots are now enabled");
    else
-       elog(trace_recovery(DEBUG1),
+       elog(DEBUG1,
             "recovery snapshot waiting for non-overflowed snapshot or "
             "until oldest active xid on standby is at least %u (now %u)",
             standbySnapshotPendingXmin,
@@ -4339,7 +4339,7 @@ RecordKnownAssignedTransactionIds(TransactionId xid)
    Assert(TransactionIdIsValid(xid));
    Assert(TransactionIdIsValid(latestObservedXid));
 
-   elog(trace_recovery(DEBUG4), "record known xact %u latestObservedXid %u",
+   elog(DEBUG4, "record known xact %u latestObservedXid %u",
         xid, latestObservedXid);
 
    /*
@@ -4897,7 +4897,7 @@ KnownAssignedXidsRemove(TransactionId xid)
 {
    Assert(TransactionIdIsValid(xid));
 
-   elog(trace_recovery(DEBUG4), "remove KnownAssignedXid %u", xid);
+   elog(DEBUG4, "remove KnownAssignedXid %u", xid);
 
    /*
     * Note: we cannot consider it an error to remove an XID that's not
@@ -4951,13 +4951,13 @@ KnownAssignedXidsRemovePreceding(TransactionId removeXid)
 
    if (!TransactionIdIsValid(removeXid))
    {
-       elog(trace_recovery(DEBUG4), "removing all KnownAssignedXids");
+       elog(DEBUG4, "removing all KnownAssignedXids");
        pArray->numKnownAssignedXids = 0;
        pArray->headKnownAssignedXids = pArray->tailKnownAssignedXids = 0;
        return;
    }
 
-   elog(trace_recovery(DEBUG4), "prune KnownAssignedXids to %u", removeXid);
+   elog(DEBUG4, "prune KnownAssignedXids to %u", removeXid);
 
    /*
     * Mark entries invalid starting at the tail.  Since array is sorted, we
index cc22d2e87cc88d92eed011a7a2ebd0c9ddd57a77..cea47bf6e57249a0efb14ed73b436cb99313fb62 100644 (file)
@@ -997,8 +997,7 @@ StandbyAcquireAccessExclusiveLock(TransactionId xid, Oid dbOid, Oid relOid)
        TransactionIdDidAbort(xid))
        return;
 
-   elog(trace_recovery(DEBUG4),
-        "adding recovery lock: db %u rel %u", dbOid, relOid);
+   elog(DEBUG4, "adding recovery lock: db %u rel %u", dbOid, relOid);
 
    /* dbOid is InvalidOid when we are locking a shared relation. */
    Assert(OidIsValid(relOid));
@@ -1042,7 +1041,7 @@ StandbyReleaseXidEntryLocks(RecoveryLockXidEntry *xidentry)
    {
        LOCKTAG     locktag;
 
-       elog(trace_recovery(DEBUG4),
+       elog(DEBUG4,
             "releasing recovery lock: xid %u db %u rel %u",
             entry->key.xid, entry->key.dbOid, entry->key.relOid);
        /* Release the lock ... */
@@ -1109,7 +1108,7 @@ StandbyReleaseAllLocks(void)
    HASH_SEQ_STATUS status;
    RecoveryLockXidEntry *entry;
 
-   elog(trace_recovery(DEBUG2), "release all standby locks");
+   elog(DEBUG2, "release all standby locks");
 
    hash_seq_init(&status, RecoveryLockXidHash);
    while ((entry = hash_seq_search(&status)))
@@ -1369,7 +1368,7 @@ LogCurrentRunningXacts(RunningTransactions CurrRunningXacts)
    recptr = XLogInsert(RM_STANDBY_ID, XLOG_RUNNING_XACTS);
 
    if (CurrRunningXacts->subxid_overflow)
-       elog(trace_recovery(DEBUG2),
+       elog(DEBUG2,
             "snapshot of %d running transactions overflowed (lsn %X/%X oldest xid %u latest complete %u next xid %u)",
             CurrRunningXacts->xcnt,
             LSN_FORMAT_ARGS(recptr),
@@ -1377,7 +1376,7 @@ LogCurrentRunningXacts(RunningTransactions CurrRunningXacts)
             CurrRunningXacts->latestCompletedXid,
             CurrRunningXacts->nextXid);
    else
-       elog(trace_recovery(DEBUG2),
+       elog(DEBUG2,
             "snapshot of %d+%d running transaction ids (lsn %X/%X oldest xid %u latest complete %u next xid %u)",
             CurrRunningXacts->xcnt, CurrRunningXacts->subxcnt,
             LSN_FORMAT_ARGS(recptr),
index a041d7d604720cf3d00a913c366651882584775b..30d872dfde268431894fd5ea8207962904dacdb3 100644 (file)
@@ -966,13 +966,12 @@ ProcessCommittedInvalidationMessages(SharedInvalidationMessage *msgs,
    if (nmsgs <= 0)
        return;
 
-   elog(trace_recovery(DEBUG4), "replaying commit with %d messages%s", nmsgs,
+   elog(DEBUG4, "replaying commit with %d messages%s", nmsgs,
         (RelcacheInitFileInval ? " and relcache file invalidation" : ""));
 
    if (RelcacheInitFileInval)
    {
-       elog(trace_recovery(DEBUG4), "removing relcache init files for database %u",
-            dbid);
+       elog(DEBUG4, "removing relcache init files for database %u", dbid);
 
        /*
         * RelationCacheInitFilePreInvalidate, when the invalidation message
index 6aeb855e491bd650e5db9994aa28bc564f1afd48..6ea575a53b157fa7665eda588c83382834f04009 100644 (file)
@@ -3759,29 +3759,3 @@ write_stderr_signal_safe(const char *str)
        nwritten += rc;
    }
 }
-
-
-/*
- * Adjust the level of a recovery-related message per trace_recovery_messages.
- *
- * The argument is the default log level of the message, eg, DEBUG2.  (This
- * should only be applied to DEBUGn log messages, otherwise it's a no-op.)
- * If the level is >= trace_recovery_messages, we return LOG, causing the
- * message to be logged unconditionally (for most settings of
- * log_min_messages).  Otherwise, we return the argument unchanged.
- * The message will then be shown based on the setting of log_min_messages.
- *
- * Intention is to keep this for at least the whole of the 9.0 production
- * release, so we can more easily diagnose production problems in the field.
- * It should go away eventually, though, because it's an ugly and
- * hard-to-explain kluge.
- */
-int
-trace_recovery(int trace_level)
-{
-   if (trace_level < LOG &&
-       trace_level >= trace_recovery_messages)
-       return LOG;
-
-   return trace_level;
-}
index 6474e35ec04b6a6865aa349fea4a8863946405e2..f7c9882f7c514304fbf083d83f117913ecaff948 100644 (file)
@@ -525,7 +525,6 @@ int         log_parameter_max_length_on_error = 0;
 int            log_temp_files = -1;
 double     log_statement_sample_rate = 1.0;
 double     log_xact_sample_rate = 0;
-int            trace_recovery_messages = LOG;
 char      *backtrace_functions;
 
 int            temp_file_limit = -1;
@@ -4780,23 +4779,6 @@ struct config_enum ConfigureNamesEnum[] =
        NULL, NULL, NULL
    },
 
-   {
-       {"trace_recovery_messages", PGC_SIGHUP, DEVELOPER_OPTIONS,
-           gettext_noop("Enables logging of recovery-related debugging information."),
-           gettext_noop("Each level includes all the levels that follow it. The later"
-                        " the level, the fewer messages are sent."),
-           GUC_NOT_IN_SAMPLE,
-       },
-       &trace_recovery_messages,
-
-       /*
-        * client_message_level_options allows too many values, really, but
-        * it's not worth having a separate options array for this.
-        */
-       LOG, client_message_level_options,
-       NULL, NULL, NULL
-   },
-
    {
        {"track_functions", PGC_SUSET, STATS_CUMULATIVE,
            gettext_noop("Collects function-level statistics on database activity."),
index f0cc651435cece3975be1fd4fa43b8993977b4bc..1043a4d7821bf8f2fd19fb1095f78e6e7f11f7a6 100644 (file)
@@ -302,10 +302,6 @@ extern void PreventCommandIfReadOnly(const char *cmdname);
 extern void PreventCommandIfParallelMode(const char *cmdname);
 extern void PreventCommandDuringRecovery(const char *cmdname);
 
-/* in utils/misc/guc_tables.c */
-extern PGDLLIMPORT int trace_recovery_messages;
-extern int trace_recovery(int trace_level);
-
 /*****************************************************************************
  *   pdir.h --                                                              *
  *         POSTGRES directory path definitions.                             *