Kabir Khan created JBJCA-1384:
---------------------------------
Summary: ActivationImpl doesn't seem thread safe
Key: JBJCA-1384
URL:
https://issues.jboss.org/browse/JBJCA-1384
Project: IronJacamar
Issue Type: Bug
Reporter: Kabir Khan
Priority: Critical
When looking into
https://issues.jboss.org/browse/WFLY-10986 I had to figure out what was
modifying
org.jboss.jca.common.metadata.resourceadapter.ActivationImpl.connectionDefinitions and
figure out what to synchronize on. There is a subclass
org.jboss.as.connector.subsystems.resourceadapters.ModifiableResourceAdapter which adds
the changes.
ModifiableResourceAdapter correctly synchronizes when adding data, which is good, but
really all the fields in ActivationImpl should be final to make sure they are safely
published as I don't think the fields are ever overwritten (otherwise they should be
volatile).
Also, I think it is possible to get similar ConcurrentModificationExceptions in
ActivationImpl's implementations of hashCode(), equals(), and toString() as they all
end up iterating things which could be modified by ModifiableResourceAdapter. So these all
really ought to be synchronized. If you don't want to do it in ActivationImpl itself,
you can probably do so in ModifiableResourceAdapter, e.g.:
{code}
@Override
public synchronized int hashCode()
{
return super.hashCode();
}
@Override
public synchronized boolean equals(Object obj)
{
return super.equals(obj);
}
@Override
public synchronized String toString()
{
return super.toString();
}
{code}
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)