Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 313611 - Inner user-job fails due to preference store
Summary: Inner user-job fails due to preference store
Status: ASSIGNED
Alias: None
Product: RAP
Classification: RT
Component: Workbench (show other bugs)
Version: 1.3   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 262603
  Show dependency tree
 
Reported: 2010-05-19 15:33 EDT by Benjamin Muskalla CLA
Modified: 2018-04-18 06:03 EDT (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Benjamin Muskalla CLA 2010-05-19 15:33:11 EDT
Scheduling a user-job inside a user-job fails as the JobManager tries to access the session-scoped preference store.

Snippet:
    Job job = new Job("Long Running Action:" ) {
      protected IStatus run( final IProgressMonitor monitor ) {
        
        Job innerJob = new Job("foo") {
          protected IStatus run( IProgressMonitor monitor ) {
            return null;
          }
        };
        innerJob.setUser( true );
        innerJob.schedule();
        
        return Status.OK_STATUS;
      }
    };
    job.setName( job.getName() + " " + job.hashCode() );
    job.setUser( true );
    job.schedule();


!ENTRY org.eclipse.rap.ui.workbench 4 2 2010-05-19 21:27:11.376
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.rap.ui.workbench".
!STACK 0
java.lang.IllegalStateException: No context available outside of the request service lifecycle.
	at org.eclipse.rwt.internal.service.ContextProvider.getContext(ContextProvider.java:107)
	at org.eclipse.rwt.internal.service.ContextProvider.getSession(ContextProvider.java:140)
	at org.eclipse.rwt.RWT.getSessionStore(RWT.java:242)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.getCore(ScopedPreferenceStore.java:163)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.getBoolean(ScopedPreferenceStore.java:446)
	at org.eclipse.ui.internal.progress.ProgressManager.shouldRunInBackground(ProgressManager.java:1400)
	at org.eclipse.ui.internal.progress.ProgressManager.access$2(ProgressManager.java:1399)
	at org.eclipse.ui.internal.progress.ProgressManager$1.scheduled(ProgressManager.java:476)
	at org.eclipse.rap.ui.internal.progress.JobManagerAdapter.scheduled(JobManagerAdapter.java:167)
	at org.eclipse.core.internal.jobs.JobListeners$5.notify(JobListeners.java:49)
	at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:96)
	at org.eclipse.core.internal.jobs.JobListeners.scheduled(JobListeners.java:162)
	at org.eclipse.core.internal.jobs.JobManager.schedule(JobManager.java:1000)
	at org.eclipse.core.internal.jobs.InternalJob.schedule(InternalJob.java:391)
	at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:435)
	at org.eclipse.rap.demo.actions.JobAction$1.run(JobAction.java:39)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Ivan Furnadjiev CLA 2013-06-26 05:59:27 EDT
Still valid with RAP 2.1:
java.lang.IllegalStateException: Invalid thread access
	at org.eclipse.rap.rwt.RWT.checkContext(RWT.java:652)
	at org.eclipse.rap.rwt.RWT.getUISession(RWT.java:511)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.getCore(ScopedPreferenceStore.java:164)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.getBoolean(ScopedPreferenceStore.java:447)
	at org.eclipse.ui.internal.progress.ProgressManager.shouldRunInBackground(ProgressManager.java:1357)
	at org.eclipse.ui.internal.progress.ProgressManager.access$2(ProgressManager.java:1356)
	at org.eclipse.ui.internal.progress.ProgressManager$2.scheduled(ProgressManager.java:516)
	at org.eclipse.rap.ui.internal.progress.JobManagerAdapter.scheduled(JobManagerAdapter.java:163)
	at org.eclipse.core.internal.jobs.JobListeners$5.notify(JobListeners.java:49)
	at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:96)
	at org.eclipse.core.internal.jobs.JobListeners.scheduled(JobListeners.java:162)
	at org.eclipse.core.internal.jobs.JobManager.schedule(JobManager.java:1133)
	at org.eclipse.core.internal.jobs.InternalJob.schedule(InternalJob.java:430)
	at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:436)
	at rap.bugs.view.ApplicationTesterView$1$1.run(ApplicationTesterView.java:40)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:53)
Comment 2 Shivendra Prakash Shukla CLA 2018-04-18 06:03:45 EDT
Still this issue coming in Oxigen also

java.lang.IllegalStateException: Invalid thread access
	at org.eclipse.rap.rwt.RWT.checkContext(RWT.java:703)
	at org.eclipse.rap.rwt.RWT.getUISession(RWT.java:587)
	at org.eclipse.rap.ui.internal.preferences.SessionPreferencesNode.getNodeCore(SessionPreferencesNode.java:506)
	at org.eclipse.rap.ui.internal.preferences.SessionPreferencesNode.addNodeChangeListener(SessionPreferencesNode.java:80)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.<init>(ScopedPreferenceStoreCore.java:119)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.<init>(ScopedPreferenceStoreCore.java:100)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.createScopedPreferenceStoreCore(ScopedPreferenceStore.java:155)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.<init>(ScopedPreferenceStore.java:136)
	at org.eclipse.ui.plugin.AbstractUIPlugin.getPreferenceStore(AbstractUIPlugin.java:309)
	at org.eclipse.ui.internal.progress.ProgressManager.shouldRunInBackground(ProgressManager.java:1357)
	at org.eclipse.ui.internal.progress.ProgressManager.access$2(ProgressManager.java:1356)
	at org.eclipse.ui.internal.progress.ProgressManager$2.scheduled(ProgressManager.java:516)
	at org.eclipse.rap.ui.internal.progress.JobManagerAdapter.scheduled(JobManagerAdapter.java:163)
	at org.eclipse.core.internal.jobs.JobListeners.doNotify(JobListeners.java:70)
	at org.eclipse.core.internal.jobs.JobListeners.scheduled(JobListeners.java:125)
	at org.eclipse.core.internal.jobs.JobManager.schedule(JobManager.java:1257)
	at org.eclipse.core.internal.jobs.InternalJob.schedule(InternalJob.java:382)
	at org.eclipse.core.runtime.jobs.Job.schedule(Job.java:635)
	at org.eclipse.ui.internal.ide.dialogs.CleanDialog.buttonPressed(CleanDialog.java:232)
	at org.eclipse.jface.dialogs.Dialog.lambda$0(Dialog.java:619)
	at org.eclipse.swt.events.SelectionListener$1.widgetSelected(SelectionListener.java:81)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:249)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4428)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4238)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3817)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:818)
	at org.eclipse.jface.window.Window.open(Window.java:794)
	at org.eclipse.jface.dialogs.MessageDialog.open(MessageDialog.java:396)
	at org.eclipse.ui.internal.ide.actions.BuildCleanAction.run(BuildCleanAction.java:50)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:473)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:565)
	at org.eclipse.jface.action.ActionContributionItem.lambda$4(ActionContributionItem.java:397)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:86)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4428)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1079)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4238)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3817)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$5.run(PartRenderingEngine.java:1150)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1039)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:153)
	at org.eclipse.ui.internal.Workbench.lambda$3(Workbench.java:680)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:336)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:594)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:148)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:151)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:388)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:243)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:653)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:590)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1499)