Remove automatic sqlite vacuum (#12728)

This commit is contained in:
Anders Melchiorsen 2018-02-27 07:41:37 +01:00 committed by Paulus Schoutsen
parent 98fef81d19
commit c1c23bb4b6
3 changed files with 11 additions and 10 deletions

View File

@ -165,7 +165,6 @@ class Recorder(threading.Thread):
self.hass = hass self.hass = hass
self.keep_days = keep_days self.keep_days = keep_days
self.purge_interval = purge_interval self.purge_interval = purge_interval
self.did_vacuum = False
self.queue = queue.Queue() # type: Any self.queue = queue.Queue() # type: Any
self.recording_start = dt_util.utcnow() self.recording_start = dt_util.utcnow()
self.db_url = uri self.db_url = uri
@ -269,7 +268,7 @@ class Recorder(threading.Thread):
def async_purge(now): def async_purge(now):
"""Trigger the purge and schedule the next run.""" """Trigger the purge and schedule the next run."""
self.queue.put( self.queue.put(
PurgeTask(self.keep_days, repack=not self.did_vacuum)) PurgeTask(self.keep_days, repack=False))
self.hass.helpers.event.async_track_point_in_time( self.hass.helpers.event.async_track_point_in_time(
async_purge, now + timedelta(days=self.purge_interval)) async_purge, now + timedelta(days=self.purge_interval))

View File

@ -66,6 +66,5 @@ def purge_old_data(instance, purge_days, repack):
_LOGGER.debug("Vacuuming SQLite to free space") _LOGGER.debug("Vacuuming SQLite to free space")
try: try:
instance.engine.execute("VACUUM") instance.engine.execute("VACUUM")
instance.did_vacuum = True
except exc.OperationalError as err: except exc.OperationalError as err:
_LOGGER.error("Error vacuuming SQLite: %s.", err) _LOGGER.error("Error vacuuming SQLite: %s.", err)

View File

@ -2,6 +2,7 @@
import json import json
from datetime import datetime, timedelta from datetime import datetime, timedelta
import unittest import unittest
from unittest.mock import patch
from homeassistant.components import recorder from homeassistant.components import recorder
from homeassistant.components.recorder.const import DATA_INSTANCE from homeassistant.components.recorder.const import DATA_INSTANCE
@ -199,10 +200,12 @@ class TestRecorderPurge(unittest.TestCase):
event.event_type for event in events.all())) event.event_type for event in events.all()))
# run purge method - correct service data, with repack # run purge method - correct service data, with repack
service_data['repack'] = True with patch('homeassistant.components.recorder.purge._LOGGER') \
self.assertFalse(self.hass.data[DATA_INSTANCE].did_vacuum) as mock_logger:
self.hass.services.call('recorder', 'purge', service_data['repack'] = True
service_data=service_data) self.hass.services.call('recorder', 'purge',
self.hass.block_till_done() service_data=service_data)
self.hass.data[DATA_INSTANCE].block_till_done() self.hass.block_till_done()
self.assertTrue(self.hass.data[DATA_INSTANCE].did_vacuum) self.hass.data[DATA_INSTANCE].block_till_done()
self.assertEqual(mock_logger.debug.mock_calls[4][1][0],
"Vacuuming SQLite to free space")