Community
Participate
Working Groups
IVMEventListener provides an executor and states that it should be invoked on that executor. We fail to adhere to this in a few places. These missed cases seem to be a result of the non-interface utility method AbstractVMProvider.handleEvent(Object). I believe that method should either be (a) annotated with @ConfinedToDsfExecutor("#getExecutor()"), and the scenarios below should be corrected, or (b) annotated with @ThreadSafe and the implementation tweaked to call its IVMEventListener.handleEvent(Object, RequestMonitor) on the executor. However, as some pieces of code do invoke this on the executor thread, we'd want to simply those call points and avoid inefficiency/redundancy Scenarios where we are currently not invoking the VM Provider's IEventListener.handleEvent method without using its executor. Set a breakpoint in that method and exercise these scenarios. 1. during debug session launch, when VariableVMProvider.fPresentationContextListener.propertyChange() is called 2. Modify the value of a variable via the Variables view Will add more scenarios if I run across any.
Created attachment 147818 [details] Patch with fix.