If a SEDA component's event queue is persisted, then it does not properly receive asynchronous events.
The problem is two-fold:
1) When a MuleEvent is persisted/serialized, its endpoint URI is written. When the MuleEvent is deserialized, the event's endpoint is always recreated as a SENDER. When such an event is dispatched to the Mule proxy, the proxy redispatches the event endlessly (see DefaultMuleProxy.java: line 453)
2) If MuleEvent is patched to properly store the event's endpoint type, the event now gets dispatched but results in an NPE because the session is left null and an attempt is made to get the event's component.
I've attached a test case that demonstrates the problem. Unzip the file into a directory. Modify build.xml to point to your Mule installation/binaries.
Run "ant test-broken"; this will run the test on the existing Mule libraries and should generate 1 error related to a method not being called (because the event is endlessly dispatched).
Run "ant test"; this will run the test on the patched code and should generate no errors.