scala.tools.eclipse.contribution.weaving.jdt.cfprovider.ClassFileProviderAspect scans all my jars even though no Scala projects
I am using SpringSource Tool Suite 2.7.2 (that includes SpringIDE) with org.scala-ide.sdt.feature (2.0.0.beta11-2_09-201110031011-3a97f5e) "Scala Plugin".
I have had lots of performance and stability problems with STS/SpringIDE, in part because my projects have very large sets of class dependencies and external jars are often accessed over a slow remote file system. I know for sure that there are severe performance issues in SpringIDE that are exacerbated by my setup, and I suspect we are seeing something similar now with ScalaIDE as well.
The thread dumps clearly show SpringIDE calling on JDT, but then ScalaIDE gets invoked even though my workspace doesn't contain any Scala projects. Since it is not SpringIDE but JDT that calls ScalaIDE, I am leaning towards believing that SpringIDE is off the hook on this particular occasion. I also saw a similar ticket, but I could not comment on it to add this information.
With a file access monitor, I can see lots of jars being accessed.
With task manager, I see a consistent CPU utilization of 50-75%, which on my quad-core PC is consistent with at least two threads completely runnable.
The two thread dumps are taken 8 minutes apart, and the stall (Eclipse window title bar white) lasted for 20 minutes or so on my Xeon workstation.
This issue is so severe I will have to disable ScalaIDE altogether to get on with my work. I urge you to prioritize it.
I have had lots of performance and stability problems with STS/SpringIDE, in part because my projects have very large sets of class dependencies and external jars are often accessed over a slow remote file system. I know for sure that there are severe performance issues in SpringIDE that are exacerbated by my setup, and I suspect we are seeing something similar now with ScalaIDE as well.
The thread dumps clearly show SpringIDE calling on JDT, but then ScalaIDE gets invoked even though my workspace doesn't contain any Scala projects. Since it is not SpringIDE but JDT that calls ScalaIDE, I am leaning towards believing that SpringIDE is off the hook on this particular occasion. I also saw a similar ticket, but I could not comment on it to add this information.
With a file access monitor, I can see lots of jars being accessed.
With task manager, I see a consistent CPU utilization of 50-75%, which on my quad-core PC is consistent with at least two threads completely runnable.
The two thread dumps are taken 8 minutes apart, and the stall (Eclipse window title bar white) lasted for 20 minutes or so on my Xeon workstation.
This issue is so severe I will have to disable ScalaIDE altogether to get on with my work. I urge you to prioritize it.
Leave a comment
on 2011-10-04 20:21 *
By Iulian Dragos
You are right. Whenever a binary type is referenced (coming from a classfile), the Scala plugin wants to take a peek at the bytes, in order to know if the file comes from the Scala compiler or not. Unfortunately, there is no reliable way to tell if a classfile is generated by the Scala compiler, without looking at the bytes. We could probably add an heuristic, and back off early as soon as one classfile in a jar has been proven to be non-Scala.
Note that even if you don't have any Scala projects in your workspace, you may have Scala jars as dependencies.
Note that even if you don't have any Scala projects in your workspace, you may have Scala jars as dependencies.
on 2011-10-06 11:48 *
By middlewareman
Description changed from I am using SpringSource Too... to I am using SpringSource Too...
(In revision:e35df9d23870f3a93686d812aafc2931ab44e04c) Don't read classfile bytes if the classfile is not part of a Scala project. This may cause large delays when the class files are on a network mounted file system.
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: issue/plugin-reading-jars-unnecessarily-1000742
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: issue/plugin-reading-jars-unnecessarily-1000742
on 2011-11-10 17:07 *
By Iulian Dragos
(In revision:e35df9d23870f3a93686d812aafc2931ab44e04c) Don't read classfile bytes if the classfile is not part of a Scala project. This may cause large delays when the class files are on a network mounted file system.
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: master
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: master
on 2011-11-10 17:09 *
By Iulian Dragos
(In revision:726dd67b1e9cc6e4a7d3808eb14360c041fc297a) Don't read classfile bytes if the classfile is not part of a Scala project. This may cause large delays when the class files are on a network mounted file system.
Fixed #1000742, Fixed #1000233, Fixed #1000643.
(cherry picked from commit e35df9d23870f3a93686d812aafc2931ab44e04c)
Branch: release/scala-ide-2.0.x
Fixed #1000742, Fixed #1000233, Fixed #1000643.
(cherry picked from commit e35df9d23870f3a93686d812aafc2931ab44e04c)
Branch: release/scala-ide-2.0.x
on 2011-11-13 10:44 *
By Iulian Dragos
(In revision:e35df9d23870f3a93686d812aafc2931ab44e04c) Don't read classfile bytes if the classfile is not part of a Scala project. This may cause large delays when the class files are on a network mounted file system.
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: platform/indigo-3.7
Fixed #1000742, Fixed #1000233, Fixed #1000643.
Branch: platform/indigo-3.7
on 2011-11-21 09:01 *
By Iulian Dragos
(In revision:fb5cd1d83edd9c5d619ccf00c968ae45b2658efd) Don't read classfile bytes if the classfile is not part of a Scala project. This may cause large delays when the class files are on a network mounted file system.
Fixed #1000742, Fixed #1000233, Fixed #1000643.
(cherry picked from commit e35df9d23870f3a93686d812aafc2931ab44e04c)
(cherry picked from commit 726dd67b1e9cc6e4a7d3808eb14360c041fc297a)
Branch: release/scala-ide-2.0.0
Fixed #1000742, Fixed #1000233, Fixed #1000643.
(cherry picked from commit e35df9d23870f3a93686d812aafc2931ab44e04c)
(cherry picked from commit 726dd67b1e9cc6e4a7d3808eb14360c041fc297a)
Branch: release/scala-ide-2.0.0