gwtproject / gwt

GWT Open Source Project
http://www.gwtproject.org
1.53k stars 377 forks source link

Building workspace taking too much time during the "analyzing sources" step #6601

Closed dankurka closed 9 years ago

dankurka commented 9 years ago

Originally reported on Google Code with ID 6602

Found in GWT Release :
2.3.0

Found on : 
- Mac OS X Lion (10.7)
- Google Plugin for Eclipse 3.7 2.3.2.r37v201106211634  
- Eclipse IDE for Java Developers
   Version: Indigo Release
   Build id: 20110615-0604

Detailed description :
Since the last update of Google Eclipse plugin on Indigo, it takes more time to build
the project. The phase which seems to slow down the build is the "analysing sources"
phase

Reported by jerome.cance on 2011-07-22 08:09:07

dankurka commented 9 years ago
Same problem here in ubuntu 11.04 64bit+indigo.

After installing:Google Plugin for Eclipse 3.7  2.3.3.r37v201107211953,thing gets better,but
problem still existed:it takes long time to analyze source and build project at each
time to save changes.

Reported by Alexander.Luya on 2011-07-30 12:40:46

dankurka commented 9 years ago
It seems I have fixed it by not instaling window builder and gwt designer packages.
I did not used it so ...

Reported by dohan.rene on 2011-07-30 12:51:47

dankurka commented 9 years ago
Actually,this is a very serious problem.Right now,it has taken 30 minutes to analyze
source(sucked in 2% or 4%) in my laptop(ubuntu 11.04 64 bit+eclipse 3.7) and seems
never to get finished,even kill eclipse process and restart it(I have done that),it
just keeps analyzing....,drives me crazy.By the way,I have latest plugin installed.

Reported by Alexander.Luya on 2011-08-01 10:29:59

dankurka commented 9 years ago
Try uninstall of window builder and gwt designer plugins, i think it will solve those
issues , another solution is possibly to downgrade to eclipse 3.6 ... Now I have quick
builds without those plugins , no problem at all

Reported by dohan.rene on 2011-08-01 11:10:51

dankurka commented 9 years ago
Just for info: closing the running GWT application doesn't help... Even if nothing else
is running, "Building workspace..." + "analyzing sources" takes long time in Indigo!

Reported by marko.krajnc@cursor.si on 2011-09-23 12:34:13

dankurka commented 9 years ago
I can confirm that issue is 'fixed' by uninstalling window builder and gwt designer.

Reported by simon.p.hart on 2011-10-05 02:22:50

dankurka commented 9 years ago
When you uninstall GWT Designer and WindowBuilder, are you leaving core GPE still installed,
or did you remove that too?

Is anyone seeing the problem with *just* core GPE?

For those of you running into this problem, can you use jstack to get a stack dump
of the java process running Eclipse when this slowness occurs?

Reported by rdayal@google.com on 2011-12-07 16:42:25

dankurka commented 9 years ago
Issue 7034 has been merged into this issue.

Reported by rdayal@google.com on 2011-12-07 16:43:13

dankurka commented 9 years ago
I confirm that the problem disappeared by uninstalling GWT Designer and WindowBuilder
(and keeping core GPE).

Eclipse 3.7, GWT 2.4, m2eclipse.

Reported by xavier.castel on 2012-03-28 09:52:19

dankurka commented 9 years ago

I have run jstack on my Eclipse when it is stopped in 58%. The only significant thread
I found is attached below. It seems to be stuck on a network connection trying to get
a DTD from somewhere to use it for validating a UIBinder template. I suppose that's
why uninstalling GWT designer and WindowBuilder fixes the problem.

I tried disabled validation for .ui.xml files in Eclipse preferences as a workaround,
but didn't seem to work. Any advice on a possible workaround until the fix gets released
would be very welcome.

------------------

"Worker-0" prio=5 tid=10c620800 nid=0x110815000 runnable [110812000]
   java.lang.Thread.State: RUNNABLE
    at java.net.SocketInputStream.socketRead0(Native Method)
    at java.net.SocketInputStream.read(SocketInputStream.java:129)
    at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
    at java.io.BufferedInputStream.read1(BufferedInputStream.java:258)
    at java.io.BufferedInputStream.read(BufferedInputStream.java:317)
    - locked <7da7ee848> (a java.io.BufferedInputStream)
    at sun.net.www.http.HttpClient.parseHTTPHeader(HttpClient.java:695)
    at sun.net.www.http.HttpClient.parseHTTP(HttpClient.java:640)
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1195)
    - locked <7da8f70d8> (a sun.net.www.protocol.http.HttpURLConnection)
    at org.eclipse.wst.common.uriresolver.internal.util.URIHelper.isReadableURI(URIHelper.java:484)
    at org.eclipse.wst.dtd.core.internal.saxparser.DTDParser.parse(DTDParser.java:119)
    at org.eclipse.wst.dtd.core.internal.emf.util.DTDUtil.parse(DTDUtil.java:102)
    at org.eclipse.wst.dtd.core.internal.contentmodel.DTDImpl.buildDTDModel(DTDImpl.java:88)
    at org.eclipse.wst.dtd.core.internal.contentmodel.DTDImpl.buildCMDocument(DTDImpl.java:79)
    at org.eclipse.wst.dtd.core.internal.contentmodel.CMDocumentFactoryDTD.createCMDocument(CMDocumentFactoryDTD.java:37)
    at org.eclipse.wst.xml.core.internal.contentmodel.ContentModelManager.createCMDocument(ContentModelManager.java:56)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl.buildCMDocument(CMDocumentManagerImpl.java:284)
    - locked <7daaf5b20> (a org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl.loadCMDocument(CMDocumentManagerImpl.java:259)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl.getCMDocument(CMDocumentManagerImpl.java:195)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.getCMDocument(XMLAssociationProvider.java:157)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.getCorrespondingCMDocument(XMLAssociationProvider.java:116)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.getCMElementDeclaration(XMLAssociationProvider.java:190)
    at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.ModelQueryImpl.getCMElementDeclaration(ModelQueryImpl.java:116)
    at org.eclipse.wst.xml.core.internal.document.DocumentImpl.getCMAttributes(DocumentImpl.java:1077)
    at org.eclipse.wst.xml.core.internal.document.ElementImpl.getDefaultValue(ElementImpl.java:386)
    at org.eclipse.wst.xml.core.internal.document.ElementImpl.getAttributeNode(ElementImpl.java:271)
    at org.eclipse.wst.xml.core.internal.document.ElementImpl.getNamespaceURI(ElementImpl.java:582)
    at com.google.gwt.eclipse.core.uibinder.UiBinderXmlModelUtilities.isImportElement(UiBinderXmlModelUtilities.java:187)
    at com.google.gwt.eclipse.core.uibinder.contentassist.ElExpressionFirstFragmentComputer$1.visitNode(ElExpressionFirstFragmentComputer.java:119)
    at com.google.gdt.eclipse.core.XmlUtilities.visitNodes(XmlUtilities.java:409)
    at com.google.gdt.eclipse.core.XmlUtilities.visitNodes(XmlUtilities.java:421)
    at com.google.gdt.eclipse.core.XmlUtilities.visitNodes(XmlUtilities.java:421)
    at com.google.gwt.eclipse.core.uibinder.contentassist.ElExpressionFirstFragmentComputer.compute(ElExpressionFirstFragmentComputer.java:110)
    at com.google.gwt.eclipse.core.uibinder.model.reference.UiBinderXmlParser.parse(UiBinderXmlParser.java:217)
    at com.google.gwt.eclipse.core.uibinder.validators.UiBinderJavaValidator$UiBinderSubtypeVisitor.parseAndValidateUiXml(UiBinderJavaValidator.java:300)
    at com.google.gwt.eclipse.core.uibinder.validators.UiBinderJavaValidator$UiBinderSubtypeVisitor.visit(UiBinderJavaValidator.java:257)
    at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:467)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
    at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:484)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
    at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2585)
    at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:219)
    at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2514)
    at com.google.gwt.eclipse.core.uibinder.validators.UiBinderJavaValidator.validate(UiBinderJavaValidator.java:519)
    at com.google.gwt.eclipse.core.validators.java.JavaCompilationParticipant$2.acceptAST(JavaCompilationParticipant.java:393)
    at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:883)
    at org.eclipse.jdt.core.dom.CompilationUnitResolver.resolve(CompilationUnitResolver.java:577)
    at org.eclipse.jdt.core.dom.ASTParser.createASTs(ASTParser.java:894)
    at com.google.gdt.eclipse.platform.jdt.internal.corext.dom.ASTBatchParser.createASTs(ASTBatchParser.java:108)
    at com.google.gwt.eclipse.core.validators.java.JavaCompilationParticipant.handleBuildStarting(JavaCompilationParticipant.java:326)
    at com.google.gwt.eclipse.core.validators.java.JavaCompilationParticipant.buildStarting(JavaCompilationParticipant.java:202)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.notifyParticipants(AbstractImageBuilder.java:565)
    at org.eclipse.jdt.internal.core.builder.AbstractImageBuilder.compile(AbstractImageBuilder.java:287)
    at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:134)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.buildDeltas(JavaBuilder.java:265)
    at org.eclipse.jdt.internal.core.builder.JavaBuilder.build(JavaBuilder.java:193)
    at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239)
    at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292)
    at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
    at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295)
    at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351)
    at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374)
    at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143)
    at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Reported by izaera on 2012-03-28 13:50:51

dankurka commented 9 years ago
Im following the workaround here:

http://code.google.com/p/google-web-toolkit/issues/detail?id=5773#c33

It stops you having to make a hope to google to get that DTD and spoofs it
locally instead - speeding all sorts of things up ... definitely
content-assist anyway..

Reported by benjamin.ritchie on 2012-03-28 15:01:32

dankurka commented 9 years ago
It is almost a blocking issue, I had to uninstall the plugin and go pure ant scripts
as it made practically impossible for me to develop. The offline DTD workaround helped
a lot but still extremely slow.

Reported by jantekb on 2012-03-29 06:30:42

dankurka commented 9 years ago
Agreed, it only seems to tackle some of the issues (slow save / ui bind
autocomplete) but not slow validation..

Reported by benjamin.ritchie on 2012-03-29 13:55:19

dankurka commented 9 years ago
Yes same for us, what we had to do was the opposite: 
- remove Google Plugin For Eclipse from STS completely
- install GWT Designer using the standalone plugin 
- then build GWT from Maven using gwt maven plugin (using configuration from Spring
Roo sample) 

In this way STS was just about usable. 

It's a real shame no effort is being put into fixing this properly.  The GWT Dev Mode
compile outside of STS is very quick, so I don't believe it's a GWT issue, more likely
a resource issue in STS/Eclipse plugin.  

We also turned off the Spring validation Builder and the regular Validation. 

Reported by peteth on 2012-03-29 14:13:48

dankurka commented 9 years ago
Every operation causes a long time waiting event though it's not related with GWT things
at all. 

Is there a way of just turning off the GWT building operation ?

Reported by tangxf on 2012-04-10 08:33:13

dankurka commented 9 years ago
Build times on Indigo became intolerable so I downgraded to Helios and builds are fast
again. So glad Helios works because this was killing my productivity. Indigo is unusable.

Reported by virtualbrown on 2012-05-23 03:44:22

dankurka commented 9 years ago

Reported by kurka.daniel on 2012-12-16 18:53:49

dankurka commented 9 years ago
This belongs on the issue tracker for the google plugin for eclipse.

see: issue google-plugin-for-eclipse:213

Reported by dankurka@google.com on 2013-06-09 14:41:37