diff options
author | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-17 06:58:54 (GMT) |
---|---|---|
committer | Aleksey Lim <alsroot@sugarlabs.org> | 2012-03-17 06:58:54 (GMT) |
commit | 1e9d0949971e73694f77dda6e02a67d76e742614 (patch) | |
tree | 573dcb58c77b3a4a5bf53728093e2b69dd3ad2fc | |
parent | a469394317d047b4d746a142facae038f4f93f3d (diff) |
Drop IndexProxy pages on getting cached document
-rw-r--r-- | active_document/index_proxy.py | 12 | ||||
-rwxr-xr-x | tests/units/index_proxy.py | 8 |
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): |