Community
Participate
Working Groups
If we're in the midst of synchonrizing reviews when shutting down we get an exception because we don't have a UI thread anymore. This souldn't be harmful, but we should handle more gracefully. org.eclipse.swt.SWTException: Invalid thread access at org.eclipse.swt.SWT.error(SWT.java:4361) at org.eclipse.swt.SWT.error(SWT.java:4276) at org.eclipse.swt.SWT.error(SWT.java:4247) at org.eclipse.swt.widgets.Display.error(Display.java:1068) at org.eclipse.swt.widgets.Display.createDisplay(Display.java:825) at org.eclipse.swt.widgets.Display.create(Display.java:808) at org.eclipse.swt.graphics.Device.<init>(Device.java:130) at org.eclipse.swt.widgets.Display.<init>(Display.java:699) at org.eclipse.swt.widgets.Display.<init>(Display.java:690) at org.eclipse.swt.widgets.Display.getDefault(Display.java:1386) at org.eclipse.mylyn.reviews.ui.spi.remote.RemoteUiService.modelExec(RemoteUiService.java:28) at org.eclipse.mylyn.reviews.core.spi.remote.AbstractRemoteFactoryProvider.modelExec(AbstractRemoteFactoryProvider.java:28) at org.eclipse.mylyn.reviews.spi.edit.remote.AbstractRemoteEditFactoryProvider.modelExec(AbstractRemoteEditFactoryProvider.java:315) at org.eclipse.mylyn.internal.gerrit.core.remote.GerritRemoteFactoryProvider.pullUser(GerritRemoteFactoryProvider.java:72) at org.eclipse.mylyn.internal.gerrit.core.remote.GerritReviewRemoteFactory.pull(GerritReviewRemoteFactory.java:94) at org.eclipse.mylyn.internal.gerrit.core.remote.GerritReviewRemoteFactory.pull(GerritReviewRemoteFactory.java:1) at org.eclipse.mylyn.reviews.core.spi.remote.emf.RemoteEmfConsumer.pull(RemoteEmfConsumer.java:164) at org.eclipse.mylyn.reviews.core.spi.remote.JobRemoteService.retrieve(JobRemoteService.java:93) at org.eclipse.mylyn.reviews.core.spi.remote.emf.RemoteEmfConsumer.retrieve(RemoteEmfConsumer.java:289) at org.eclipse.mylyn.internal.gerrit.core.GerritTaskDataHandler.updateModelData(GerritTaskDataHandler.java:153) at org.eclipse.mylyn.internal.gerrit.core.GerritTaskDataHandler.getTaskData(GerritTaskDataHandler.java:114) at org.eclipse.mylyn.internal.gerrit.core.GerritConnector.getTaskData(GerritConnector.java:156) at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeTasksJob.synchronizeTask(SynchronizeTasksJob.java:245) at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeTasksJob.runInternal(SynchronizeTasksJob.java:218) at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeTasksJob.run(SynchronizeTasksJob.java:153) at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeTasksJob.run(SynchronizeTasksJob.java:135) at org.eclipse.mylyn.internal.tasks.core.sync.SynchronizeQueriesJob.run(SynchronizeQueriesJob.java:225) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
I'm not actually sure how to handle this, because we can't check in the GerritTaskDataHandler whether we are in UI thread, and by the time we're in modelExec, it's too late. One possibility is to check if we're in Eclipse shut down mode in modelExec and fail the remote execution cleanly when that happens.
https://git.eclipse.org/r/13939 Please see review for request for comments.
Merged https://git.eclipse.org/r/#/c/13939/4