On Sun, 10 Jun 2001, Remy Maucherat wrote:

> > Not really sure what caused this, but I just saw it printed to my window
> > that I'm running T4 in...this is from fairly recent CVS...
> >
> > java.util.ConcurrentModificationException
> >         at java.util.HashMap$HashIterator.next(HashMap.java:736)
> >         at
> java.util.AbstractCollection.toArray(AbstractCollection.java:173)
> >         at
> > org.apache.catalina.loader.StandardClassLoader.modified(StandardClass
> > Loader.java:550)
> >         at
> > org.apache.catalina.loader.StandardLoader.run(StandardLoader.java:129
> > 1)
> >         at java.lang.Thread.run(Thread.java:496)
> >
> >
> > P.s. I'm pretty convinced at this point that class reloading is still
> broken
> > in T4. I will be working on a test case when I have more time and the
> > problem becomes unbearable. :-)
> 
> There are a couple of puts in findClass that are not synced. Maybe that's
> the problem here ...

Ugh, who wrote that code :-(

The put() calls definitely need to be synchronized.  Otherwise, a new
class that is defined exactly when the modified() method is run by the
background thread will cause this kind of exception.  

> I didn't get that particular exception before, though.
> 

I didn't either, but I just checked in a patch that should avoid it.

> Remy
> 
> 

Craig


Reply via email to