Description:
When trying to schedule a rule with an unknown attribute (such as scheduling "Binary Logging Is Limited" on a server with no binary log enabled), you get an error on screen, as expected:
"U0146 Unable to schedule rule "Binary Logging Is Limited" due to "mysql.MasterStatus.Binlog_Ignore_DB" data not being collected from server "servername:13306". It may be an unsupported collection for that server."
But you also get a stack trace in the logs at the default logging level:
asTransaction
com.mysql.etools.exception.ChildDoesNotExistAndAttributeException: E2101: ChildDoesNotExistAndAttributeException: [{mysql}.{Server}.{e9221681-7430-49a9-a7b5-5dc1c47037f4}, mysql.MasterStatus, e9221681-7430-49a9-a7b5-5dc1c47037f4, Binlog_Ignore_DB]
at com.mysql.etools.monitor.bo.VariableBinder.bindCollections(VariableBinder.java:73)
at com.mysql.etools.monitor.bo.RuleScheduleBuilder.bindCollections(RuleScheduleBuilder.java:56)
at com.mysql.etools.monitor.pom.hib.HibPersistence$20.execute(HibPersistence.java:719)
at com.mysql.etools.monitor.pom.hib.HibPersistence$20.execute(HibPersistence.java:718)
at com.mysql.etools.monitor.pom.hib.HibernateExecutor.asTransaction(HibernateExecutor.java:195)
at com.mysql.etools.monitor.pom.hib.SchemaMaintenanceExecutor.asTransaction(SchemaMaintenanceExecutor.java:197)
at com.mysql.etools.monitor.pom.hib.HibPersistence.scheduleRule(HibPersistence.java:734)
at com.mysql.etools.monitor.bo.Server.schedule(Server.java:495)
at com.mysql.etools.monitor.bo.rule.RuleManager.persistSchedule(RuleManager.java:535)
at com.mysql.etools.monitor.bo.rule.RuleManager.scheduleAndRunRule(RuleManager.java:523)
at com.mysql.etools.monitor.bo.rule.RuleManager.scheduleAndRunRule(RuleManager.java:69)
at com.mysql.merlin.ui.actions.monitor.advisors.DoSchedule.scheduleAndRunRules(DoSchedule.java:132)
at com.mysql.merlin.ui.actions.monitor.advisors.DoSchedule.executeInner(DoSchedule.java:114)
at com.mysql.merlin.ui.actions.BaseJSONAction.exec(BaseJSONAction.java:199)
at com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:2036)
at com.mysql.merlin.ui.actions.BaseAction$1.call(BaseAction.java:2035)
at com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:2019)
at com.mysql.merlin.ui.actions.BaseAction.execute(BaseAction.java:2034)
How to repeat:
o Monitor an instance without log-bin enabled
o Try to schedule the "Binary Logging Is Limited" rule on it
o Check the logs
Suggested fix:
Suppress the message unless using something like a debug log?