Known issues
============

These are currently known issues in EDB Postgres Distributed 5. These
known issues are tracked in PGD’s ticketing system and are expected to
be resolved in a future release.

-  If the resolver for the ``update_origin_change`` conflict is set to
   ``skip`` , ``synchronous_commit=remote_apply`` is used, and
   concurrent updates of the same row are repeatedly applied on two
   different nodes, then one of the update statements might hang due to
   a deadlock with the PGD writer. As mentioned in :ref:`Conflicts <Conflicts>`  ,
   ``skip`` isn’t the default resolver for the ``update_origin_change``
   conflict, and this combination isn’t intended to be used in
   production. It discards one of the two conflicting updates based on
   the order of arrival on that node, which is likely to cause a
   divergent cluster. In the rare situation that you do choose to use
   the ``skip`` conflict resolver, note the issue with the use of the
   ``remote_apply`` mode.

-  The Decoding Worker feature doesn’t work with CAMO/Eager/Group
   Commit. Installations using CAMO/Eager/Group Commit must keep
   ``enable_wal_decoder`` disabled.

-  Lag Control doesn’t adjust commit delay in any way on a fully
   isolated node, that is, in case all other nodes are unreachable or
   not operational. As soon as at least one node is connected,
   replication Lag Control picks up its work and adjusts the PGD commit
   delay again.

-  For time-based Lag Control, PGD currently uses the lag time (measured
   by commit timestamps) rather than the estimated catchup time that’s
   based on historic apply rates.

-  Changing the CAMO partners in a CAMO pair isn’t currently possible.
   It’s possible only to add or remove a pair. Adding or removing a pair
   doesn’t need a restart of Postgres or even a reload of the
   configuration.

-  Group Commit can’t be combined with :ref:`CAMO or commit-at-most-once <CAMO or commit-at-most-once>`  or `Eager All-Node
   Replication <consistency/eager/>`__. Eager Replication currently
   works only by using the global PGD commit scope.

-  Transactions using Eager Replication can’t yet execute DDL. The
   TRUNCATE command is allowed.

-  Parallel apply isn’t currently supported in combination with Group
   Commit. Make sure to disable it when using Group Commit by either: -
   Setting ``num_writers`` to 1 for the node group using :ref:`Group configuration using bdr.alter_node_group_config() <Group configuration using bdr.alter_node_group_config()>`  .
   - Using the GUC ``bdr.writers_per_subscription`` . See :ref:`Configuration of generic replication <PGD settings>` 
   .

-  There currently is no protection against altering or removing a
   commit scope. Running transactions in a commit scope that’s
   concurrently being altered or removed can lead to the transaction
   blocking or replication stalling completely due to an error on the
   downstream node attempting to apply the transaction. Ensure that any
   transactions using a specific commit scope have finished before
   altering or removing it.

-  The :ref:`Configuring PGD CLI <Configuring PGD CLI>`  can return stale data on the state of the cluster
   if it’s still connecting to nodes that were previously parted from
   the cluster. Edit the :ref:`pgd-cli-config.yml <Configuring PGD CLI>`  file, or change your
   :ref:`--dsn <Configuring PGD CLI>`  settings to ensure only active nodes in the cluster are
   listed for connection.

Details of other design or implementation :ref:`Limitations <Limitations>`  are also
available.
