commit 8f7568e4c438d9e6264458d7472747fda84ccace
Author: jcoleman <james.coleman@getbraintree.com>
Date:   Fri Sep 13 18:12:29 2019 +0000

    Document autovacuum interruption
    
    It's important users be able to know (without looking at the source
    code) that running DDL or DDL-like commands frequently can interrupt
    autovacuum enough that it will effectively never run, resulting in
    lots of pain with dead tuples.

diff --git a/doc/src/sgml/maintenance.sgml b/doc/src/sgml/maintenance.sgml
index d95c218d39..b138fba0c7 100644
--- a/doc/src/sgml/maintenance.sgml
+++ b/doc/src/sgml/maintenance.sgml
@@ -825,6 +825,26 @@ analyze threshold = analyze base threshold + analyze scale factor * number of tu
     <literal>autovacuum_vacuum_cost_limit</literal> storage parameters have been set
     are not considered in the balancing algorithm.
    </para>
+
+   <para>
+    Autovacuum workers generally avoid interfering with other commands.
+    If a process attempts to acquire a lock that conficts with the
+    <literal>SHARE UPDATE EXCLUSIVE</literal> lock held by autovacuum
+    (see <xref linkend="mvcc-locking-tables-table-lock-compatibility"/>), lock
+    acquisition will interrupt the autovacuum.  However if the autovacuum is
+    running to prevent transaction ID wraparound (i.e., the autovacuum query
+    name in the <structname>pg_stat_activity</structname> view ends with
+    <literal>(for wraparound)</literal>), the autovacuum is not automatically
+    interrupted.
+   </para>
+
+   <warning>
+    <para>
+      Regularly running commands that acquire locks conflicting with a
+      <literal>SHARE UPDATE EXCLUSIVE</literal> lock (e.g., ANALYZE) can
+      effectively prevent autovacuums from ever completing.
+    </para>
+   </warning>
   </sect2>
  </sect1>
 
