[ 
https://issues.apache.org/jira/browse/DIRAPI-236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14513102#comment-14513102
 ] 

Emmanuel Lecharny commented on DIRAPI-236:
------------------------------------------

Here is the stack trace when the client hangs :

{code}
2015-04-26 17:44:30
Full thread dump Java HotSpot(TM) 64-Bit Server VM (25.5-b02 mixed mode):

"YJPAgent-OOMESnapshotDetector" #29 daemon prio=10 os_prio=31 
tid=0x00007fdd2b0b4800 nid=0x6a0b runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"YJPAgent-CPUSampler" #28 daemon prio=10 os_prio=31 tid=0x00007fdd2ba18800 
nid=0x7207 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"YJPAgent-RequestListener" #27 daemon prio=1 os_prio=31 tid=0x00007fdd2b0b4000 
nid=0x7007 runnable [0x00000001295e0000]
   java.lang.Thread.State: RUNNABLE
        at java.net.PlainSocketImpl.socketAccept(Native Method)
        at 
java.net.AbstractPlainSocketImpl.accept(AbstractPlainSocketImpl.java:404)
        at java.net.ServerSocket.implAccept(ServerSocket.java:545)
        at java.net.ServerSocket.accept(ServerSocket.java:513)
        at com.yourkit.runtime.Core$4.run(Core.java:717)
        at java.lang.Thread.null (Redefined)

"YJPAgent-Telemetry" #26 daemon prio=5 os_prio=31 tid=0x00007fdd2ca71800 
nid=0x6e07 waiting on condition [0x00000001294dd000]
   java.lang.Thread.State: TIMED_WAITING (sleeping)
        at java.lang.Thread.sleep(Native Method)
        at com.yourkit.util.Util.sleep(Util.java:60)
        at com.yourkit.runtime.TelemetryThread.run(TelemetryThread.java:573)

"Attach Listener" #25 daemon prio=9 os_prio=31 tid=0x00007fdd2b0b3000 
nid=0x5b07 runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"NioSocketAcceptor-2" #19 prio=5 os_prio=31 tid=0x00007fdd2c8ef800 nid=0x440b 
runnable [0x0000000127889000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:202)
        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
        - locked <0x00000006c14d2518> (a sun.nio.ch.Util$2)
        - locked <0x00000006c14d2508> (a java.util.Collections$UnmodifiableSet)
        - locked <0x00000006c14d23d8> (a sun.nio.ch.KQueueSelectorImpl)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
        at 
org.apache.mina.transport.socket.nio.NioSocketAcceptor.select(NioSocketAcceptor.java:281)
        at 
org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:452)
        at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"NioSocketAcceptor-1" #18 prio=5 os_prio=31 tid=0x00007fdd2b8da000 nid=0x3b07 
runnable [0x0000000127319000]
   java.lang.Thread.State: RUNNABLE
        at sun.nio.ch.KQueueArrayWrapper.kevent0(Native Method)
        at sun.nio.ch.KQueueArrayWrapper.poll(KQueueArrayWrapper.java:202)
        at sun.nio.ch.KQueueSelectorImpl.doSelect(KQueueSelectorImpl.java:103)
        at sun.nio.ch.SelectorImpl.lockAndDoSelect(SelectorImpl.java:86)
        - locked <0x00000006c14e9e50> (a sun.nio.ch.Util$2)
        - locked <0x00000006c14e9e40> (a java.util.Collections$UnmodifiableSet)
        - locked <0x00000006c14e9d20> (a sun.nio.ch.KQueueSelectorImpl)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:97)
        at sun.nio.ch.SelectorImpl.select(SelectorImpl.java:101)
        at 
org.apache.mina.transport.socket.nio.NioSocketAcceptor.select(NioSocketAcceptor.java:281)
        at 
org.apache.mina.core.polling.AbstractPollingIoAcceptor$Acceptor.run(AbstractPollingIoAcceptor.java:452)
        at 
org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:64)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"kdc%0052eplay%0043ache.data" #16 prio=5 os_prio=31 tid=0x00007fdd2ba9f800 
nid=0x6703 waiting on condition [0x0000000126e2c000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c026bd58> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"group%0043ache.data" #15 prio=5 os_prio=31 tid=0x00007fdd2ba9f000 nid=0x6503 
waiting on condition [0x0000000126d29000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c026bfb8> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"ou=system.data" #14 prio=5 os_prio=31 tid=0x00007fdd2aa52800 nid=0x6303 
waiting on condition [0x0000000126c26000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c026c1f8> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"Statistics Thread-2810fae9-ea58-4421-ba79-a6d5f38dfe3e-1" #13 daemon prio=5 
os_prio=31 tid=0x00007fdd2aa0b000 nid=0x6103 waiting on condition 
[0x0000000126b23000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c01edbb0> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"change%0050wd%0052eplay%0043ache.data" #12 prio=5 os_prio=31 
tid=0x00007fdd2bac0000 nid=0x5f03 waiting on condition [0x0000000126a20000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c01fd6c0> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:1093)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$DelayedWorkQueue.take(ScheduledThreadPoolExecutor.java:809)
        at 
java.util.concurrent.ThreadPoolExecutor.getTask(ThreadPoolExecutor.java:1067)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1127)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.null (Redefined)

"2810fae9-ea58-4421-ba79-a6d5f38dfe3e" #11 daemon prio=5 os_prio=31 
tid=0x00007fdd2aa10000 nid=0x5d03 in Object.wait() [0x0000000126133000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        - waiting on <0x00000006c0201690> (a java.util.TaskQueue)
        at java.lang.Object.wait(Object.java:502)
        at java.util.TimerThread.mainLoop(Timer.java:526)
        - locked <0x00000006c0201690> (a java.util.TaskQueue)
        at java.util.TimerThread.run(Timer.java:505)

"Service Thread" #9 daemon prio=9 os_prio=31 tid=0x00007fdd2b002000 nid=0x5703 
runnable [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C1 CompilerThread3" #8 daemon prio=9 os_prio=31 tid=0x00007fdd2a869000 
nid=0x5503 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread2" #7 daemon prio=9 os_prio=31 tid=0x00007fdd2a848000 
nid=0x5303 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread1" #6 daemon prio=9 os_prio=31 tid=0x00007fdd2b823000 
nid=0x5103 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"C2 CompilerThread0" #5 daemon prio=9 os_prio=31 tid=0x00007fdd2a018000 
nid=0x4f03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Signal Dispatcher" #4 daemon prio=9 os_prio=31 tid=0x00007fdd2a017800 
nid=0x4d03 waiting on condition [0x0000000000000000]
   java.lang.Thread.State: RUNNABLE

"Finalizer" #3 daemon prio=8 os_prio=31 tid=0x00007fdd2a846800 nid=0x3903 in 
Object.wait() [0x0000000125240000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:142)
        - locked <0x00000006c002fcf0> (a java.lang.ref.ReferenceQueue$Lock)
        at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:158)
        at java.lang.ref.Finalizer$FinalizerThread.null (Redefined)

"Reference Handler" #2 daemon prio=10 os_prio=31 tid=0x00007fdd2a845800 
nid=0x3703 in Object.wait() [0x000000012513d000]
   java.lang.Thread.State: WAITING (on object monitor)
        at java.lang.Object.wait(Native Method)
        at java.lang.Object.wait(Object.java:502)
        at java.lang.ref.Reference$ReferenceHandler.null (Redefined)
        - locked <0x00000006c0030a70> (a java.lang.ref.Reference$Lock)

"main" #1 prio=5 os_prio=31 tid=0x00007fdd2c800800 nid=0x1903 waiting on 
condition [0x000000010773e000]
   java.lang.Thread.State: TIMED_WAITING (parking)
        at sun.misc.Unsafe.park(Native Method)
        - parking to wait for  <0x00000006c1644d70> (a 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject)
        at 
java.util.concurrent.locks.LockSupport.parkNanos(LockSupport.java:215)
        at 
java.util.concurrent.locks.AbstractQueuedSynchronizer$ConditionObject.awaitNanos(AbstractQueuedSynchronizer.java:2078)
        at 
java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:467)
        at 
org.apache.directory.ldap.client.api.future.ResponseFuture.get(ResponseFuture.java:130)
        at 
org.apache.directory.ldap.client.api.future.SearchFuture.get(SearchFuture.java:69)
        at 
org.apache.directory.ldap.client.api.SearchCursorImpl.next(SearchCursorImpl.java:119)
        at 
org.apache.directory.ldap.client.api.EntryCursorImpl.next(EntryCursorImpl.java:90)
        at 
org.apache.directory.shared.client.api.operations.bind.SimpleBindRequestTest.null
 (Redefined)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at 
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at 
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:483)
        at 
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:50)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:47)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at 
org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
        at 
org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:325)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:78)
        at 
org.apache.directory.server.core.integ.FrameworkRunner.runChild(FrameworkRunner.java:379)
        at 
org.apache.directory.server.core.integ.FrameworkRunner.runChild(FrameworkRunner.java:56)
        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
        at 
org.apache.directory.server.core.integ.FrameworkRunner.run(FrameworkRunner.java:154)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.null 
(Redefined)
        at org.eclipse.jdt.internal.junit.runner.TestExecution.null (Redefined)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.null 
(Redefined)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.null 
(Redefined)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.null 
(Redefined)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.null 
(Redefined)

"VM Thread" os_prio=31 tid=0x00007fdd2a009800 nid=0x3503 runnable 

"GC task thread#0 (ParallelGC)" os_prio=31 tid=0x00007fdd2a81a800 nid=0x2503 
runnable 

"GC task thread#1 (ParallelGC)" os_prio=31 tid=0x00007fdd2a81b000 nid=0x2703 
runnable 

"GC task thread#2 (ParallelGC)" os_prio=31 tid=0x00007fdd2b807000 nid=0x2903 
runnable 

"GC task thread#3 (ParallelGC)" os_prio=31 tid=0x00007fdd2b807800 nid=0x2b03 
runnable 

"GC task thread#4 (ParallelGC)" os_prio=31 tid=0x00007fdd2b808000 nid=0x2d03 
runnable 

"GC task thread#5 (ParallelGC)" os_prio=31 tid=0x00007fdd2b809000 nid=0x2f03 
runnable 

"GC task thread#6 (ParallelGC)" os_prio=31 tid=0x00007fdd2b809800 nid=0x3103 
runnable 

"GC task thread#7 (ParallelGC)" os_prio=31 tid=0x00007fdd2b80a000 nid=0x3303 
runnable 

"VM Periodic Task Thread" os_prio=31 tid=0x00007fdd2a063800 nid=0x5903 waiting 
on condition 

JNI global references: 573850

Heap
 PSYoungGen      total 72704K, used 17885K [0x000000076ab00000, 
0x0000000770600000, 0x00000007c0000000)
  eden space 67072K, 26% used 
[0x000000076ab00000,0x000000076bc77510,0x000000076ec80000)
  from space 5632K, 0% used 
[0x000000076ec80000,0x000000076ec80000,0x000000076f200000)
  to   space 5632K, 0% used 
[0x0000000770080000,0x0000000770080000,0x0000000770600000)
 ParOldGen       total 30720K, used 25061K [0x00000006c0000000, 
0x00000006c1e00000, 0x000000076ab00000)
  object space 30720K, 81% used 
[0x00000006c0000000,0x00000006c18795e0,0x00000006c1e00000)
 Metaspace       used 22696K, capacity 22888K, committed 23344K, reserved 
1069056K
  class space    used 2784K, capacity 2817K, committed 2944K, reserved 1048576K
{code}

It seems we are waiting on the {{SearchFuture}} forever. There is something 
wrong in the Search/Unbind/Cursor.next() sequence handling...

> Unbind during search hangs
> --------------------------
>
>                 Key: DIRAPI-236
>                 URL: https://issues.apache.org/jira/browse/DIRAPI-236
>             Project: Directory Client API
>          Issue Type: Bug
>    Affects Versions: 1.0.0-M29
>            Reporter: Stefan Seelmann
>             Fix For: 1.0.0-M30
>
>
> 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:
> {noformat}
> "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)
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to