Uploaded image for project: 'Crowd Data Center'
  1. Crowd Data Center
  2. CWD-973

If LDAP directory becomes unavailable, cannot remove from application in Crowd

    XMLWordPrintable

Details

    • Bug
    • Resolution: Fixed
    • High
    • 1.5
    • 1.3.2
    • Directory - LDAP
    • None

    Description

      When attempting to access the application in Crowd that contains the problem directory, the following error is thrown:

      javax.servlet.ServletException: Transaction rolled back because it has been marked as rollback-only
      	at com.opensymphony.webwork.dispatcher.DispatcherUtils.serviceAction(DispatcherUtils.java:284)
      	at com.opensymphony.webwork.dispatcher.FilterDispatcher.doFilter(FilterDispatcher.java:202)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      	at com.opensymphony.module.sitemesh.filter.PageFilter.parsePage(PageFilter.java:118)
      	at com.opensymphony.module.sitemesh.filter.PageFilter.doFilter(PageFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      	at com.opensymphony.webwork.dispatcher.ActionContextCleanUp.doFilter(ActionContextCleanUp.java:88)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      	at com.atlassian.crowd.integration.http.VerifyTokenFilter.doFilter(VerifyTokenFilter.java:172)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
      	at com.atlassian.crowd.console.filter.CrowdDelegatingFilterProxy.doFilter(CrowdDelegatingFilterProxy.java:38)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      	at org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
      	at com.atlassian.crowd.console.filter.CrowdOpenSessionInViewFilter.doFilterInternal(CrowdOpenSessionInViewFilter.java:26)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:75)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
      	at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:81)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:183)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:138)
      

      However, the actualy exception in Crowd is:

      2008-04-09 17:36:00,073 http-8095-Processor7 ERROR [codehaus.xfire.handler.DefaultFaultHandler] Fault occurred!
      org.springframework.dao.DataRetrievalFailureException: Unable to communicate with LDAP server; nested exception is javax.naming.CommunicationException: maltshovel:389 [Root exception is java.net.ConnectException: Connection refused]
      Caused by: 
      javax.naming.CommunicationException: maltshovel:389 [Root exception is java.net.ConnectException: Connection refused]
      	at com.sun.jndi.ldap.Connection.<init>(Connection.java:204)
      	at com.sun.jndi.ldap.LdapClient.<init>(LdapClient.java:118)
      	at com.sun.jndi.ldap.LdapClientFactory.createPooledConnection(LdapClientFactory.java:44)
      	at com.sun.jndi.ldap.pool.Connections.<init>(Connections.java:97)
      	at com.sun.jndi.ldap.pool.Pool.getPooledConnection(Pool.java:114)
      	at com.sun.jndi.ldap.LdapPoolManager.getLdapClient(LdapPoolManager.java:310)
      	at com.sun.jndi.ldap.LdapClient.getInstance(LdapClient.java:1572)
      	at com.sun.jndi.ldap.LdapCtx.connect(LdapCtx.java:2596)
      	at com.sun.jndi.ldap.LdapCtx.<init>(LdapCtx.java:283)
      	at com.sun.jndi.ldap.LdapCtxFactory.getUsingURL(LdapCtxFactory.java:175)
      	at com.sun.jndi.ldap.LdapCtxFactory.getUsingURLs(LdapCtxFactory.java:193)
      	at com.sun.jndi.ldap.LdapCtxFactory.getLdapCtxInstance(LdapCtxFactory.java:136)
      

      Wrapping a try/catch around ldapTemplate.search(baseDN, filter.encode(), searchControls, handler, requestControl); in SpringLDAPConnector.java's pageSearchResults method seems to fix the issue. May not be the best approach for a patch though.

      Attachments

        Issue Links

          Activity

            People

              doflynn David O'Flynn [Atlassian]
              donna@atlassian.com DonnaA
              Votes:
              2 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: