Bitbucket Server throws 500 error when attempting to edit an External User Directory

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Symptoms

Issue #1:

The following appears in the atlassian-bitbucket.log:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 2014-10-09 20:18:39,108 ERROR [http-nio-7990-exec-4] bitbucket @481MASx1218x229x0 18jc2n0 10.1.4.88,127.0.0.1 "GET /plugins/servlet/embedded-crowd/configure/ldap/ HTTP/1.0" c.a.p.s.ServletModuleContainerServlet Request processing failed; nested exception is com.atlassian.crowd.exception.DirectoryNotFoundException: java.lang.NumberFormatException: For input string: "229377?xsrfTokenName=atl_token" org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.atlassian.crowd.exception.DirectoryNotFoundException: java.lang.NumberFormatException: For input string: "229377?xsrfTokenName=atl_token" at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583) ~[FrameworkServlet.class:4.0.6.RELEASE] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) [applinks-plugin-4.2.4_1408604932000.jar:na] at com.atlassian.bitbucket.internal.spring.security.Bitbucket ServerAuthenticationFilter.doFilter(Bitbucket ServerAuthenticationFilter.java:86) [Bitbucket ServerAuthenticationFilter.class:na] ... Caused by: com.atlassian.crowd.exception.DirectoryNotFoundException: java.lang.NumberFormatException: For input string: "229377?xsrfTokenName=atl_token" at com.atlassian.crowd.embedded.admin.DirectoryContextHelper.getDirectory(DirectoryContextHelper.java:80) ~[na:na] ... Caused by: java.lang.NumberFormatException: For input string: "229377?xsrfTokenName=atl_token" at java.lang.NumberFormatException.forInputString(Unknown Source) ~[na:1.7.0_55] at java.lang.Long.parseLong(Unknown Source) ~[na:1.7.0_55] ... 2014-10-09 20:18:39,115 ERROR [http-nio-7990-exec-4] @481MASx1218x230x0 18jc2n0 10.1.4.88,127.0.0.1 "GET /mvc/error500 HTTP/1.0" c.a.s.i.web.ErrorPageController There was an unhandled error loading [/plugins/servlet/embedded-crowd/configure/ldap/]

Issue #2:

The following appears in the atlassian-stash.log:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 2015-10-28 16:02:39,371 ERROR [http-nio-7990-exec-10] pathloth @HKPJ0Ix962x5475x0 5eyggl 9.66.78.78 "GET /plugins/servlet/embedded-crowd/configure/delegatingldap/ HTTP/1.1" c.a.p.s.ServletModuleContainerServlet Request processing failed; nested exception is org.springframework.beans.FatalBeanException: Could not copy properties from source to target; nested exception is java.lang.reflect.InvocationTargetException org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.beans.FatalBeanException: Could not copy properties from source to target; nested exception is java.lang.reflect.InvocationTargetException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:583) ~[spring-webmvc-4.1.4.RELEASE.jar:4.1.4.RELEASE] at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25) [applinks-plugin-4.3.5_1413940846000.jar:na] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:181) [sitemesh-2.5-atlassian-10.jar:na] at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:85) [sitemesh-2.5-atlassian-10.jar:na] at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:86) [StashAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:111) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:77) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:100) [atlassian-trusted-apps-core-3.0.8.jar:na] at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:79) [atlassian-oauth-service-provider-plugin-1.9.10_1420780786000.jar:na] at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:32) [analytics-client-3.56_1421929636000.jar:na] at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32) [analytics-client-3.56_1421929636000.jar:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:89) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75) [BeforeLoginPluginAuthenticationFilter.class:na] at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:82) [stash-service-impl-3.7.0.jar:na] at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38) [ConfigurableWebFilter.class:na] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [na:1.7.0_85] at java.lang.Thread.run(Thread.java:745) [na:1.7.0_85] ... 181 frames trimmed Caused by: org.springframework.beans.FatalBeanException: Could not copy properties from source to target; nested exception is java.lang.reflect.InvocationTargetException at org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:591) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE] at org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:500) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE] at com.atlassian.crowd.embedded.admin.DefaultDirectoryMapper.toDelegatingLdapConfiguration(DefaultDirectoryMapper.java:194) ~[na:na] at com.atlassian.crowd.embedded.admin.delegatingldap.DelegatingLdapConfigurationController.formBackingObject(DelegatingLdapConfigurationController.java:44) ~[na:na] ... 17 common frames omitted Caused by: java.lang.reflect.InvocationTargetException: null at sun.reflect.GeneratedMethodAccessor1076.invoke(Unknown Source) ~[na:na] at org.springframework.beans.BeanUtils.copyProperties(BeanUtils.java:588) ~[spring-beans-4.1.4.RELEASE.jar:4.1.4.RELEASE] ... 20 common frames omitted Caused by: java.lang.NumberFormatException: For input string: "//bluepages.ibm.comyour.domain:636" at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65) ~[na:1.7.0_85] at java.lang.Integer.parseInt(Integer.java:481) ~[na:1.7.0_85] at java.lang.Integer.parseInt(Integer.java:527) ~[na:1.7.0_85] at com.atlassian.crowd.embedded.admin.delegatingldap.DelegatingLdapDirectoryConfiguration.setLdapUrl(DelegatingLdapDirectoryConfiguration.java:150) ~[na:na] ... 21 common frames omitted 2015-10-28 16:02:39,376 ERROR [http-nio-7990-exec-10] @HKPJ0Ix962x5476x0 5eyggl 9.66.78.78 "GET /mvc/error500 HTTP/1.1" c.a.s.i.web.ErrorPageController There was an unhandled error loading [/stash/plugins/servlet/embedded-crowd/configure/delegatingldap/]

Diagnosis

Issue #1:

Check if your Bitbucket Server instance is requesting an incorrect URL:

In this specific example, the URL being requested was:

1 10.1.4.88,127.0.0.1 | http | i@481MASx205x481x0 | - | 2014-10-10 03:25:56,937 | "GET /rest/menu/latest/appswitcher HTTP/1.0" | "https://bitbucket.domain.com/plugins/servlet/embedded-crowd/configure/ldap/?xsrfTokenName=atl_token&xsrfTokenValue=d4f9ca1760160116cef56a9b4097d276fbe41f59&directoryId=229377?xsrfTokenName=atl_token&xsrfTokenValue=d4f9ca1760160116cef56a9b4097d276fbe41f59&directoryId=229377" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_9_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2062.124 Safari/537.36" | - | - | e50ljz |

However, the URL should have been like:

1 https://bitbucket.domain.com/plugins/servlet/embedded-crowd/configure/ldap/?xsrfTokenName=atl_token&xsrfTokenValue=d4f9ca1760160116cef56a9b4097d276fbe41f59&directoryId=229377

A good way to analyse what is causing that is by executing the procedure below:

Something is changing the URL. See example of a request like that in a HAR:

(Auto-migrated image: description temporarily unavailable)
  • Test the caching in your browser and clear it.

  • Try to edit the directory as an incognito window in your browser as well.

Issue #2:

Looking at your current configuration in SupportZip/application-properties/application.xml, you can see the LDAP address incorrectly updated:

1 2 3 4 5 <directory> <id>229377</id> ... ... ldap.url=ldaps://ldaps://yourdomain.com:636 .... </directory>

Cause

Issue #1:

A proxy could be tampering with the URL when you click edit.

Issue #2:

The cwd_directory_attribute has been updated with an invalid value and the Embedded Crowd fails when you try to edit it.

Solution

Resolution

Issue #1:

  • Check for what is changing the URL being requested to Bitbucket Server and bypass the proxy.

Issue #2:

The cwd_directory_attribute has been updated with an invalid value and the Embedded Crowd fails when you try to edit it. In order to fix that:

  • Check that this parameter is incorrect on the database:

    1 select * from cwd_directory_attribute WHERE attribute_name='ldap.url';

    At this point, we're expecting that the attribute_name is incorrect and set as ldaps://ldaps//your.domain.com:636

  • The next step is to update the incorrect value:

    • Stop your Stash instance;

    • Update the value correctly. Notice that the directory_id value below was also obtained from the SupportZip/application-properties/application.xml file:

      1 UPDATE cwd_directory_attribute SET attribute_value='ldaps://your.domain.com:636' WHERE directory_id=229378 and attribute_name='ldap.url';
    • Restart your instance. That should enable you to edit the directory again.

Updated on April 8, 2025

Still need help?

The Atlassian Community is here for you.