Cleanup stale recorder code (#88275)

- Removes dead commit function
- Small cleanup to debug handling in execute
pull/87833/head
J. Nick Koston 2023-02-16 22:12:11 -06:00 committed by GitHub
parent 3c68907351
commit b9f29c27ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 5 additions and 41 deletions

View File

@ -132,23 +132,6 @@ def session_scope(
session.close()
def commit(session: Session, work: Any) -> bool:
"""Commit & retry work: Either a model or in a function."""
for _ in range(0, RETRIES):
try:
if callable(work):
work(session)
else:
session.add(work)
session.commit()
return True
except OperationalError as err:
_LOGGER.error("Error executing query: %s", err)
session.rollback()
time.sleep(QUERY_RETRY_WAIT)
return False
def execute(
qry: Query, to_native: bool = False, validate_entity_ids: bool = True
) -> list[Row]:
@ -156,9 +139,12 @@ def execute(
This method also retries a few times in the case of stale connections.
"""
debug = _LOGGER.isEnabledFor(logging.DEBUG)
for tryno in range(0, RETRIES):
try:
timer_start = time.perf_counter()
if debug:
timer_start = time.perf_counter()
if to_native:
result = [
row
@ -171,7 +157,7 @@ def execute(
else:
result = qry.all()
if _LOGGER.isEnabledFor(logging.DEBUG):
if debug:
elapsed = time.perf_counter() - timer_start
if to_native:
_LOGGER.debug(

View File

@ -45,28 +45,6 @@ def test_session_scope_not_setup(hass_recorder):
pass
def test_recorder_bad_commit(hass_recorder, recorder_db_url):
"""Bad _commit should retry 3 times."""
if recorder_db_url.startswith(("mysql://", "postgresql://")):
# This test is specific for SQLite: mysql/postgresql does not raise an OperationalError
# which triggers retries for the bad query below, it raises ProgrammingError
# on which we give up
return
hass = hass_recorder()
def work(session):
"""Bad work."""
session.execute(text("select * from notthere"))
with patch(
"homeassistant.components.recorder.core.time.sleep"
) as e_mock, util.session_scope(hass=hass) as session:
res = util.commit(session, work)
assert res is False
assert e_mock.call_count == 3
def test_recorder_bad_execute(hass_recorder):
"""Bad execute, retry 3 times."""
from sqlalchemy.exc import SQLAlchemyError