Community
Participate
Working Groups
I got an error during startup, where my workspace had a schema file loaded which relied on catalog entries. This must have crossed with schema contributions from one of the many plugins present (full WTP + OEPE + Spring STS) The Catalog needs to protect itself from concurrent access. java.util.ConcurrentModificationException at java.util.AbstractList$Itr.checkForComodification(Unknown Source) at java.util.AbstractList$Itr.next(Unknown Source) at org.eclipse.wst.xml.core.internal.catalog.Catalog$InternalResolver.<init>(Catalog.java:142) at org.eclipse.wst.xml.core.internal.catalog.Catalog.getOrCreateInternalResolver(Catalog.java:636) at org.eclipse.wst.xml.core.internal.catalog.Catalog.resolveSystem(Catalog.java:745) at org.eclipse.wst.xml.core.internal.catalog.Catalog.resolveSubordinateCatalogs(Catalog.java:725) at org.eclipse.wst.xml.core.internal.catalog.Catalog$InternalResolver.resolveSystem(Catalog.java:293) at org.eclipse.wst.xml.core.internal.catalog.Catalog.resolveSystem(Catalog.java:745) at org.eclipse.wst.xml.core.internal.catalog.XMLCatalogURIResolverExtension.resolve(XMLCatalogURIResolverExtension.java:46) at org.eclipse.wst.common.uriresolver.internal.ExtensibleURIResolver.resolve(ExtensibleURIResolver.java:85) at org.eclipse.wst.xml.core.internal.modelquery.XMLCatalogIdResolver.resolve(XMLCatalogIdResolver.java:92) at org.eclipse.wst.xml.core.internal.modelquery.XMLModelQueryAssociationProvider.resolveGrammarURI(XMLModelQueryAssociationProvider.java:58) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.XMLAssociationProvider.resolveGrammarURI(XMLAssociationProvider.java:160) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl.lookupOrCreateResolvedURI(CMDocumentManagerImpl.java:122) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentManagerImpl.addCMDocumentReference(CMDocumentManagerImpl.java:204) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentLoader.handleGrammar(CMDocumentLoader.java:105) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentLoader$CMDocumentLoadingNamespaceTable.addElement(CMDocumentLoader.java:180) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.CMDocumentLoader.loadCMDocuments(CMDocumentLoader.java:74) at org.eclipse.wst.xml.core.internal.contentmodel.modelqueryimpl.InferredGrammarBuildingCMDocumentLoader.loadCMDocuments(InferredGrammarBuildingCMDocumentLoader.java:56) at org.eclipse.wst.xml.ui.internal.DOMObserver.invokeCMDocumentLoad(DOMObserver.java:203) at org.eclipse.wst.xml.ui.internal.DOMObserver$TimerJob.run(DOMObserver.java:142) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54) eclipse.buildId=I20100608-0911 java.version=1.6.0_20 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=da_DK Command-line arguments: -os win32 -ws win32 -arch x86
Created attachment 177508 [details] patch I synchronized on whole constructor and not just Iterator to avoid creation of more than one InternalResolvers.Constructor is taking negligible time(tested).Other lists seem to be safe , as they are modified only in constructor.listenerList is also not thread safe.
Passing to Gabriel for review since this pertains to Catalog.
I encountered this problem too, with the same stack trace.
Patch looks OK. Modified it a bit to account for the clearing of the list and also what the lock is.