Also had to remove ManyToOne mappings in UserSessionEntity and
ClientUserSessionAssociationEntity and use String ids instead. I guess
those table locks on usermodel get upgraded when you update
On 6/2/2014 8:51 PM, Bill Burke wrote:
Ok, I found the problem...
RealmAdapter.getAuthenticationProviders() was sorting the collection
returned by the realm entity. If you do this, then Hibernate thinks
you've modified the collection and it performs an update :)
Can you think of any other places where returned collections are sorted?
On 6/2/2014 8:33 PM, Bill Burke wrote:
> I"m getting concurrent deadlocks when doing a login with multiple
> threads. Its just bizarre and I don't get it. Check out this error
> message. Why the hell would "delete from AuthProviders" be called
> ??????!?!?!?!?!!! I don't see a setAuthProviders happening anywhere.
> Caused by: org.h2.jdbc.JdbcSQLException: Deadlock detected. The current
> transaction was rolled back. Details: "
> Session #8 (user: SA) is waiting to lock PUBLIC.USERSESSIONENTITY while
> locking PUBLIC.AUTHENTICATIONLINKENTITY (exclusive), PUBLIC.USERENTITY
> (exclusive), PUBLIC.AUTHPROVIDERS (exclusive).
> Session #5 (user: SA) is waiting to lock PUBLIC.AUTHPROVIDERS while
> locking PUBLIC.USERSESSIONENTITY (exclusive)."; SQL statement:
> delete from AuthProviders where RealmEntity_id=? [40001-161]
> at org.h2.message.DbException.getJdbcSQLException(DbException.java:329)
> at org.h2.message.DbException.get(DbException.java:169)
> at org.h2.message.DbException.get(DbException.java:146)
JBoss, a division of Red Hat