mirror of
https://github.com/Stone-Red-Code/dvc.git
synced 2026-11-11 23:10:10 +01:00
state: add workaround for VACUUM bug on python 3.6 (#1315)
Fixes #1314 Signed-off-by: Ruslan Kuprieiev <[email protected]>
This commit is contained in:
+7
-1
@@ -190,6 +190,12 @@ class State(object):
|
||||
else:
|
||||
raise
|
||||
|
||||
def _vacuum(self):
|
||||
# NOTE: see https://bugs.python.org/issue28518
|
||||
self.db.isolation_level = None
|
||||
self._execute("VACUUM")
|
||||
self.db.isolation_level = ''
|
||||
|
||||
def dump(self):
|
||||
assert self.db is not None
|
||||
|
||||
@@ -213,7 +219,7 @@ class State(object):
|
||||
self.STATE_TABLE,
|
||||
delete))
|
||||
|
||||
self._execute("VACUUM")
|
||||
self._vacuum()
|
||||
|
||||
cmd = "SELECT COUNT(*) FROM {}"
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ import time
|
||||
from dvc.system import System
|
||||
from dvc.state import State
|
||||
from dvc.utils import file_md5
|
||||
from dvc.main import main
|
||||
|
||||
from tests.basic_env import TestDvc
|
||||
|
||||
@@ -39,3 +40,20 @@ class TestState(TestDvc):
|
||||
|
||||
entry_md5 = state.update(path)
|
||||
self.assertEqual(entry_md5, md5)
|
||||
|
||||
|
||||
class TestStateOverflow(TestDvc):
|
||||
def test(self):
|
||||
# NOTE: trying to add more entries than state can handle,
|
||||
# to see if it will clean up and vacuum successfully
|
||||
ret = main(['config', 'state.row_limit', '10'])
|
||||
self.assertEqual(ret, 0)
|
||||
|
||||
dname = 'dir'
|
||||
os.mkdir(dname)
|
||||
for i in range(20):
|
||||
with open(os.path.join(dname, str(i)), 'w+') as fobj:
|
||||
fobj.write(str(i))
|
||||
|
||||
ret = main(['add', 'dir'])
|
||||
self.assertEqual(ret, 0)
|
||||
|
||||
Reference in New Issue
Block a user