This bug is very easy to fix, but it leads ton an important question: how do we 
handle events which are not inserted (because of an error, or because of being 
blocked).
Keep in mind, in our current design the clients depend on the order of items 
InsertEvents returns, this allows them to map event->id. So silently ignoring 
failed/blocked events is not an option. Raising an error is also impossible, 
because there might be some events which successfully have been inserted.

I' not sure how to solve this, and I think it is not possible without changing 
the API again. Maybe we could change the signature of InsertEvents to
   InsertEvents(in aE events, out au ids, out a{is} errors)
where errors is a dict which has the index of the event in events which failed 
to insert as key and a string representation (aka traceback) as value.

-- 
AttributeError: 'NoneType' object has no attribute 'payload'
https://bugs.launchpad.net/bugs/495017
You received this bug notification because you are a member of Zeitgeist
Framework, which is the registrant for Zeitgeist Framework.

Status in Zeitgeist Framework: New

Bug description:
At revision 1219 of lp:zeitgeist I added a unittest to test the insert_hook 
feature (by using an extension which is blocking all events) which fails with 
this error:

mar...@thekorn ~/devel/zeitgeist/trunk % python 
test/resonance-engine-extension-test.py
DEBUG:zeitgeist.engine:Creating engine 'resonance'
INFO:zeitgeist.engine:Using database: :memory:
EINFO:zeitgeist.engine:Using database: :memory:
.
======================================================================
ERROR: testInsertHook (__main__.TestExtensionHooks)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "test/resonance-engine-extension-test.py", line 67, in testInsertHook
    ids = import_events("test/data/five_events.js", self.engine)
  File "/media/devel/zeitgeist/trunk/test/testutils.py", line 81, in 
import_events
    return engine.insert_events(events)
  File "test/../_zeitgeist/engine/resonance_engine.py", line 372, in 
insert_events
    m = map(self._insert_event, events)
  File "test/../_zeitgeist/engine/resonance_engine.py", line 389, in 
_insert_event
    if event.payload:
AttributeError: 'NoneType' object has no attribute 'payload'

----------------------------------------------------------------------
Ran 2 tests in 0.012s

FAILED (errors=1)
1 mar...@thekorn ~/devel/zeitgeist/trunk %



_______________________________________________
Mailing list: https://launchpad.net/~zeitgeist
Post to     : zeitgeist@lists.launchpad.net
Unsubscribe : https://launchpad.net/~zeitgeist
More help   : https://help.launchpad.net/ListHelp

Reply via email to