Comment 2 for bug 2033306

Revision history for this message
Felipe Reyes (freyes) wrote :

I added some instrumentation code[0] where I could catch the prom_exporter user being created with a password set to None:

2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: Invoking reactive handler: reactive/prometheus_mysql_exporter_handlers.py:12:create_local_prometheus_exporter_user
2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: prom_exporter@10.5.3.204 = None
2023-08-28 23:29:39 INFO unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: prom_exporter@localhost = None
2023-08-28 23:29:39 ERROR unit.mysql-innodb-cluster/1.juju-log server.go:316 prometheus:10: Hook error:
Traceback (most recent call last):
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/__init__.py", line 74, in main
    bus.dispatch(restricted=restricted_mode)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 390, in dispatch
    _invoke(other_handlers)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 359, in _invoke
    handler.invoke()
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/charms/reactive/bus.py", line 181, in invoke
    self._action(*args)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/charm/reactive/prometheus_mysql_exporter_handlers.py", line 18, in create_local_prometheus_exporter_user
    if not instance.create_user(
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 339, in wrapped_f
    return self(f, *args, **kw)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 430, in __call__
    do = self.iter(retry_state=retry_state)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 367, in iter
    return fut.result()
  File "/usr/lib/python3.10/concurrent/futures/_base.py", line 451, in result
    return self.__get_result()
  File "/usr/lib/python3.10/concurrent/futures/_base.py", line 403, in __get_result
    raise self._exception
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/.venv/lib/python3.10/site-packages/tenacity/__init__.py", line 433, in __call__
    result = fn(*args, **kwargs)
  File "/var/lib/juju/agents/unit-mysql-innodb-cluster-1/charm/lib/charm/openstack/mysql_innodb_cluster.py", line 628, in create_user
    assert password, msg
AssertionError: Password can't be empty: None (user: prom_exporter, addresses: ['10.5.3.204', 'localhost'])

[0]
+ if user == "prom_exporter":
+ for address in addresses:
+ ch_core.hookenv.log('%s@%s = %s' % (user, address, password),
+ "INFO")
+ msg = "Password can't be empty: %s (user: %s, addresses: %s)" % \
+ (password, user, addresses)
+ assert password, msg