Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 360152 - [TableViewer (Virtual)] Benefit of Virtual is lost when tooltips are fetched for a row
Summary: [TableViewer (Virtual)] Benefit of Virtual is lost when tooltips are fetched ...
Status: RESOLVED FIXED
Alias: None
Product: RAP
Classification: RT
Component: RWT (show other bugs)
Version: 1.5   Edit
Hardware: All All
: P1 major (vote)
Target Milestone: 1.5 M3   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard: sr142
Keywords:
Depends on:
Blocks:
 
Reported: 2011-10-06 14:54 EDT by Clemens Schneider CLA
Modified: 2011-10-07 04:35 EDT (History)
1 user (show)

See Also:


Attachments
Proposed patch for v14_Maintenance branch (1.47 KB, patch)
2011-10-06 17:56 EDT, Ivan Furnadjiev CLA
ruediger.herrmann: review+
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Clemens Schneider CLA 2011-10-06 14:54:46 EDT
Build Identifier: 1.5M2

When using TableViewer in Virtual mode with many items (say 50000+), hovering an arbitrary entry in the table causes all TableItems to be instanciated. Long UI freezes and an increased memory footprint on server side are the result of this misbehaviour.
Following stacktrace shows when the problem occurs. A call to Table.getItems() instanciates all TableItems.

	Table.getItems() line: 769	
	TableLCA.getItemById(Table, String) line: 441	
	TableLCA.readCellToolTipTextRequested(Table) line: 417	
	TableLCA.readData(Widget) line: 92	
	DisplayLCA$1.doVisit(Widget) line: 96	
	DisplayLCA$1(WidgetTreeVisitor$AllWidgetTreeVisitor).visit(Composite) line: 34	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 48	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	WidgetTreeVisitor.accept(Widget, WidgetTreeVisitor) line: 55	
	DisplayLCA.readData(Display) line: 103	
	ReadData.execute(Display) line: 26	
	RWTLifeCycle.continueLifeCycle() line: 183	
	RWTLifeCycle.sleep() line: 259	
	Display.sleep() line: 1174	
	ControlsDemo.createUI() line: 47	
	EntryPointManager.createUI(String) line: 81	
	RWTLifeCycle.createUI() line: 204	
	RWTLifeCycle$UIThreadController.run() line: 88	
	UIThread(Thread).run() line: 679	
	UIThread.run() line: 101	


Reproducible: Always

Steps to Reproduce:
1. Open Controls-Demo-Code and change constant value of ADD_ITEMS to 50000
2. Startup Controls-Demo, TableViewer-Tab, select VIRTUAL, add 50000 items
3. Hover over some arbitrary row
4. UI freezes, all TableItems get instanciated
The issue is more severe on slower browsers (like IE8) but is nevertheless noticeable in chrome and safari (add more items for heavier delay)
Comment 1 Ivan Furnadjiev CLA 2011-10-06 15:57:00 EDT
The method TableLCA#getItemById has been removed. TableLCA#getItem is used instead in TableLCA#readCellToolTipTextRequested (no more calls to Table#getItems()). Changes are in CVS HEAD.
Comment 2 Ivan Furnadjiev CLA 2011-10-06 17:56:37 EDT
Created attachment 204724 [details]
Proposed patch for v14_Maintenance branch
Comment 3 Ivan Furnadjiev CLA 2011-10-07 04:35:30 EDT
Applied patch to v14_Maintenance branch.