Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 410996

Summary: NPE in FinishedJobs.getInstance when shutdown OSGi in console or restart application (F5)
Product: [RT] RAP Reporter: Ivan Furnadjiev <ivan>
Component: WorkbenchAssignee: Project Inbox <rap-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P2    
Version: 2.1   
Target Milestone: 3.12   
Hardware: PC   
OS: Windows 7   
Whiteboard:

Description Ivan Furnadjiev CLA 2013-06-18 05:06:58 EDT
Reproducible with Workbench Demo. Start Workbench Demo "Planning" perspective and execute "Start a Job". When progress is still running type shutdown in OSGi console. NPE is thrown:
org.eclipse.core.runtime.AssertionFailedException: assertion failed: The application has not been initialized.
	at org.eclipse.core.runtime.Assert.isTrue(Assert.java:110)
	at org.eclipse.core.internal.runtime.InternalPlatform.assertInitialized(InternalPlatform.java:139)
	at org.eclipse.core.internal.runtime.InternalPlatform.addLogListener(InternalPlatform.java:132)
	at org.eclipse.core.runtime.Platform.addLogListener(Platform.java:495)
	at org.eclipse.ui.statushandlers.StatusManager.<init>(StatusManager.java:131)
	at org.eclipse.ui.statushandlers.StatusManager.getManager(StatusManager.java:125)
	at org.eclipse.ui.internal.progress.ProgressManager$2.done(ProgressManager.java:504)
	at org.eclipse.rap.ui.internal.progress.JobManagerAdapter.done(JobManagerAdapter.java:137)
	at org.eclipse.core.internal.jobs.JobListeners$3.notify(JobListeners.java:39)
	at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:96)
	at org.eclipse.core.internal.jobs.JobListeners.done(JobListeners.java:152)
	at org.eclipse.core.internal.jobs.JobManager.endJob(JobManager.java:647)
	at org.eclipse.core.internal.jobs.WorkerPool.endJob(WorkerPool.java:105)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:70)

!ENTRY org.eclipse.core.jobs 4 2 2013-06-18 12:02:58.128
!MESSAGE An internal error occurred during: "Long Running Action: 20551167".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.rap.rwt.internal.SingletonManager.getInstance(SingletonManager.java:35)
	at org.eclipse.rap.rwt.SingletonUtil.getSessionInstance(SingletonUtil.java:55)
	at org.eclipse.ui.internal.progress.FinishedJobs.getInstance(FinishedJobs.java:69)
	at org.eclipse.ui.internal.progress.JobInfo.clearTaskInfo(JobInfo.java:118)
	at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor$1.run(ProgressManager.java:267)
	at org.eclipse.rap.rwt.internal.lifecycle.ContextUtil.runNonUIThreadWithFakeContext(ContextUtil.java:67)
	at org.eclipse.rap.rwt.internal.service.UISessionImpl.exec(UISessionImpl.java:221)
	at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor.done(ProgressManager.java:265)
	at org.eclipse.rap.demo.actions.JobActionWithDialog$1.run(JobActionWithDialog.java:37)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 1 Ivan Furnadjiev CLA 2013-11-26 03:46:27 EST
The same exception is thrown if you press F5 when progress dialog is running:
!ENTRY org.eclipse.core.jobs 4 2 2013-11-26 10:44:58.547
!MESSAGE An internal error occurred during: "Long Running Action: 11353996".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.rap.rwt.internal.SingletonManager.getInstance(SingletonManager.java:35)
	at org.eclipse.rap.rwt.SingletonUtil.getSessionInstance(SingletonUtil.java:55)
	at org.eclipse.ui.internal.progress.FinishedJobs.getInstance(FinishedJobs.java:69)
	at org.eclipse.ui.internal.progress.JobInfo.clearTaskInfo(JobInfo.java:118)
	at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor$1.run(ProgressManager.java:267)
	at org.eclipse.rap.rwt.internal.lifecycle.ContextUtil.runNonUIThreadWithFakeContext(ContextUtil.java:67)
	at org.eclipse.rap.rwt.internal.service.UISessionImpl.exec(UISessionImpl.java:221)
	at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor.done(ProgressManager.java:265)
	at org.eclipse.rap.demo.actions.JobActionWithDialog$1.run(JobActionWithDialog.java:37)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 2 Ivan Furnadjiev CLA 2013-11-26 03:49:11 EST
Sometimes I got another exception:
!ENTRY org.eclipse.core.jobs 4 2 2013-11-26 10:47:23.644
!MESSAGE An internal error occurred during: "Long Running Action: 25233776".
!STACK 0
org.eclipse.swt.SWTException: Device is disposed
	at org.eclipse.swt.SWT.error(SWT.java:3639)
	at org.eclipse.swt.SWT.error(SWT.java:3562)
	at org.eclipse.swt.SWT.error(SWT.java:3533)
	at org.eclipse.swt.widgets.Display.error(Display.java:2300)
	at org.eclipse.swt.widgets.Display.asyncExec(Display.java:1051)
	at org.eclipse.ui.internal.progress.ProgressMonitorFocusJobDialog$3.runAsync(ProgressMonitorFocusJobDialog.java:322)
	at org.eclipse.ui.internal.progress.ProgressMonitorFocusJobDialog$3.subTask(ProgressMonitorFocusJobDialog.java:397)
	at org.eclipse.ui.internal.progress.ProgressManager$JobMonitor.subTask(ProgressManager.java:359)
	at org.eclipse.rap.demo.actions.JobActionWithDialog$1.run(JobActionWithDialog.java:41)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 3 Ivan Furnadjiev CLA 2015-03-19 07:26:55 EDT
Reproducible with RAP 3.0 M5+. To fix the issue we need to keep an instance of FinishedJobs as field in JobInfo and ProgressManager. This is the approach used in e4 implementation of JobInfo and ProgressManager.
Comment 4 Ivan Furnadjiev CLA 2020-03-26 04:34:10 EDT
Fixed with bug 559612.