Ok I think what I was getting at here was two things:

1) Could you change this comment to say "EventBus thread" rather than "DAGScheduler event loop", since now the listener stuff is totally separate from the dag scheduler?

2) The issue here is that the UI can be loading a page (and accessing these data structures) at the same time that the EventBus loop is calling the various listener methods (this was causing issues in the past; when I fixed that, I wrote this comment).  So, I think that the new methods that you added need to be synchronized.