DDL Atomicity Health Check Alert is Wrong
Product | Affected Versions | Related Issues | Fixed In |
---|---|---|---|
YugabyteDB Anywhere | v2.20.8.1, v2024.1.3.1, v2024.2.0.0, v2.23.1.0 | TA-22802 | v2.20.9.0, v2024.1.4.0, v2024.2.1.0, v2.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:
- Upgrade YB Anywhere to a version that contains the fixed Health Check (a DB upgrade isn't required)
- 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:
- v2.20.9.0 or later.
- v2024.1.4.0 or later.
- v2024.2.1.0 or later.
- v2.25.0.0 or later.
Option 2: Repair the Health Check Template
-
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
- The file should be located in the following location:
-
Create a backup copy of
node_health.py.template
by running the following command:cp node_health.py.template node_health.py.template.bak
-
Edit
node_health.py.template
and change a single lineChange 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
-
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.
Related Articles
- See the Yugabyte Technical Advisory for details of the DDL Atomicity issue: TA-22802 .