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

Bug 310593

Summary: Shutting down OSGi when RAP is running causes exception
Product: [RT] RAP Reporter: Cristina Petra <petracristina>
Component: WorkbenchAssignee: Project Inbox <rap-inbox>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: petracristina
Version: 1.3   
Target Milestone: 1.3 M7   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
Proposed patch none

Description Cristina Petra CLA 2010-04-27 05:49:33 EDT
Build Identifier:  I20090611-1540

I have a RAP application deployed on JBOSS (4.2.2.GA).

Each time I shutdown the server (Ctrl+C) I get an exception. I use RAP 1.3 M5.

ERROR [org.apache.catalina.core.ContainerBase.[jboss.web].[localho st].[/app]] Exception while executing dispose-listener.
java.lang.NullPointerException
at org.eclipse.rap.ui.internal.preferences.SessionScope.getNode (SessionScope.java:67)
at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getStor ePreferences(ScopedPreferenceStoreCore.java:225)
at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getPref erenceNodes(ScopedPreferenceStoreCore.java:267)
at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.interna lGet(ScopedPreferenceStoreCore.java:458)
at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getBool ean(ScopedPreferenceStoreCore.java:370)
at org.eclipse.ui.preferences.ScopedPreferenceStore.getBoolean( ScopedPreferenceStore.java:446)
at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:8 07)
at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:7 81)
at org.eclipse.ui.internal.Workbench$21.run(Workbench.java:1047 )
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator .java:66)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1045)
at org.eclipse.ui.internal.Workbench.close(Workbench.java:1007)
at org.eclipse.ui.internal.Workbench$ShutdownHandler.handleEven t(Workbench.java:131)
at org.eclipse.swt.widgets.Display.sendDisposeEvent(Display.jav a:697)
at org.eclipse.swt.widgets.Display.release(Display.java:681)
at org.eclipse.swt.graphics.Device.dispose(Device.java:177)
at org.eclipse.rwt.internal.lifecycle.UIThread.processShutdown( UIThread.java:137)
at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadCont roller.run(RWTLifeCycle.java:132)
at java.lang.Thread.run(Thread.java:595)
at org.eclipse.rwt.internal.lifecycle.UIThread.run(UIThread.jav a:80)

Note: This exception occurs also with jetty (started and stopped programmatically).

Thank you in advance,
Cristina


Reproducible: Always

Steps to Reproduce:
1.Take a war from http://rap.eclipsesource.com/download/rapdemo.war for example.
2.Bring it in JBOSS (I use 4.2.2.GA)
3.Start the application
4.Shutdown the server (Ctrl+C).
Comment 1 Ivan Furnadjiev CLA 2010-04-28 06:09:50 EDT
I can reproduce it with the "internal" Jetty server and Workbench Demo. Steps to reproduce:
1. Start Workbench Demo
2. Type "stop 0" in osgi console
------------
osgi> stop 0
osgi> 2010-04-28 13:06:53.708:/:WARN:  ERROR:  Exception while executing dispose-listener.
java.lang.NullPointerException
	at org.eclipse.rap.ui.internal.preferences.SessionScope.getNode(SessionScope.java:67)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getStorePreferences(ScopedPreferenceStoreCore.java:225)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getPreferenceNodes(ScopedPreferenceStoreCore.java:267)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.internalGet(ScopedPreferenceStoreCore.java:458)
	at org.eclipse.ui.preferences.ScopedPreferenceStoreCore.getBoolean(ScopedPreferenceStoreCore.java:370)
	at org.eclipse.ui.preferences.ScopedPreferenceStore.getBoolean(ScopedPreferenceStore.java:446)
	at org.eclipse.ui.internal.Workbench.busyClose(Workbench.java:807)
	at org.eclipse.ui.internal.Workbench.access$12(Workbench.java:781)
	at org.eclipse.ui.internal.Workbench$21.run(Workbench.java:1047)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:66)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1045)
	at org.eclipse.ui.internal.Workbench.close(Workbench.java:1007)
	at org.eclipse.ui.internal.Workbench$ShutdownHandler.handleEvent(Workbench.java:131)
	at org.eclipse.swt.widgets.Display.sendDisposeEvent(Display.java:714)
	at org.eclipse.swt.widgets.Display.release(Display.java:693)
	at org.eclipse.swt.graphics.Device.dispose(Device.java:282)
	at org.eclipse.rwt.internal.lifecycle.UIThread.processShutdown(UIThread.java:159)
	at org.eclipse.rwt.internal.lifecycle.RWTLifeCycle$UIThreadController.run(RWTLifeCycle.java:128)
	at java.lang.Thread.run(Thread.java:619)
	at org.eclipse.rwt.internal.lifecycle.UIThread.run(UIThread.java:102)
Comment 2 Ivan Furnadjiev CLA 2010-04-28 07:49:18 EDT
Created attachment 166309 [details]
Proposed patch

When OSGi framework is shutdown ( stop zero bundle or JBoss/Jetty... shutdown ) the Platform goes death before the display dispose event is propagated. Closing workbench on death Platform leads to various exceptions in Workbench#close().
Comment 3 Ivan Furnadjiev CLA 2010-04-28 11:56:50 EDT
Applied patch to CVS HEAD.