
| Product | Affected Versions | Related Issues | Fixed In |
| :------------------------- | :------------------ | :---------------- | :------- |
| {{<product "yba">}} | {{<release "2.20.8.1, 2024.1.3.1, 2024.2.0.0, 2.23.1.0">}} | {{< ta 22802 >}} | {{<release "2.20.9.0, 2024.1.4.0, 2024.2.1.0, 2.25.0.0">}} |

## Description

In response to {{< ta 22802 >}}, Yugabyte added a DDL Atomicity Health Check Alert into YB Anywhere to mimic the `ddl_atomicity_check_script_python3.py` detection script found in the TA.

In the affected versions, the YB Anywhere DDL Attomicity Health check can produce false positive results due to a bug in the health check template. This means that it will incorrectly flag healthy tables as having an atomicity issue.

Note:  The `ddl_atomicity_check_script_python3.py` detection script from the TA document does not have this bug, and should provide accurate results. Only the integrated Health Check in YBA is affected.

## Mitigation

For the resolution, you can either:

1. Upgrade YB Anywhere to a version that contains the fixed Health Check (a DB upgrade isn't required)
2. Make a 1-line change to the Health Check template and restart YBA

## Details

### Steps

#### Option 1: Upgrade YBA to a Version with the Fix

The following versions have a fixed Health Check template:

- {{<release "2.20.9.0">}} or later.
- {{<release "2024.1.4.0">}} or later.
- {{<release "2024.2.1.0">}} or later.
- {{<release "2.25.0.0">}} or later.

#### Option 2: Repair the Health Check Template

1. Connect to the YBA Anywhere node using SSH to access its command-line interface and locate `node_health.py.template` by running the following command:

    ```sh
    sudo find / -name "*node_health.py.template*"
    ```

    {{< note title="Note" >}}

- The file should be located in the following location:
    `<YBA_BASE_PATH>/software/active/yba_installer/packages/yugabyte-<version>/yugaware/conf/health/node_health.py.template`
- `<YBA_BASE_PATH>` is most commonly `/opt/yugabyte`

    {{< /note >}}

1. Create a backup copy of `node_health.py.template` by running the following command:

    ```sh
    cp node_health.py.template node_health.py.template.bak
    ```

1. Edit `node_health.py.template` and change a single line

    Change this line

    ```sh
    yb_pg_table_oid = str(int(table["uuid"][-4:], 16))
    ```

    to

    ```sh
    yb_pg_table_oid = str(int(table["uuid"][-8:], 16))
    ```

    **Note**: The effective change within the line is changing `-4` to `-8`

1. Restart YBA by running the following command:

    ```sh
    yba-ctl restart
    ```

    **Note**: You may need `sudo` permission for this operation

Restarting YBA will push the template to all the DB nodes. During the next Health Check you should see accurate results, comparable to running `ddl_atomicity_check_script_python3.py` from the Technical Advisory.

## Related Articles

- See the Yugabyte Technical Advisory for details of the DDL Atomicity issue: {{< ta 22802 >}}.
