java.util.ConcurrentModificationException in wildfly-9.0.0.Final
mayerw01 Jul 9, 2015 8:22 AMI'd downloaded an example application (https://www.holisticon.de/wp-content/uploads/2013/04/ticket2rock-2.0-dist.zip) which was developed for jboss-6.1.0.Final. I made some changes to get this run under Wildfly.
Most things seem to run properly now. But I've one issue. There are 2 entities (Band and Musiker) which extend the abstract entity Interpret. This is the current Band class:
@Entity
@DiscriminatorValue("B")
public class Band extends Interpret implements Serializable {
private static final long serialVersionUID = -6677136118903105659L;
private int gruendungsjahr;
private Set<Musiker> musiker;
public int getGruendungsjahr() {
return gruendungsjahr;
}
public void setGruendungsjahr(int gruendungsjahr) {
this.gruendungsjahr = gruendungsjahr;
}
// @ManyToMany(fetch = FetchType.EAGER, mappedBy = "bands")
@Access(AccessType.FIELD)
@ManyToMany (fetch = FetchType.EAGER, cascade = CascadeType.REFRESH)
@JoinTable(name = "Interpret_Interpret",
joinColumns = @JoinColumn(name = "BANDS_ID",
referencedColumnName = "ID"),
inverseJoinColumns = @JoinColumn (name = "MUSIKER_ID",
referencedColumnName = "ID"))
public Set<Musiker> getMusiker() {
return musiker;
}
public void setMusiker(Set<Musiker> musiker) {
this.musiker = musiker;
}
}
When I try to insert a new Band entity (via em.persist(band);) an exception is thrown:
2015-07-09 13:10:28,798 WARN [com.arjuna.ats.arjuna] (default task-6) ARJUNA012125: TwoPhaseCoordinator.beforeCompletion - failed for SynchronizationImple< 0:ffffc0a80265:187491ef:559e565c:76, org.jboss.as.txn.service.internal.tsr.JCAOrderedLastSynchronizationList@332433b9 >: javax.persistence.PersistenceException: error during managed flush
at org.hibernate.jpa.spi.AbstractEntityManagerImpl$CallbackExceptionMapperImpl.mapManagedFlushFailure(AbstractEntityManagerImpl.java:1887)
at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:119)
at org.hibernate.engine.transaction.synchronization.internal.RegisteredSynchronization.beforeCompletion(RegisteredSynchronization.java:50)
at org.jboss.as.txn.service.internal.tsr.JCAOrderedLastSynchronizationList.beforeCompletion(JCAOrderedLastSynchronizationList.java:116)
at com.arjuna.ats.internal.jta.resources.arjunacore.SynchronizationImple.beforeCompletion(SynchronizationImple.java:76)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.beforeCompletion(TwoPhaseCoordinator.java:371)
at com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator.end(TwoPhaseCoordinator.java:91)
at com.arjuna.ats.arjuna.AtomicAction.commit(AtomicAction.java:162)
at com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionImple.commitAndDisassociate(TransactionImple.java:1200)
....
Caused by: java.util.ConcurrentModificationException
at java.util.ArrayList$Itr.checkForComodification(ArrayList.java:859)
at java.util.ArrayList$Itr.next(ArrayList.java:831)
at java.util.Collections$UnmodifiableCollection$1.next(Collections.java:1067)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:463)
at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:351)
at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:350)
at org.hibernate.event.internal.DefaultFlushEventListener.onFlush(DefaultFlushEventListener.java:56)
at org.hibernate.internal.SessionImpl.flush(SessionImpl.java:1258)
at org.hibernate.internal.SessionImpl.managedFlush(SessionImpl.java:425)
at org.hibernate.engine.transaction.synchronization.internal.SynchronizationCallbackCoordinatorNonTrackingImpl.beforeCompletion(SynchronizationCallbackCoordinatorNonTrackingImpl.java:114)
... 102 more
Surprisingly the same version runs perfectly in jboss-eap-6.4. It now looks to me that this is related to the hibernate version.
Do you have any idea what could be the reason here?