Bug 36399 - Compare did retrieve entire remote ZIP contents on selection change
Summary: Compare did retrieve entire remote ZIP contents on selection change
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: Compare (show other bugs)
Version: 2.1   Edit
Hardware: PC Windows 2000
: P2 critical (vote)
Target Milestone: 3.0 M1   Edit
Assignee: Andre Weinand CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-04-11 07:22 EDT by Philipe Mulet CLA
Modified: 2003-07-14 04:56 EDT (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Philipe Mulet CLA 2003-04-11 07:22:34 EDT
Build R2.1

I was about to post a patch (~4MB) to dev.eclipse.org, and when right clicking 
on the ZIP file to get to commit menu, Eclipse froze for several minutes, to 
perform some compare action for free:

main" prio=5 tid=0x00234D28 nid=0x830 runnable [6e000..6fc40]
       at org.eclipse.compare.ZipFileStructureCreator.getStructure
(ZipFileStructureCreator.java:237)
       at org.eclipse.compare.internal.ResourceCompareInput.getStructure
(ResourceCompareInput.java:221)
       at org.eclipse.compare.internal.ResourceCompareInput.setSelection
(ResourceCompareInput.java:151)
       at org.eclipse.compare.internal.CompareAction.selectionChanged
(CompareAction.java:48)
       at org.eclipse.ui.internal.PluginAction.refreshEnablement
(PluginAction.java:205)
       at org.eclipse.ui.internal.PluginAction.selectionChanged
(PluginAction.java:272)
       at 
org.eclipse.ui.internal.ObjectActionContributor.contributeObjectActions
(ObjectActionContributor.java:98)
       at 
org.eclipse.ui.internal.ObjectActionContributorManager.contributeObjectActions
(ObjectActionContributorManager.java:133)
       at org.eclipse.ui.internal.PopupMenuExtender.addObjectActions
(PopupMenuExtender.java:57)
       at org.eclipse.ui.internal.PopupMenuExtender.menuAboutToShow
(PopupMenuExtender.java:78)
       at org.eclipse.jface.action.MenuManager.fireAboutToShow
(MenuManager.java:255)
       at org.eclipse.jface.action.MenuManager.handleAboutToShow
(MenuManager.java:334)
       at org.eclipse.jface.action.MenuManager.access$0(MenuManager.java:331)
       at org.eclipse.jface.action.MenuManager$2.menuShown(MenuManager.java:343)
       at org.eclipse.swt.widgets.TypedListener.handleEvent
(TypedListener.java:116)
       at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:81)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:840)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:865)
       at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:845)
       at org.eclipse.swt.widgets.Control.WM_INITMENUPOPUP(Control.java:3141)
       at org.eclipse.swt.widgets.Control.windowProc(Control.java:2785)
       at org.eclipse.swt.widgets.Decorations.windowProc(Decorations.java:1229)
       at org.eclipse.swt.widgets.Display.windowProc(Display.java:2361)
       at org.eclipse.swt.internal.win32.OS.TrackPopupMenu(Native Method)
       at org.eclipse.swt.widgets.Menu._setVisible(Menu.java:218)
       at org.eclipse.swt.widgets.Display.runPopups(Display.java:1863)
       at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1538)
       at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1402)
       at org.eclipse.ui.internal.Workbench.run(Workbench.java:1385)
       at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:845)
       at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461)
       at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
       at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
       at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
       at java.lang.reflect.Method.invoke(Method.java:324)
       at org.eclipse.core.launcher.Main.basicRun(Main.java:291)
       at org.eclipse.core.launcher.Main.run(Main.java:747)
       at org.eclipse.core.launcher.Main.main(Main.java:583)

Note: I have CVS label decoration enabled.
Comment 1 Philipe Mulet CLA 2003-04-11 07:41:11 EDT
I haven't selected this JAR for an explicit compare each other action.
Comment 2 Philipe Mulet CLA 2003-04-11 07:52:53 EDT
Actually, the deadly scenario is to right click on 2 selected files at once.
Steps:
- checkout project jdt-core-home from dev.eclipse.org
- select both patches/org.eclipse.jdt.core_2.2.0.zip
   and r2.2/main.html
- right click to access team menus

-> freezes

(worked around by disabling completely the ZIP/JAR compare code).

Side-note:
it feels like ResourceCompareInput.setSelection could be slightly improved to 
avoid retrieving structure for right element if left structure came back as 
null.

...
fLeft= getStructure(fLeftResource);
if (fLeft != null) { // don't bother if left has no comparable structure
	fRight= getStructure(fRightResource);
}
if (incomparable(fLeft, fRight))
	return false;
...

but this isn't what's causing grief here unfortunately.
Comment 3 Philipe Mulet CLA 2003-04-11 07:57:17 EDT
It seems to occur only if selecting both a ZIP/JAR and some html. Selecting 2 
ZIPs does some work but it takes only a second to complete.
Comment 4 Philipe Mulet CLA 2003-06-02 06:47:21 EDT
This bug keeps hitting me and is quite painfull.
Comment 5 Andre Weinand CLA 2003-06-02 11:06:50 EDT
fixed and released for I20030603
Comment 6 Andre Weinand CLA 2003-07-14 04:56:04 EDT
Has been fixed for M1