For some reason our login was blocking, after some investigation we found out that the Caches is blocking when getting the value. The thread dump looked like this:
org.opencastproject.util.Caches$2.get(Caches.java:51)
org.opencastproject.kernel.userdirectory.UserAndRoleDirectoryServiceImpl.loadUser(UserAndRoleDirectoryServiceImpl.java:177)
org.opencastproject.kernel.userdirectory.UserAndRoleDirectoryServiceImpl.loadUserByUsername(UserAndRoleDirectoryServiceImpl.java:213)
sun.reflect.GeneratedMethodAccessor220.invoke(Unknown Source)
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.lang.reflect.Method.invoke(Method.java:606)
Since there is already Google guava used in the project, we decided to replace our own written cache by the one from Google guava, which is most likely much robust.