Details

      Description

      When running the SWTBot test suite it get stuck at some point.

      Evidence:

      • Below is one thread of the thread dump.
      • The default time limit of a connection in Studio is 0 by default, which in the API is converterted to Long.MAX_VALUE ms. So the ResponseFuture.get() blocks practically forever.
      • This only happens when running the whole test suite, but then it is reproducable. When running only parts of the suite it runs through.

      First steps:

      • I'll try change the default time limit to 30 seconds.
      "Worker-3" #54 prio=5 os_prio=0 tid=0x00007ff30c01e800 nid=0x61c0 waiting on condition [0x00007ff279819000]
         java.lang.Thread.State: TIMED_WAITING (parking)
              at sun.misc.Unsafe.park(Native Method)
              - parking to wait for  <0x00000000fb861930> (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.studio.connection.core.io.api.CursorStudioNamingEnumeration.hasMore(CursorStudioNamingEnumeration.java:141)
              at org.apache.directory.studio.ldapbrowser.core.jobs.SearchRunnable.searchAndUpdateModel(SearchRunnable.java:321)
              at org.apache.directory.studio.ldapbrowser.core.jobs.InitializeRootDSERunnable.initBaseEntry(InitializeRootDSERunnable.java:380)
              at org.apache.directory.studio.ldapbrowser.core.jobs.InitializeRootDSERunnable.loadRootDSE(InitializeRootDSERunnable.java:310)
              - locked <0x000000008b304e78> (a java.lang.Class for org.apache.directory.studio.ldapbrowser.core.jobs.InitializeRootDSERunnable)
              at org.apache.directory.studio.ldapbrowser.core.jobs.InitializeAttributesRunnable.initializeAttributes(InitializeAttributesRunnable.java:226)
              - locked <0x000000008b3170b8> (a java.lang.Class for org.apache.directory.studio.ldapbrowser.core.jobs.InitializeAttributesRunnable)
              at org.apache.directory.studio.ldapbrowser.core.jobs.InitializeAttributesRunnable.initializeAttributes(InitializeAttributesRunnable.java:204)
              - locked <0x000000008b3170b8> (a java.lang.Class for org.apache.directory.studio.ldapbrowser.core.jobs.InitializeAttributesRunnable)
              at org.apache.directory.studio.ldapbrowser.core.BrowserConnectionListener.openBrowserConnection(BrowserConnectionListener.java:117)
              at org.apache.directory.studio.ldapbrowser.core.BrowserConnectionListener.connectionOpened(BrowserConnectionListener.java:64)
              at org.apache.directory.studio.connection.core.jobs.OpenConnectionsRunnable.runNotification(OpenConnectionsRunnable.java:132)
              at org.apache.directory.studio.connection.core.jobs.StudioConnectionJob.run(StudioConnectionJob.java:115)
              at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
      

        Activity

        Show
        seelmann Stefan Seelmann added a comment - http://svn.apache.org/r1676146
        Hide
        seelmann Stefan Seelmann added a comment -

        I think I found the problem. The search is done in one thread and in another thread the connection is closed. When closing the connection in Studio we first do an LdapNetworkConnection.unBind() and then an LdapNetworkConnection.close(). Maybe that is not the right procedure, but nevertheless an currently running SearchCursorImpl.next() blocks. I'll try to create an isolated testcase.

        Show
        seelmann Stefan Seelmann added a comment - I think I found the problem. The search is done in one thread and in another thread the connection is closed. When closing the connection in Studio we first do an LdapNetworkConnection.unBind() and then an LdapNetworkConnection.close(). Maybe that is not the right procedure, but nevertheless an currently running SearchCursorImpl.next() blocks. I'll try to create an isolated testcase.

          People

          • Assignee:
            seelmann Stefan Seelmann
            Reporter:
            seelmann Stefan Seelmann
          • Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

            • Created:
              Updated:
              Resolved:

              Development