Raymond, So, for 2085 for example, we have multiple different modules that, when activated, may do an addDatabinding on the defaultDBExtensionPoint.
Eventually.. later...someone comes along and uses this to do an introspectType. At that point the loadDataBindings() is done. That all seems to make sense to me... it just needs to be done in a thread-safe way in case two initial introspectType's are done at once on different threads. On Thu, Apr 10, 2008 at 10:59 AM, Simon Laws <[EMAIL PROTECTED]> wrote: > On Thu, Apr 10, 2008 at 3:29 PM, Raymond Feng <[EMAIL PROTECTED]> wrote: > > > Hi, > > > > Thanks Ramkumar for looking into these concurrent issues. > > > > Before we jump into a solution/fix, I suggest that we step back and > agree > > on whether the Tuscany core and extensions should be bootstrapped > > sequentially or concurrently. A few use cases would be helpful. Can some > of > > the JIRA reporters describe their needs to make these extension points > > thread-safe? > > > > Raymond > > -------------------------------------------------- > > From: "Ramkumar R" <[EMAIL PROTECTED]> > > Sent: Thursday, April 10, 2008 3:59 AM > > To: <[email protected]> > > Subject: A solution to avoid ConcurrentModificationException > > > > > > Hi All, > > > Looking at the history of JIRA's (2170, 2085, 2092) raised due to > > > ConcurrentModificationException, its evident that our runtime would > > > throw > > > more such exceptions in the coming days, such problem occurs if two > > > threads > > > try to add a contribution simultaneously. Also the above mentioned > > > JIRA's > > > gives us a clue that mostly these issues are noticed for the > > > ExtensionPoint > > > implementation classes. > > > > > > Current Implementation of ExtensionPoint classes use either ArrayList > OR > > > HashMap to maintain the list of processors, listeners, factories and > > > providers. Basically the Implementation of ArrayList & HashMap are not > > > synchronized, hence If multiple threads try to access an > > > ArrayList/HashMap > > > instance concurrently, and at least one of the threads modifies the > > > list/map > > > structurally, it must be synchronized externally. Hence a fix is > > > required > > > for these classes, *please have a look at JIRA-2170 comments for more > > > details on the implemented solution*. > > > > > > As a precautionary measure, I like to raise a JIRA for all the > > > ExtensionPoint classes to provide this fix for the above said issue, > > > before > > > we encounter them one by one. Before I go ahead, I like to hear from > > > people > > > about their thought on this regard. Thanks. > > > > > > -- > > > Thanks & Regards, > > > Ramkumar Ramalingam > > > > > > > > --------------------------------------------------------------------- > > To unsubscribe, e-mail: [EMAIL PROTECTED] > > For additional commands, e-mail: [EMAIL PROTECTED] > > > > > I don't think people are consciously bootstrapping Tuscany concurrently > but > doing things concurrently like adding contributions. > > Simon >
