Has anyone seen stuck threads that look like this in a thread dump?
"QuartzScheduler_Worker-1" prio=10 tid=0x00007ff588a88000 nid=0xb2fb in
Object.wait() [0x00007ff5c46a9000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007207e5148> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at
com.novell.ldap.Connection.acquireWriteSemaphore(Connection.java:286)
- locked <0x00000007207e5148> (a java.lang.Object)
at
com.novell.ldap.Connection.isConnectionAlive(Connection.java:862)
at
com.novell.ldap.LDAPConnection.isConnectionAlive(LDAPConnection.java:609)
at
edu.amc.sakai.user.NativeLdapConnectionLivenessValidator.isConnectionAlive(NativeLdapConnectionLivenessValidator.java:39)
at
edu.amc.sakai.user.PooledLDAPConnectionFactory.validateObject(PooledLDAPConnectionFactory.java:200)
More examples at the bottom of this email.
They don't show up until after at least one exception like this is
written to catalina.out
Exception in thread "Thread-6099" java.lang.NullPointerException
at com.novell.ldap.Message.putReply(Message.java:340)
at
com.novell.ldap.Connection$ReaderThread.run(Connection.java:1303)
at java.lang.Thread.run(Thread.java:745)
It seems like the stuck threads can originate from pretty much anything
that will attempt to look up a user - we've seen login, roster, the
announcements tool, etc. The threads remain stuck until the application
is restarted. This is particularly troublesome when it sticks our
nightly sis integration quartz job.
I found this that looks pretty similar:
https://forums.novell.com/showthread.php/491011-acquireWriteSemaphore-hang-Null-Pointer-exception-in-Reader-thread
. Just wondering if anyone has run into this with Sakai in particular.
Thanks,
Will
"ajp-bio-8009-exec-2158" daemon prio=10 tid=0x00007f4f6c100000
nid=0x6b56 in Object.wait() [0x00007f4f1415d000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000006a407a040> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at
com.novell.ldap.Connection.acquireWriteSemaphore(Connection.java:286)
- locked <0x00000006a407a040> (a java.lang.Object)
at com.novell.ldap.Connection.writeMessage(Connection.java:765)
at com.novell.ldap.Connection.writeMessage(Connection.java:730)
at com.novell.ldap.Message.sendMessage(Message.java:101)
at com.novell.ldap.MessageAgent.sendMessage(MessageAgent.java:286)
at com.novell.ldap.LDAPConnection.search(LDAPConnection.java:3531)
at com.novell.ldap.LDAPConnection.search(LDAPConnection.java:3412)
at
com.rsmart.ldap.JLDAPDirectoryProvider.getResultsFromDirectory(JLDAPDirectoryProvider.java:655)
at
com.rsmart.ldap.JLDAPDirectoryProvider.getUsers(JLDAPDirectoryProvider.java:738)
at
org.sakaiproject.user.impl.DbUserService$DbStorage.getUsersByIds(DbUserService.java:702)
at
org.sakaiproject.user.impl.BaseUserDirectoryService.getUsers(BaseUserDirectoryService.java:867)
at
org.sakaiproject.profile2.logic.SakaiProxyImpl.getUsers(SakaiProxyImpl.java:292)
at
org.sakaiproject.profile2.logic.ProfileConnectionsLogicImpl.getConnectedUsers(ProfileConnectionsLogicImpl.java:490)
at
org.sakaiproject.profile2.logic.ProfileConnectionsLogicImpl.getConnectionsForUser(ProfileConnectionsLogicImpl.java:65)
at
org.sakaiproject.profile2.service.ProfileServiceImpl.getConnectionsForUser(ProfileServiceImpl.java:39)
"ajp-bio-8009-exec-2872" daemon prio=10 tid=0x00007f4f6c183000
nid=0x3069 in Object.wait() [0x00007f4f13c58000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000006c0f802b8> (a java.lang.Object)
at java.lang.Object.wait(Object.java:503)
at
com.novell.ldap.Connection.acquireWriteSemaphore(Connection.java:286)
- locked <0x00000006c0f802b8> (a java.lang.Object)
at
com.novell.ldap.Connection.isConnectionAlive(Connection.java:862)
at
com.novell.ldap.LDAPConnection.isConnectionAlive(LDAPConnection.java:609)
at
edu.amc.sakai.user.NativeLdapConnectionLivenessValidator.isConnectionAlive(NativeLdapConnectionLivenessValidator.java:39)
at
edu.amc.sakai.user.PooledLDAPConnectionFactory.validateObject(PooledLDAPConnectionFactory.java:200)
at
org.apache.commons.pool.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:1198)
at
edu.amc.sakai.user.PoolingLdapConnectionManager.getBoundConnection(PoolingLdapConnectionManager.java:102)
at
com.rsmart.ldap.JLDAPDirectoryProvider.getConnection(JLDAPDirectoryProvider.java:333)
at
com.rsmart.ldap.JLDAPDirectoryProvider.authenticateUserHelper(JLDAPDirectoryProvider.java:235)
at
com.rsmart.ldap.JLDAPDirectoryProvider.authenticateUser(JLDAPDirectoryProvider.java:267)
at
org.sakaiproject.user.impl.BaseUserDirectoryService.getProviderAuthenticatedUser(BaseUserDirectoryService.java:1680)
at
org.sakaiproject.user.impl.BaseUserDirectoryService.authenticate(BaseUserDirectoryService.java:1614)
at
org.sakaiproject.user.impl.UserAuthnComponent.authenticate(UserAuthnComponent.java:108)
at
org.sakaiproject.login.impl.LoginServiceComponent.authenticate(LoginServiceComponent.java:90)
at
org.sakaiproject.login.tool.SkinnableLogin.doPost(SkinnableLogin.java:333)