[ https://issues.apache.org/jira/browse/TUSCANY-1130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Hasan Muhammad updated TUSCANY-1130: ------------------------------------ Attachment: 1130.patch HelperContextMultiThreadedTestCase.java Frank, I agree that synching the HashMap would create performance problems. The problem seems to be only because multiple threads are accessing createHelperContext as you saw, since while defining the EMF types in the registry for the ExtendedMetaData, it gets delegated to parent registry which is global registry. But once these EMF types are defined (put for HashMap), the rest is all (get) and hence there is no problem after that. One fix would be to simply synch the SDOUtil.createHelperContext(). I made that fix in this patch. It works with the multiThreded Test case i have submitted. The test case depends on GroboUtils jar, which can be obtained from http://groboutils.sourceforge.net/, if you are interested in including into tuscany build. This is just a set of extension classes to JUnit which includes an extension class to build multi threaded testcases easily. Hasan > Concurrent access to SDOUtil.createHelperContext() results in exception > ----------------------------------------------------------------------- > > Key: TUSCANY-1130 > URL: https://issues.apache.org/jira/browse/TUSCANY-1130 > Project: Tuscany > Issue Type: Bug > Components: Java SDO Implementation > Affects Versions: Java-M2 > Environment: All > Reporter: Hasan Muhammad > Fix For: Java-M2 > > Attachments: 1130.patch, 1130.patch, 1130_final.patch, > 1130_new.patch, HelperContextMultiThreadedTestCase.java > > > In tuscany runtime, when multiple apps are started simultaneously, we get an > exception as below: This is a problem with acessing > SDOUtil.createHelperContext(0 concurrently. > Exception = java.util.ConcurrentModificationException > Source = com.ibm.ws.soa.sca.admin.config.loader.SDOLoader.<INIT> > probeid = 80 > Stack Dump = java.util.ConcurrentModificationException: concurrent access to > HashMap attempted by Thread[server.startup : 2,5,main] > at java.util.HashMap.onExit(HashMap.java:217) > at java.util.HashMap.transfer(HashMap.java:514) > at java.util.HashMap.resize(HashMap.java:500) > at java.util.HashMap.addEntry(HashMap.java:800) > at java.util.HashMap.put(HashMap.java:441) > at > com.ibm.sdo.internal.ecore.util.BasicExtendedMetaData$EPackageExtendedMetaDataImpl.getType(BasicExtendedMetaData.java:2064) > at > com.ibm.sdo.internal.ecore.util.BasicExtendedMetaData.getType(BasicExtendedMetaData.java:115) > at > com.ibm.sdo.internal.xsd.ecore.XSDEcoreBuilder.populateTypeToTypeObjectMap(XSDEcoreBuilder.java:108) > at > org.apache.tuscany.sdo.helper.SDOXSDEcoreBuilder.<init>(SDOXSDEcoreBuilder.java:61) > at > org.apache.tuscany.sdo.helper.XSDHelperImpl.<init>(XSDHelperImpl.java:79) > at > org.apache.tuscany.sdo.helper.XSDHelperImpl.<init>(XSDHelperImpl.java:94) > at > org.apache.tuscany.sdo.helper.HelperContextImpl.<init>(HelperContextImpl.java:48) > at > org.apache.tuscany.sdo.helper.HelperContextImpl.<init>(HelperContextImpl.java:52) > at > org.apache.tuscany.sdo.util.SDOUtil.createHelperContext(SDOUtil.java:299) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]