Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 321057 - [performance] [reconciler] [query] Super slow startup time after deleting files in dropins
Summary: [performance] [reconciler] [query] Super slow startup time after deleting fil...
Status: RESOLVED FIXED
Alias: None
Product: Equinox
Classification: Eclipse Project
Component: p2 (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.7 M1   Edit
Assignee: P2 Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords: performance
Depends on: 244628 313953
Blocks:
  Show dependency tree
 
Reported: 2010-07-27 14:13 EDT by DJ Houghton CLA
Modified: 2010-07-27 14:24 EDT (History)
3 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description DJ Houghton CLA 2010-07-27 14:13:07 EDT
Cloned to track release into the HEAD stream.

+++ This bug was initially created as a clone of Bug #313953 +++

I just had a case where I was testing the following:
- start up Eclipse and shutdown
- drop test data into the dropins folder consisting of 3000 features each pointing to a single bundle. (3000 bundles total)
- start Eclipse - note everything gets installed via the reconciler
- shut down
- delete everything from dropins
- startup and shutdown
- add single feature and bundle from first group of test data to dropins folder
- startup pegged the CPU at 100% and it took over 15min
- a couple of stack dumps showed the following: 

"Start Level Event Dispatcher" daemon prio=6 tid=0x03fda800 nid=0xbf4 runnable [0x0448e000]
   java.lang.Thread.State: RUNNABLE
        at java.lang.Class.getClassLoader0(Native Method)
        at java.lang.ClassLoader.getCallerClassLoader(Unknown Source)
        at java.lang.Class.forName(Unknown Source)
        at org.eclipse.equinox.internal.p2.metadata.expression.CoercingComparator$IntegerCoercer.getCoerceClass(CoercingComparator.java:148)
        at org.eclipse.equinox.internal.p2.metadata.expression.CoercingComparator.canCoerceTo(CoercingComparator.java:382)
        at org.eclipse.equinox.internal.p2.metadata.expression.CoercingComparator.getComparator(CoercingComparator.java:334)
        at org.eclipse.equinox.internal.p2.metadata.expression.CoercingComparator.coerceAndEquals(CoercingComparator.java:313)
        at org.eclipse.equinox.internal.p2.metadata.expression.Equals.evaluate(Equals.java:27)
        at org.eclipse.equinox.internal.p2.metadata.expression.Unary.evaluate(Unary.java:42)
        at org.eclipse.equinox.internal.p2.metadata.expression.Exists.evaluate(Exists.java:29)
        at org.eclipse.equinox.internal.p2.metadata.expression.CollectionFilter.evaluate(CollectionFilter.java:58)
        at org.eclipse.equinox.internal.p2.metadata.expression.MatchExpression.evaluate(MatchExpression.java:44)
        at org.eclipse.equinox.p2.query.ExpressionMatchQuery.isMatch(ExpressionMatchQuery.java:86)
        at org.eclipse.equinox.p2.query.ExpressionMatchQuery.perform(ExpressionMatchQuery.java:73)
        at org.eclipse.equinox.p2.query.ExpressionMatchQuery.perform(ExpressionMatchQuery.java:63)
        at org.eclipse.equinox.internal.p2.metadata.index.IndexProvider.query(IndexProvider.java:12)
        at org.eclipse.equinox.internal.p2.metadata.repository.LocalMetadataRepository.query(LocalMetadataRepository.java:221)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.RepositoryListener.synchronizeMetadataRepository(RepositoryListener.java:220)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.RepositoryListener.stopPoll(RepositoryListener.java:198)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher.stopPoll(DirectoryWatcher.java:171)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher.poll(DirectoryWatcher.java:109)
        - locked <0x189a9b90> (a org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher)
        at org.eclipse.equinox.internal.p2.extensionlocation.SiteListener.synchronizeRepositories(SiteListener.java:111)
        - locked <0x274be8b8> (a java.lang.Class for org.eclipse.equinox.internal.p2.extensionlocation.SiteListener)
        at org.eclipse.equinox.internal.p2.extensionlocation.ExtensionLocationMetadataRepository.ensureInitialized(ExtensionLocationMetadataRepository
.java:66)
        - locked <0x171fb098> (a org.eclipse.equinox.internal.p2.extensionlocation.ExtensionLocationMetadataRepository)
        at org.eclipse.equinox.internal.p2.extensionlocation.ExtensionLocationMetadataRepository.getProperties(ExtensionLocationMetadataRepository.jav
a:194)
        at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.addRepository(AbstractRepositoryManager.java:125)
        - locked <0x1707c3b0> (a java.lang.Object)
        at org.eclipse.equinox.internal.p2.repository.helpers.AbstractRepositoryManager.loadRepository(AbstractRepositoryManager.java:658)
        at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:96)
        at org.eclipse.equinox.internal.p2.metadata.repository.MetadataRepositoryManager.loadRepository(MetadataRepositoryManager.java:92)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.Activator.loadMetadataRepository(Activator.java:93)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.DropinsRepositoryListener.getMetadataRepository(DropinsRepositoryListener.java:198)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.DropinsRepositoryListener.addRepository(DropinsRepositoryListener.java:93)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.DropinsRepositoryListener.added(DropinsRepositoryListener.java:68)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher.processFile(DirectoryWatcher.java:197)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher.scanDirectories(DirectoryWatcher.java:160)
        at org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher.poll(DirectoryWatcher.java:108)
        - locked <0x17048c50> (a org.eclipse.equinox.internal.provisional.p2.directorywatcher.DirectoryWatcher)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.Activator.watchDropins(Activator.java:518)
        at org.eclipse.equinox.internal.p2.reconciler.dropins.Activator.start(Activator.java:161)
Comment 1 DJ Houghton CLA 2010-07-27 14:14:28 EDT
Released to HEAD.
Comment 2 DJ Houghton CLA 2010-07-27 14:24:29 EDT
Closing.