Skip to content

Commit d87eb7b

Browse files
authored
[DBMON-5730] Fix disable_innodb_metrics config (DataDog#21591)
* Load disable_innodb_metrics from options path * Add test to verify fix * Add changelog
1 parent 74c93eb commit d87eb7b

3 files changed

Lines changed: 33 additions & 3 deletions

File tree

mysql/changelog.d/21591.fixed

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Fixes `disable_innodb_metrics` being read from the wrong config layer

mysql/datadog_checks/mysql/config.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ def __init__(self, instance, init_config):
2525
custom_tags=instance.get('tags', []),
2626
propagate_agent_tags=self._should_propagate_agent_tags(instance, init_config),
2727
)
28-
self.disable_innodb_metrics = is_affirmative(instance.get('disable_innodb_metrics', False))
2928
self.options = instance.get('options', {}) or {} # options could be None if empty in the YAML
29+
self.disable_innodb_metrics = is_affirmative(self.options.get('disable_innodb_metrics', False))
3030
self.replication_channel = self.options.get('replication_channel')
3131
if self.replication_channel:
3232
self.tags.append("channel:{0}".format(self.replication_channel))

mysql/tests/test_innodb_metrics.py

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,14 @@
88
import mock
99
import pytest
1010

11+
from datadog_checks.mysql import MySql
1112
from datadog_checks.mysql.innodb_metrics import InnoDBMetrics
1213

13-
from .common import HERE
14+
from . import common
1415

1516

1617
def get_test_file_path(filename):
17-
return os.path.join(HERE, filename)
18+
return os.path.join(common.HERE, filename)
1819

1920

2021
def get_innodb_status_fixture(version):
@@ -66,3 +67,31 @@ def test_get_stats_from_innodb_status(caplog, version):
6667
mocked_cursor.fetchone.return_value = ('InnoDB', '', innodb_status)
6768
result = idb.get_stats_from_innodb_status(db)
6869
assert result == exepcted_result
70+
71+
72+
@pytest.mark.unit
73+
def test_check_innodb_engine_enabled_with_config_disabled():
74+
"""Test that disable_innodb_metrics config properly disables InnoDB metrics collection"""
75+
76+
# Create instance with disable_innodb_metrics set to True
77+
instance = {
78+
'host': 'localhost',
79+
'user': 'datadog',
80+
'options': {
81+
'disable_innodb_metrics': True,
82+
},
83+
}
84+
85+
mysql_check = MySql(common.CHECK_NAME, {}, [instance])
86+
87+
# Mock database connection
88+
db = mock.MagicMock()
89+
90+
# Call the method
91+
result = mysql_check._check_innodb_engine_enabled(db)
92+
93+
# Assert that InnoDB is disabled
94+
assert result is False
95+
96+
# Verify database cursor was never called
97+
db.cursor.assert_not_called()

0 commit comments

Comments
 (0)