Skip to content

Crash due to "warning light" #772

@FireFury0

Description

@FireFury0

VWsFriend sometimes crashes with an error that appears to be caused by inserting "warning light" information into the DB:

vwsfriend-1   | 2026-03-19T08:26:52+0000:INFO:warning_light_agent:Warning light 0xA743 in vehicle WVWZZZE1ZMPxxxxxx turned on
vwsfriend-1   | 2026-03-19T08:26:52+0000:INFO:weconnect_mqtt_base:Client successfully disconnected
vwsfriend-1   | Traceback (most recent call last):
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
vwsfriend-1   | 2026-03-19T08:26:52+0000:ERROR:vwsfriend_base:MQTT Connection failed
vwsfriend-1   |     self.dialect.do_execute(
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
vwsfriend-1   |     cursor.execute(statement, parameters)
vwsfriend-1   | psycopg2.errors.InvalidTextRepresentation: invalid input value for enum category: "ASSISTANCE"
vwsfriend-1   | LINE 1: ...L, NULL, 'Front Assist availability is limited.', 'ASSISTANC...
vwsfriend-1   |                                                              ^
vwsfriend-1   | 
vwsfriend-1   | 
vwsfriend-1   | The above exception was the direct cause of the following exception:
vwsfriend-1   | 
vwsfriend-1   | Traceback (most recent call last):
vwsfriend-1   |   File "/opt/venv/bin/vwsfriend", line 8, in <module>
vwsfriend-1   |     sys.exit(main())
vwsfriend-1   |              ^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/vwsfriend/vwsfriend_base.py", line 516, in main
vwsfriend-1   |     mqttCLient.updateWeConnect(reraise=True)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect_mqtt/weconnect_mqtt_base.py", line 462, in updateWeConnect
vwsfriend-1   |     self.weConnect.update(updateCapabilities=self.updateCapabilities, updatePictures=self.updatePictures, selective=self.selective, force=True)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect/weconnect.py", line 199, in update
vwsfriend-1   |     self.updateComplete()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect/addressable.py", line 533, in updateComplete
vwsfriend-1   |     child.updateComplete()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect/addressable.py", line 533, in updateComplete
vwsfriend-1   |     child.updateComplete()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect/addressable.py", line 533, in updateComplete
vwsfriend-1   |     child.updateComplete()
vwsfriend-1   |   [Previous line repeated 3 more times]
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/weconnect/addressable.py", line 96, in updateComplete
vwsfriend-1   |     observer(element=self, flags=self.onCompleteNotifyFlags)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/vwsfriend/agents/warning_light_agent.py", line 64, in __onCarCapturedTimestampChange
vwsfriend-1   |     with self.session.begin_nested():
vwsfriend-1   |          ^^^^^^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1971, in begin_nested
vwsfriend-1   |     return self.begin(nested=True)
vwsfriend-1   |            ^^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1937, in begin
vwsfriend-1   |     trans = trans._begin(nested=nested)
vwsfriend-1   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "<string>", line 2, in _begin
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/state_changes.py", line 137, in _go
vwsfriend-1   |     ret_value = fn(self, *arg, **kw)
vwsfriend-1   |                 ^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1043, in _begin
vwsfriend-1   |     return SessionTransaction(
vwsfriend-1   |            ^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 958, in __init__
vwsfriend-1   |     self._take_snapshot()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 1087, in _take_snapshot
vwsfriend-1   |     self.session.flush()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4331, in flush
vwsfriend-1   |     self._flush(objects)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4466, in _flush
vwsfriend-1   |     with util.safe_reraise():
vwsfriend-1   |          ^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/util/langhelpers.py", line 224, in __exit__
vwsfriend-1   |     raise exc_value.with_traceback(exc_tb)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/session.py", line 4427, in _flush
vwsfriend-1   |     flush_context.execute()
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 466, in execute
vwsfriend-1   |     rec.execute(self)
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/unitofwork.py", line 642, in execute
vwsfriend-1   |     util.preloaded.orm_persistence.save_obj(
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 93, in save_obj
vwsfriend-1   |     _emit_insert_statements(
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/orm/persistence.py", line 1233, in _emit_insert_statements
vwsfriend-1   |     result = connection.execute(
vwsfriend-1   |              ^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1419, in execute
vwsfriend-1   |     return meth(
vwsfriend-1   |            ^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/sql/elements.py", line 526, in _execute_on_connection
vwsfriend-1   |     return connection._execute_clauseelement(
vwsfriend-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1641, in _execute_clauseelement
vwsfriend-1   |     ret = self._execute_context(
vwsfriend-1   |           ^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1846, in _execute_context
vwsfriend-1   |     return self._exec_single_context(
vwsfriend-1   |            ^^^^^^^^^^^^^^^^^^^^^^^^^^
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1986, in _exec_single_context
vwsfriend-1   |     self._handle_dbapi_exception(
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 2355, in _handle_dbapi_exception
vwsfriend-1   |     raise sqlalchemy_exception.with_traceback(exc_info[2]) from e
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/base.py", line 1967, in _exec_single_context
vwsfriend-1   |     self.dialect.do_execute(
vwsfriend-1   |   File "/opt/venv/lib/python3.12/site-packages/sqlalchemy/engine/default.py", line 951, in do_execute
vwsfriend-1   |     cursor.execute(statement, parameters)
vwsfriend-1   | sqlalchemy.exc.DataError: (psycopg2.errors.InvalidTextRepresentation) invalid input value for enum category: "ASSISTANCE"
vwsfriend-1   | LINE 1: ...L, NULL, 'Front Assist availability is limited.', 'ASSISTANC...
vwsfriend-1   |                                                              ^
vwsfriend-1   | 
vwsfriend-1   | [SQL: INSERT INTO warning_lights (vehicle_vin, start, start_mileage, "end", end_mileage, text, category, "messageId", priority, "serviceLead", "customerRelevance") VALUES (%(vehicle_vin)s, %(start)s, %(start_mileage)s, %(end)s, %(end_mileage)s, %(text)s, %(category)s, %(messageId)s, %(priority)s, %(serviceLead)s, %(customerRelevance)s) RETURNING warning_lights.id]
vwsfriend-1   | [parameters: {'vehicle_vin': 'WVWZZZE1ZMPxxxxxx', 'start': datetime.datetime(2026, 3, 19, 8, 26, 6, tzinfo=datetime.timezone.utc), 'start_mileage': 74619, 'end': None, 'end_mileage': None, 'text': 'Front Assist availability is limited.', 'category': 'ASSISTANCE', 'messageId': '0xA743', 'priority': 53, 'serviceLead': False, 'customerRelevance': None}]
vwsfriend-1   | (Background on this error at: https://sqlalche.me/e/20/9h9h)

After this error, the docker container needs to be restarted (it would probably be preferable to have an auto-restart on crash?)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions