Bug 726747 - Flipping between Inventory Summary and Platform Utilization repeatedly causes global uncaught exception.
Summary: Flipping between Inventory Summary and Platform Utilization repeatedly causes...
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: RHQ Project
Classification: Other
Component: Core UI
Version: 4.1
Hardware: Unspecified
OS: Unspecified
high
unspecified
Target Milestone: ---
: ---
Assignee: Jay Shaughnessy
QA Contact: Mike Foley
URL:
Whiteboard:
Depends On:
Blocks: 731034 jon30-bugs rhq41 rhq41-ui
TreeView+ depends on / blocked
 
Reported: 2011-07-29 17:30 UTC by Robert Buck
Modified: 2012-02-07 19:21 UTC (History)
4 users (show)

Fixed In Version: 4.1
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2012-02-07 19:21:10 UTC
Embargoed:


Attachments (Terms of Use)

Description Robert Buck 2011-07-29 17:30:04 UTC
Description of problem:

Flipping between Inventory Summary and Platform Utilization repeatedly causes global uncaught exception.

Version-Release number of selected component (if applicable):


How reproducible:
Occasional

Steps to Reproduce:
1. Go to Reports
2. Click on any subsystem
3. Repeatedly click, rapidly, between Inventory Summary and Platform Utilization.
  
Actual results:

Uncaught exception.

Expected results:

Tabular results.

Additional info:

Message :	
Globally uncaught exception
Severity :	
Error
	
Time :	
Friday, July 29, 2011 1:24:45 PM Etc/GMT+4
Detail :	
com.google.gwt.core.client.JavaScriptException:(TypeError): cpuField is null stack: org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_$buildUI__Lorg_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_2V([object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:92291 org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet$1_onSuccess__Ljava_lang_Object_2V([object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:92476 com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:9296 org_rhq_enterprise_gui_coregui_client_util_rpc_TrackingRequestCallback_onResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:155373 com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:4380 com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V([object XMLHttpRequest])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:4604 ([object Event])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:12600 com_google_gwt_core_client_impl_Impl_entry0__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2((function () {handler.onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(_this);}),[object XMLHttpRequest],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:2474 ([object Event])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:2463 fileName: http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html lineNumber: 92291
--- STACK TRACE FOLLOWS ---
(TypeError): cpuField is null stack: org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_$buildUI__Lorg_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_2V([object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:92291 org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet$1_onSuccess__Ljava_lang_Object_2V([object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:92476 com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:9296 org_rhq_enterprise_gui_coregui_client_util_rpc_TrackingRequestCallback_onResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:155373 com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V([object Object],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:4380 com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V([object XMLHttpRequest])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:4604 ([object Event])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:12600 com_google_gwt_core_client_impl_Impl_entry0__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2((function () {handler.onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(_this);}),[object XMLHttpRequest],[object Object])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:2474 ([object Event])@http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html:2463 fileName: http://jon06.mw.lab.eng.bos.redhat.com:7080/coregui/org.rhq.enterprise.gui.coregui.CoreGUI/355AAF48EDBC9332EC8DEA1DB8FD15AE.cache.html lineNumber: 92291
    at Unknown.org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_$buildUI__Lorg_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet_2V(Unknown source:0)
    at Unknown.org_rhq_enterprise_gui_coregui_client_dashboard_portlets_platform_PlatformSummaryPortlet$1_onSuccess__Ljava_lang_Object_2V(Unknown source:0)
    at Unknown.com_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_$onResponseReceived__Lcom_google_gwt_user_client_rpc_impl_RequestCallbackAdapter_2Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown source:0)
    at Unknown.org_rhq_enterprise_gui_coregui_client_util_rpc_TrackingRequestCallback_onResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_Response_2V(Unknown source:0)
    at Unknown.com_google_gwt_http_client_Request_$fireOnResponseReceived__Lcom_google_gwt_http_client_Request_2Lcom_google_gwt_http_client_RequestCallback_2V(Unknown source:0)
    at Unknown.com_google_gwt_http_client_RequestBuilder$1_onReadyStateChange__Lcom_google_gwt_xhr_client_XMLHttpRequest_2V(Unknown source:0)
    at Unknown.anonymous(Unknown source:0)
    at Unknown.com_google_gwt_core_client_impl_Impl_entry0__Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2Ljava_lang_Object_2(Unknown source:0)
    at Unknown.anonymous(Unknown source:0)
    at Unknown.anonymous(Unknown source:0)
    at Unknown.anonymous(Unknown source:0)
    at Unknown.anonymous(Unknown source:0)

Comment 1 Robert Buck 2011-08-16 13:24:31 UTC
Here's an example of how fast user clicking can cause GUI code to be 
executed in the wrong order thereby causing exceptions and/or unexpected 
behavior. The steps listed are executed in order:

1) user clicks on Resource X in tree - browser intercepts click and 
calls onClick event handler for tree node
2) getResourceComposite(X) async server call is made - control returns 
to browser while waiting for async call to return
3) user clicks on Resource Y in tree - browser intercepts click and 
calls onClick event handler for tree node
4) getResourceComposite(Y) async server call is made - control returns 
to browser while waiting for async call to return
5) getResourceComposite(X) async server call returns and browser calls 
onSuccess() handler which continues rendering X detail view

At this point we're in an inconsistent state because we've begun 
rendering both the detail view for X and the detail view for Y at the 
same time and both are updating the same ResourceDetailView (resource 
header, tabs, etc.).

Essentially any async server calls provide windows of opportunity for 
the browser to handle user clicks before GUI code is fully done drawing 
the view corresponding to a prior user click.

Comment 2 John Mazzitelli 2011-08-16 20:39:07 UTC
fast-clicking solution that bob is working on might fix this... assigning to bob

Comment 3 Jay Shaughnessy 2011-08-18 00:46:10 UTC
FYI, I did repro and work on this. I actually missed the fact it was assigned to Bob. It's definitely a quick click issue as an async call is made in the constructor and the error happens in the callback.  

Bob's change would probably have addressed this (he could use the non-fixed version to test) but I also ended up making a fix that I think solves the issue.

master commit: 66918cbae7af05caf897da41231109d5b427737f

Comment 4 Sunil Kondkar 2011-08-18 09:13:22 UTC
Verified on build#298 (Version: 4.1.0-SNAPSHOT Build Number: 66918cb)

Rapidly and repeatedly clicked between Inventory Summary and Platform
Utilization. Also tried to flip rapidly between other subsystem menus. No exception is observed. 

Marking as verified.

Comment 5 Mike Foley 2012-02-07 19:21:10 UTC
changing status of VERIFIED BZs for JON 2.4.2 and JON 3.0 to CLOSED/CURRENTRELEASE


Note You need to log in before you can comment on or make changes to this bug.