DDL Atomicity Health Check Alert is Wrong

19 Feb 2025

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:

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:

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

    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
  2. Create a backup copy of node_health.py.template by running the following command:

    cp node_health.py.template node_health.py.template.bak
    
  3. Edit node_health.py.template and change a single line

    Change this line

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

    to

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

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

  4. Restart YBA by running the following command:

    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.

  • See the Yugabyte Technical Advisory for details of the DDL Atomicity issue: TA-22802 .