{"Entry":{"collection":"guc","key":"log_recovery_conflict_waits","name":"log_recovery_conflict_waits","aliases":[],"metadata":{"baseline":false,"boot_human":"Not specified","boot_val":null,"category":"Reporting and Logging / What to Log","category_zh":"","changed_in":[],"changes":[{"documentation_changed":false,"fields":{},"from":"13","status":"added","to":"14"}],"content_hash":"9d61373b81920023f74e604169f647736e2a07e601d402ddee8acbbde14f983f","context":"","default_changed_in":[],"default_history":[{"from":"14","to":"19","value":"off"}],"editorial":{"advice":{"olap":"Analytical jobs can justify richer log_recovery_conflict_waits telemetry, but account for long statements, large bind values, and bursty completion patterns in the log pipeline.","oltp":"Tune log_recovery_conflict_waits against an explicit observability question and a measured log-volume budget. Prefer selective thresholds, sampling, or role-level overrides over indiscriminate capture.","small":"Keep log_recovery_conflict_waits useful but bounded: verify disk, collector, retention, and redaction capacity before increasing detail or frequency."},"mechanism":["log_recovery_conflict_waits logs standby recovery conflict waits. On a standby, recovery conflict waits are reported after deadlock_timeout, exposing replay delays before cancellation is necessarily required.","log_recovery_conflict_waits is a SIGHUP-context setting: a configuration reload activates the new server value without a restart; subsequent operations that consult it use the refreshed value.","It changes emitted diagnostic data rather than query semantics, but volume, sensitive content, log_line_prefix, destinations, collector throughput, and retention determine operational cost and usefulness."],"pitfalls":["Editing log_recovery_conflict_waits without reloading configuration and verifying the effective value and subsequent behavior.","Enabling richer logging without budgeting collector throughput, storage, retention, and downstream query cost.","Writing SQL text, bind values, identities, or host data without a redaction and access-control policy.","Changing log_recovery_conflict_waits globally without a rollback plan and a client or operational compatibility test."],"references":[{"title":"PostgreSQL 19 Beta 4: log_recovery_conflict_waits","url":"https://www.postgresql.org/docs/19/runtime-config-logging.html#GUC-LOG-RECOVERY-CONFLICT-WAITS"},{"title":"PostgreSQL 19 release notes","url":"https://www.postgresql.org/docs/19/release-19.html"}],"related":["log_checkpoints","log_autovacuum_min_duration","log_lock_waits","log_lock_failures","log_temp_files","log_replication_commands"],"summary":"log_recovery_conflict_waits is the PostgreSQL setting that controls whether PostgreSQL logs standby recovery conflict waits."},"enumvals":[],"first_version":"14","group":"Reporting and Logging","group_slug":"logging","imported_at":"2026-09-30T00:40:57.403829+08:00","intro_commit":{"authored_at":"2021-01-08T00:47:03+09:00","discussion":["https://postgr.es/m/9a60178c-a853-1440-2cdc-c3af916cff59@amazon.com"],"hash":"0650ff23038bc3eb8d8fd851744db837d921e285","subject":"Add GUC to log long wait times on recovery conflicts.","url":"https://git.postgresql.org/gitweb/?p=postgresql.git;a=commit;h=0650ff23038bc3eb8d8fd851744db837d921e285"},"key":"log_recovery_conflict_waits","last_version":"20","max_val":"","min_val":"","name":"log_recovery_conflict_waits","position":242,"present_in":["14","15","16","17","18","19","20"],"short_desc":"Controls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts.","short_desc_zh":"","source_rev":"english-manuals:5cc019b8d15dacb98dfe709daf48f755368f2118cd4bec40822df1c460b11bcf","unit":"","vartype":"bool"}},"Definition":{"Collection":"guc","Key":"log_recovery_conflict_waits","SourceDatabase":"center","Version":"18","SourceTable":"guc","SourceKey":"log_recovery_conflict_waits","SourceRevision":"english-manuals:5cc019b8d15dacb98dfe709daf48f755368f2118cd4bec40822df1c460b11bcf","Facts":{"boot_val":"off","category":"Reporting and Logging / What to Log","context":"sighup","description":"Controls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts. This is useful in determining if recovery conflicts prevent the recovery from applying WAL. The default is off. This parameter can only be set in the postgresql.conf file or on the server command line.","doc":{"anchor":"GUC-LOG-RECOVERY-CONFLICT-WAITS","file":"runtime-config-logging.html","lang":"en","sha256":"93c48c522a72fca19705c4c91a71e951eae653662008eee2e4a9a74a11127fde","slug":"18"},"documented":true,"enumvals":null,"extra_desc":null,"lang":"en","max_val":null,"metadata_version":"18","min_val":null,"name":"log_recovery_conflict_waits","short_desc":"Logs standby recovery conflict waits.","source":"pg-settings-source-snapshot","unit":null,"vartype":"bool"},"ManualEvidence":{"doc":{"anchor":"GUC-LOG-RECOVERY-CONFLICT-WAITS","file":"runtime-config-logging.html","lang":"en","sha256":"93c48c522a72fca19705c4c91a71e951eae653662008eee2e4a9a74a11127fde","slug":"18"}},"MeasuredEvidence":{"metadata_version":"18"}},"Text":{"Collection":"guc","Key":"log_recovery_conflict_waits","SourceDatabase":"center","Version":"18","Locale":"en","Title":"log_recovery_conflict_waits","Summary":"Controls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts. This is useful in determining if recovery conflicts prevent the recovery from applying WAL. The default is off. This parameter can only be set in the postgresql.conf file or on the server command line.","BodyHTML":"\u003cp\u003eControls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts. This is useful in determining if recovery conflicts prevent the recovery from applying WAL. The default is off. This parameter can only be set in the postgresql.conf file or on the server command line.\u003c/p\u003e","SourceRevision":"english-manuals:5cc019b8d15dacb98dfe709daf48f755368f2118cd4bec40822df1c460b11bcf","ContentHash":"58c3194193647d0c9146244b15d5a83a70adb884e34e7124c8be7ecbeccd4f32","Payload":{"description":"Controls whether a log message is produced when the startup process waits longer than deadlock_timeout for recovery conflicts. This is useful in determining if recovery conflicts prevent the recovery from applying WAL. The default is off. This parameter can only be set in the postgresql.conf file or on the server command line."}},"RequestedLocale":"zh-Hans","Fallback":true,"Versions":["14","15","16","17","18","19","20"],"Locales":["en"],"Signatures":null,"Spellings":null,"SQLState":null,"Evidence":null}
