zeitgeist team mailing list archive
-
zeitgeist team
-
Mailing list archive
-
Message #02974
[Bug 598666] Re: Invalid cache access (was: Error when trying to fetch items)
Oh yeah, of course. Indeed, good work Siegfried.
While reading the last few comments one possible fix came into my mind:
Let's maintain a (temporary) helper table called '_fix_cache' with (table_name VARCHAR, id INTEGER) and create a 'BEFORE DELETE' trigger on each cached table (interpretation, manifestation, mimetype, ...) which inserts the table name and the deleted id in _fix_cache once a row in the related table got deleted. All we now have to do is run a 'SELECT * FROM _fix_cache' after deleting the events. If some rows in manifestation/interpretation/... got deleted while deleting events we get back the the ids of the cached values which we then can delete from the caches.
I know that's not optimal, but looks like the only solution to me. This should not be a *big* performance issue, since the number of rows in the helper table should be very low. I'll hack on a prototype tomorrow, and see how it works.
--
You received this bug notification because you are a member of Zeitgeist
Framework Team, which is subscribed to Zeitgeist Framework.
https://bugs.launchpad.net/bugs/598666
Title:
Invalid cache access (was: Error when trying to fetch items)
Status in Zeitgeist Framework:
Triaged
Bug description:
When i try to fetch all items in one query i get
Error from Zeitgeist engine: org.freedesktop.DBus.Python.KeyError: Traceback (most recent call last):
File "/usr/lib/pymodules/python2.6/dbus/service.py", line 702, in _message_cb
retval = candidate_method(self, *args, **keywords)
File "/usr/local/share/zeitgeist/_zeitgeist/engine/remote.py", line 254, in FindEvents
event_templates, storage_state, num_events, result_type, sender))
File "/usr/local/share/zeitgeist/_zeitgeist/engine/main.py", line 378, in find_events
return self._find_events(1, *args)
File "/usr/local/share/zeitgeist/_zeitgeist/engine/main.py", line 366, in _find_events
return self.get_events(rows=result, sender=sender)
File "/usr/local/share/zeitgeist/_zeitgeist/engine/main.py", line 188, in get_events
events[event.id].append_subject(self._get_subject_from_row(row))
File "/usr/local/share/zeitgeist/_zeitgeist/engine/main.py", line 160, in _get_subject_from_row
getattr(self, "_" + field).value(row["subj_" + field]))
File "/usr/local/share/zeitgeist/_zeitgeist/engine/sql.py", line 422, in value
return self._inv_dict[id]
KeyError: 138
This looks serious
References