Skip to content

database plugin: issues when deleting unused entries #1004

@onkelandy

Description

@onkelandy

Feb 12 03:14:23 WARNING  plugins.database  remove_older_than_maxage skipped because db is not connected
Feb 12 03:14:58 ERROR    lib.db            Database [Database]: Could not connect to the database using 'pymysql': (2003, "Can't connect to MySQL server on '10.0.0.100' ([Errno 111] Verbindungsaufbau abgelehnt)")
Feb 12 03:14:58 CRITICAL plugins.database  Database: Initialization failed: (2003, "Can't connect to MySQL server on '10.0.0.100' ([Errno 111] Verbindungsaufbau abgelehnt)")
Feb 12 03:15:55 WARNING  plugins.database  remove_older_than_maxage skipped because db is not connected
Feb 12 03:16:04 ERROR    lib.db            Database [Database]: Could not connect to the database using 'pymysql': (2003, "Can't connect to MySQL server on '10.0.0.100' ([Errno 111] Verbindungsaufbau abgelehnt)")
Feb 12 03:16:04 CRITICAL plugins.database  Database: Initialization failed: (2003, "Can't connect to MySQL server on '10.0.0.100' ([Errno 111] Verbindungsaufbau abgelehnt)")
Feb 12 03:17:27 ERROR    lib.db            Can not execute query: DELETE FROM log WHERE item_id = %(id)s LIMIT %(maxrecords)s; (args OrderedDict([('id', 3236), ('maxrecords', 20000)])): (0, '')
Feb 12 03:17:27 ERROR    plugins.database  Database: Error for query DELETE FROM log WHERE item_id = 3236 LIMIT 20000;: (0, '')
Feb 12 03:17:28 ERROR    lib.scheduler.tasks Method plugins.database.Remove old exception: (0, '')
Traceback (most recent call last):
  File "/usr/local/smarthome/lib/scheduler.py", line 707, in _task
    obj()
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1578, in remove_older_than_maxage
    self.remove_orphan_items()
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1042, in remove_orphan_items
    if not self._delete_orphan(item):
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1025, in _delete_orphan
    self._execute(self._prepare("DELETE FROM {log} WHERE item_id = :id LIMIT :maxrecords;"), {'id': item_id, 'maxrecords': self.delete_orphan_chunk_size}, cur=cur)
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1774, in _execute
    self._query(self._db.execute, query, params, cur)
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1804, in _query
    raise e
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1801, in _query
    tuples = func(self._prepare(query), params, cur=cur)
  File "/usr/local/smarthome/lib/db.py", line 337, in execute
    result = cur.execute(stmt, args)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/connections.py", line 562, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/connections.py", line 843, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')
Feb 12 03:18:59 ERROR    lib.db            Can not execute query: DELETE FROM log WHERE item_id = %(id)s LIMIT %(maxrecords)s; (args OrderedDict([('id', 3237), ('maxrecords', 20000)])): (0, '')
Feb 12 03:18:59 ERROR    plugins.database  Database: Error for query DELETE FROM log WHERE item_id = 3237 LIMIT 20000;: (0, '')
Feb 12 03:18:59 ERROR    lib.scheduler.tasks Method plugins.database.Remove old exception: (0, '')
Traceback (most recent call last):
  File "/usr/local/smarthome/lib/scheduler.py", line 707, in _task
    obj()
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1578, in remove_older_than_maxage
    self.remove_orphan_items()
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1042, in remove_orphan_items
    if not self._delete_orphan(item):
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1025, in _delete_orphan
    self._execute(self._prepare("DELETE FROM {log} WHERE item_id = :id LIMIT :maxrecords;"), {'id': item_id, 'maxrecords': self.delete_orphan_chunk_size}, cur=cur)
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1774, in _execute
    self._query(self._db.execute, query, params, cur)
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1804, in _query
    raise e
  File "/usr/local/smarthome/plugins/database/__init__.py", line 1801, in _query
    tuples = func(self._prepare(query), params, cur=cur)
  File "/usr/local/smarthome/lib/db.py", line 337, in execute
    result = cur.execute(stmt, args)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/cursors.py", line 153, in execute
    result = self._query(query)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/cursors.py", line 322, in _query
    conn.query(q)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/connections.py", line 562, in query
    self._execute_command(COMMAND.COM_QUERY, sql)
  File "/usr/local/smarthome/venvs/py_310/lib/python3.10/site-packages/pymysql/connections.py", line 843, in _execute_command
    raise err.InterfaceError(0, "")
pymysql.err.InterfaceError: (0, '')

Hatte gegen 22:00 das Löschen verwaister Items angestoßen. Hatte das Gefühl, da tut sich nichts, aber vermutlich liegt das einfach an der Menge der Daten. Jedenfalls kam dann nach einer Neuverbindung mit der Datenbank im 90-Sekunden-Rhythmus immer diese Meldung im Log. Für jedes der zu löschenden Items...
Die Verbindung zur Datenbank war gegen 3 Uhr für 15 Minuten off (weil dort ein Backup ausgeführt wird). Und seither gibt's den Fehler.
Das Problem bestand später auch ohne Datenbankabbruch, möglicherweise waren schon einige Einträge gelöscht und beim Versuch, die erneut zu löschen, gab es obigen Fehler..?

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions