Bug 410541

Summary: Invalid thread access on shutdown
Product: z_Archived Reporter: Miles Parker <milesparker>
Component: MylynAssignee: Miles Parker <milesparker>
Status: RESOLVED FIXED QA Contact:
Severity: minor    
Priority: P2 CC: sam.davis, steffen.pingel
Version: unspecified   
Target Milestone: 2.0.1   
Hardware: Macintosh   
OS: Mac OS X   
Whiteboard:

Description Miles Parker CLA 2013-06-11 17:19:11 EDT
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)
Comment 1 Miles Parker CLA 2013-06-11 17:48:28 EDT
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.
Comment 2 Miles Parker CLA 2013-06-19 18:58:40 EDT
https://git.eclipse.org/r/13939  Please see review for request for comments.
Comment 3 Miles Parker CLA 2013-06-21 17:02:09 EDT
Merged https://git.eclipse.org/r/#/c/13939/4