<commit_before>.. _timelock-client-configuration:

Timelock Client Configuration
=============================

You will need to update your AtlasDB configuration in order to have said clients request timestamps and locks from
external Timelock Servers as opposed to their embedded services. This is an extension of the leader block configuration
options discussed at :ref:`leader-config`.

TimeLock client configuration spans both ``install`` and ``runtime`` configuration.

Install-Time Configuration
--------------------------

Instead of configuring a ``leader`` block, or both a ``timestamp`` and ``lock`` block, one must instead specify a
single ``timelock`` block if your product uses the Timelock Server. The ``leader`` block and the ``timestamp``/``lock``
blocks must be absent from the config if you are using the Timelock Server.

.. danger::

    Changing the TimeLock ``client`` will mean that one receives timestamps from a different timestamp service.
    This may result in **SEVERE DATA CORRUPTION** as the timestamp service's guarantees may be broken.
    Doing this safely requires a fast forward of the new client to at least the highest timestamp given out from the old client.
    Please contact the AtlasDB team for assistance on such an operation.

Required parameters:

.. list-table::
    :widths: 5 40
    :header-rows: 1

    *    - Property
         - Description

    *    - client
         - The name of your client, generally the same as your application name.
           Note that if the top-level AtlasDB ``namespace`` configuration parameter is set, then this parameter need not be set.
           However, if it is, then this parameter MUST be equal to the AtlasDB ``namespace``, or AtlasDB will fail to start.

           Note that client names must be non-empty and consist of only alphanumeric characters, dashes and
           underscores (succinctly, ``[a-zA-Z0-9_-]+``) and for backwards compatibility cannot be the reserved word ``leader``.

Optional parameters:
<commit_msg>Add warning about non-standard topology (#5750)<commit_after>.. _timelock-client-configuration:

Timelock Client Configuration
=============================

You will need to update your AtlasDB configuration in order to have said clients request timestamps and locks from
external Timelock Servers as opposed to their embedded services. This is an extension of the leader block configuration
options discussed at :ref:`leader-config`.

TimeLock client configuration spans both ``install`` and ``runtime`` configuration.

Install-Time Configuration
--------------------------

Instead of configuring a ``leader`` block, or both a ``timestamp`` and ``lock`` block, one must instead specify a
single ``timelock`` block if your product uses the Timelock Server. The ``leader`` block and the ``timestamp``/``lock``
blocks must be absent from the config if you are using the Timelock Server.

.. danger::

    Changing the TimeLock ``client`` will mean that one receives timestamps from a different timestamp service.
    This may result in **SEVERE DATA CORRUPTION** as the timestamp service's guarantees may be broken.
    Doing this safely requires a fast forward of the new client to at least the highest timestamp given out from the old client.
    Please contact the AtlasDB team for assistance on such an operation.

Required parameters:

.. list-table::
    :widths: 5 40
    :header-rows: 1

    *    - Property
         - Description

    *    - client
         - The name of your client, generally the same as your application name.
           Note that if the top-level AtlasDB ``namespace`` configuration parameter is set, then this parameter need not be set.
           However, if it is, then this parameter MUST be equal to the AtlasDB ``namespace``, or AtlasDB will fail to start.

           Note that client names must be non-empty and consist of only alphanumeric characters, dashes and
           underscores (succinctly, ``[a-zA-Z0-9_-]+``) and for backwards compatibility cannot be the reserved word ``leader``.
           
.. warning::

    First-time installations of some services using DbKvs may require these names to be different.
    Additional configuration is required in these specific cases, but in these cases you must **never** change either the client or namespace name,
    as doing so will cause **SEVERE DATA CORRUPTION**.
    Please consult internal documentation or contact AtlasDB support if you think you need these parameters to be different. 

Optional parameters:

{'fraction_non_alphanumeric': 0.08709106984969053, 'fraction_numerical': 0.0035366931918656055, 'mean_word_length': 3.5295295295295297, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6004028', 'n_tokens_mistral': 1109, 'n_tokens_neox': 1042, 'n_words': 592}