Details
-
Bug
-
Status: Open
-
Major
-
Resolution: Unresolved
-
2.0.0-M15
-
None
-
None
Description
I have a custom Search Interceptor:
private class SearchInterceptor extends BaseInterceptor
When a use is said to be allowed to login, I basically inject the user into my cache:
// We do not actually inject it, we give it to the JIT write-through // cache which will inject it only once, then delete after a timeout. //private final JitLdapWritethroughCache _jitLdapCache _jitLdapCache.insert(entryUser);
Which basically does:
// private DirectoryService service;
service.getAdminSession().add(e);
The line "service.getAdminSession().add(e);" basically locks up my thread (won't respond to my search request) and won't allow any other request to go through.
If I look at the stack, it blocks at the following line (line 390 - DefaultOperationManager)
// Call the Add method
Interceptor head = directoryService.getInterceptor( addContext.getNextInterceptor() );
lockWrite();
and
public void lockWrite()
{
rwLock.writeLock().lock();
}
This code all ran on the "Thread [pool-4-thread-1]" thread.
Before running "service.getAdminSession().add(e)" I ran:
Trace.info(service.getOperationManager().getRWLock().toString());
Which outputted:
5398 [main] INFO com.rbccm.authhelper.ldap.ServerRunner - [testinstanceid] java.util.concurrent.locks.ReentrantReadWriteLock@7177600e[Write locks = 0, Read locks = 0]
Thank you for your help.