Hi,
It seems your FileCollector is directly accessing the internal session. Note however, when using persistence, we actually wrap this internal session with a command service (SingleSessionCommandService) that takes care of persistence etc. This seems to be an issue where you're getting issues by directly accessing the internal session, bypassing persistence setup etc.
You should not talk to the internal session directly, your client calls should always go through the command service, using the ksession you get when using the JPAKnowledgeService to construct the session.
Not sure if I understand your second issue. The engine typically uses the calling thread to execute. So if you call signalEvent, that thread will be used to send the event and execute the any process instance that is triggered because of this. But this thread will return as soon as processing is done. So this is either immediate (when there is no-one interested in the event) or after the process instance has reached a wait state (which again is almost instantaneous, as anything that is not should be modeled as an async task anyway).
Kris