Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAleksey Lim <alsroot@sugarlabs.org>2012-03-17 06:58:54 (GMT)
committer Aleksey Lim <alsroot@sugarlabs.org>2012-03-17 06:58:54 (GMT)
commit1e9d0949971e73694f77dda6e02a67d76e742614 (patch)
tree573dcb58c77b3a4a5bf53728093e2b69dd3ad2fc
parenta469394317d047b4d746a142facae038f4f93f3d (diff)
Drop IndexProxy pages on getting cached document
-rw-r--r--active_document/index_proxy.py12
-rwxr-xr-xtests/units/index_proxy.py8
2 files changed, 17 insertions, 3 deletions
diff --git a/active_document/index_proxy.py b/active_document/index_proxy.py
index 505bf1f..081ad21 100644
--- a/active_document/index_proxy.py
+++ b/active_document/index_proxy.py
@@ -49,11 +49,14 @@ class IndexProxy(IndexReader):
pass
def get_cached(self, guid):
+ self._drop_pages()
+
result = {}
for page in self._sorted_pages:
cached = page.get(guid)
if cached is not None:
result.update(cached.properties)
+
return result
def store(self, guid, properties, new, pre_cb=None, post_cb=None):
@@ -105,8 +108,10 @@ class IndexProxy(IndexReader):
return [self._pages[i] for i in sorted(self._pages.keys())]
def _reopen(self):
+ db_path = self.metadata.path('index')
+
if self._db is None:
- if not exists(self.metadata.path('index')):
+ if not exists(db_path):
return
else:
seqno = index_queue.commit_seqno(self.metadata.name)
@@ -115,7 +120,7 @@ class IndexProxy(IndexReader):
try:
if self._db is None:
- self._db = xapian.Database(self.metadata.path('index'))
+ self._db = xapian.Database(db_path)
_logger.debug('Opened "%s" RO index', self.metadata.name)
else:
self._db.reopen()
@@ -126,6 +131,9 @@ class IndexProxy(IndexReader):
self._db = None
return
+ self._drop_pages()
+
+ def _drop_pages(self):
self._commit_seqno = index_queue.commit_seqno(self.metadata.name)
for seqno in self._pages.keys():
if seqno <= self._commit_seqno:
diff --git a/tests/units/index_proxy.py b/tests/units/index_proxy.py
index f041af0..d5e8f82 100755
--- a/tests/units/index_proxy.py
+++ b/tests/units/index_proxy.py
@@ -507,9 +507,15 @@ class IndexProxyTest(tests.Test):
]),
proxy.find_())
+ def test_get_cached_DropPages(self):
+ proxy = TestIndexProxy(self.metadata)
+ proxy.store('1', {'guid': '1', 'term': 'z', 'not_term': 'x'}, True)
+ self.assertEqual(1, len(proxy._pages))
-
+ self.override(index_queue, 'commit_seqno', lambda *args: 10)
+ self.assertEqual({}, proxy.get_cached('0'))
+ self.assertEqual(0, len(proxy._pages))
class TestIndexProxy(IndexProxy):