Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.0.0-M29
-
None
Description
Calling LdapNetworkConnection.unbind() while iterating over an EntryCursor lets the iterator hang, either infinite (if timelimit is 0) or till the timeout occurs.
Here is the part of a thread dump:
"main" prio=10 tid=0x00007f3e5400b800 nid=0x117f waiting on condition [0x00007f3e5c5ab000] java.lang.Thread.State: TIMED_WAITING (parking) at sun.misc.Unsafe.park(Native Method) - parking to wait for <0x00000000e310c000> (a java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject) at java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:226) at java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2082) at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467) at org.apache.directory.ldap.client.api.future.ResponseFuture.get(ResponseFuture.java:133) at org.apache.directory.ldap.client.api.future.SearchFuture.get(SearchFuture.java:69) at org.apache.directory.ldap.client.api.SearchCursorImpl.next(SearchCursorImpl.java:121) at org.apache.directory.ldap.client.api.EntryCursorImpl.next(EntryCursorImpl.java:90) at org.apache.directory.shared.client.api.operations.bind.SimpleBindRequestTest.testUnbindDuringSearch(SimpleBindRequestTest.java:635)