Easily duplicated while loading zip codes. This line: EventType eventType = event.getEventType(session); Which doesn't really make sense even that the EventType cannot be null. Unless event is null, but its retrieved from the QueuedEvent, which doesn't allow it to be null either.
QueuedEvent's getEvent(...) is returning null, which shouldn't be possible.
This really looks like a MySQL bug. In getEntityFromPK(..., in EventFactory, _rs.next() is false, and getEntityFromResultSet(...) is never called. _entityId has a value, but no rows are selected. This should be impossible given that QueuedEvent has an enforced FK constraint with Events. Adding a workaround to ProcessQueuedEventsCommand, so that it won't try to process null Events, but this needs investigated further.
Moving this out of a specific milestone, until a test case can be written.