• Peter Eisentraut's avatar
    Improve handling of parameter differences in physical replication · 246f136e
    Peter Eisentraut authored
    When certain parameters are changed on a physical replication primary,
    this is communicated to standbys using the XLOG_PARAMETER_CHANGE WAL
    record.  The standby then checks whether its own settings are at least
    as big as the ones on the primary.  If not, the standby shuts down
    with a fatal error.
    
    The correspondence of settings between primary and standby is required
    because those settings influence certain shared memory sizings that
    are required for processing WAL records that the primary might send.
    For example, if the primary sends a prepared transaction, the standby
    must have had max_prepared_transaction set appropriately or it won't
    be able to process those WAL records.
    
    However, fatally shutting down the standby immediately upon receipt of
    the parameter change record might be a bit of an overreaction.  The
    resources related to those settings are not required immediately at
    that point, and might never be required if the activity on the primary
    does not exhaust all those resources.  If we just let the standby roll
    on with recovery, it will eventually produce an appropriate error when
    those resources are used.
    
    So this patch relaxes this a bit.  Upon receipt of
    XLOG_PARAMETER_CHANGE, we still check the settings but only issue a
    warning and set a global flag if there is a problem.  Then when we
    actually hit the resource issue and the flag was set, we issue another
    warning message with relevant information.  At that point we pause
    recovery, so a hot standby remains usable.  We also repeat the last
    warning message once a minute so it is harder to miss or ignore.
    Reviewed-by: default avatarSergei Kornilov <sk@zsrv.org>
    Reviewed-by: default avatarMasahiko Sawada <masahiko.sawada@2ndquadrant.com>
    Reviewed-by: default avatarKyotaro Horiguchi <horikyota.ntt@gmail.com>
    Discussion: https://www.postgresql.org/message-id/flat/4ad69a4c-cc9b-0dfe-0352-8b1b0cd36c7b@2ndquadrant.com
    246f136e
twophase.c 69.7 KB