Uploaded image for project: 'Bitbucket Server'
  1. Bitbucket Server
  2. BSERV-11573

Opening "Clustering" page when Hazelcast IPv6 members configured with DNS names causes error 500

    XMLWordPrintable

    Details

      Description

      Issue Summary

      When Hazelcast members explicitly configured using DNS names instead of IPv6 addresses, it causes an exception and error 500 on clustering page.

      Environment

      IPv6 only network

      Steps to Reproduce

      1. Manually configure hazelcast members
      2. Use DNS names instead of IP addresses
      3. Navigate to Clustering page
      hazelcast.network.tcpip=true
      hazelcast.port=5701
      hazelcast.network.tcpip.members=instance-2.my.dns.name:5701,instance-1.my.dns.name:5701
      hazelcast.group.name=MyGroup
      hazelcast.group.password=MyPassword
      

      Expected Results

      List of nodes in the cluster.

      Actual Results

      Error 500

      The below exception is thrown in the xxxxxxx.log file:

      2019-02-07 06:34:14,899 ERROR [ajp-nio-7990-exec-10] admin *1Z0LBG6x394x84x0 cc0be0 2401:1d80:2001:667::11 "GET /admin/clustering HTTP/1.1" o.a.c.c.C.[.[.[/].[springMvc] Servlet.service() for servlet [springMvc] threw exception
      java.lang.NullPointerException: null
          at com.atlassian.stash.internal.web.soy.ClusterNodeDataMapper.toString(ClusterNodeDataMapper.java:37)
          at com.atlassian.stash.internal.web.soy.ClusterNodeDataMapper.convert(ClusterNodeDataMapper.java:29)
          at com.atlassian.stash.internal.web.soy.ClusterNodeDataMapper.convert(ClusterNodeDataMapper.java:17)
          at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
          at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.doInvoke(ServiceInvoker.java:56)
          at org.eclipse.gemini.blueprint.service.importer.support.internal.aop.ServiceInvoker.invoke(ServiceInvoker.java:60)
          at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invokeUnprivileged(ServiceTCCLInterceptor.java:70)
          at org.eclipse.gemini.blueprint.service.util.internal.aop.ServiceTCCLInterceptor.invoke(ServiceTCCLInterceptor.java:53)
          at org.eclipse.gemini.blueprint.service.importer.support.LocalBundleContextAdvice.invoke(LocalBundleContextAdvice.java:57)
          at com.atlassian.soy.impl.data.AtlassianSoyCustomValueConverter.convert(AtlassianSoyCustomValueConverter.java:59)
          at com.google.template.soy.data.SoyValueHelper.convert(SoyValueHelper.java:273)
          at com.google.template.soy.data.internal.EasyListImpl.add(EasyListImpl.java:82)
          at com.google.template.soy.data.internal.EasyListImpl.addAllFromJavaIterable(EasyListImpl.java:123)
          at com.google.template.soy.data.SoyValueHelper.newEasyListFromJavaIterable(SoyValueHelper.java:209)
          at com.google.template.soy.data.SoyValueHelper.convert(SoyValueHelper.java:262)
          at com.atlassian.soy.impl.data.AccessorSoyValueProvider.doResolve(AccessorSoyValueProvider.java:49)
          at com.atlassian.soy.impl.data.AccessorSoyValueProvider.resolve(AccessorSoyValueProvider.java:33)
          at com.atlassian.soy.impl.data.JavaBeanSoyDict.getField(JavaBeanSoyDict.java:96)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitNullSafeDataAccessNode(EvalVisitor.java:346)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitNullSafeNodeRecurse(EvalVisitor.java:286)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitNullSafeNode(EvalVisitor.java:248)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitDataAccessNode(EvalVisitor.java:236)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitDataAccessNode(EvalVisitor.java:87)
          at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visitFieldAccessNode(AbstractReturningExprNodeVisitor.java:215)
          at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visit(AbstractReturningExprNodeVisitor.java:93)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitExprRootNode(EvalVisitor.java:148)
          at com.google.template.soy.sharedpasses.render.EvalVisitor.visitExprRootNode(EvalVisitor.java:87)
          at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visit(AbstractReturningExprNodeVisitor.java:81)
          at com.google.template.soy.exprtree.AbstractReturningExprNodeVisitor.visit(AbstractReturningExprNodeVisitor.java:73)
          at com.google.template.soy.basetree.AbstractReturningNodeVisitor.exec(AbstractReturningNodeVisitor.java:43)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.eval(RenderVisitor.java:739)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitForeachNode(RenderVisitor.java:382)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:104)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.visitChildren(AbstractNodeVisitor.java:59)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitChildren(AbstractSoyNodeVisitor.java:129)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitBlockHelper(RenderVisitor.java:702)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.renderBlock(RenderVisitor.java:716)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallNodeHelper(RenderVisitor.java:564)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallBasicNode(RenderVisitor.java:457)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:110)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.visitChildren(AbstractNodeVisitor.java:59)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitChildren(AbstractSoyNodeVisitor.java:129)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitBlockHelper(RenderVisitor.java:702)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitTemplateNode(RenderVisitor.java:220)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitTemplateBasicNode(AbstractSoyNodeVisitor.java:160)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:66)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.exec(AbstractNodeVisitor.java:40)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallNodeHelper(RenderVisitor.java:590)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallBasicNode(RenderVisitor.java:457)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:110)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.visitChildren(AbstractNodeVisitor.java:59)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitChildren(AbstractSoyNodeVisitor.java:129)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitBlockHelper(RenderVisitor.java:702)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitSoyNode(RenderVisitor.java:649)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitIfCondNode(AbstractSoyNodeVisitor.java:264)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:97)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitIfNode(RenderVisitor.java:339)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:96)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.visitChildren(AbstractNodeVisitor.java:59)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitChildren(AbstractSoyNodeVisitor.java:129)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitBlockHelper(RenderVisitor.java:702)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.renderBlock(RenderVisitor.java:716)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallNodeHelper(RenderVisitor.java:564)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitCallBasicNode(RenderVisitor.java:457)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:110)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.visitChildren(AbstractNodeVisitor.java:59)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitChildren(AbstractSoyNodeVisitor.java:129)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitBlockHelper(RenderVisitor.java:702)
          at com.google.template.soy.sharedpasses.render.RenderVisitor.visitTemplateNode(RenderVisitor.java:220)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visitTemplateBasicNode(AbstractSoyNodeVisitor.java:160)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:66)
          at com.google.template.soy.soytree.AbstractSoyNodeVisitor.visit(AbstractSoyNodeVisitor.java:56)
          at com.google.template.soy.basetree.AbstractNodeVisitor.exec(AbstractNodeVisitor.java:40)
          at com.google.template.soy.tofu.internal.BaseTofu.renderMainHelper(BaseTofu.java:366)
          at com.google.template.soy.tofu.internal.BaseTofu.renderMain(BaseTofu.java:322)
          at com.google.template.soy.tofu.internal.BaseTofu.access$100(BaseTofu.java:66)
          at com.google.template.soy.tofu.internal.BaseTofu$RendererImpl.render(BaseTofu.java:476)
          at com.atlassian.soy.impl.DefaultSoyManager.render(DefaultSoyManager.java:154)
          at com.atlassian.soy.impl.DefaultSoyTemplateRenderer.render(DefaultSoyTemplateRenderer.java:45)
          at com.atlassian.stash.internal.plugin.OsgiServiceProxyFactoryImpl$DynamicServiceInvocationHandler.invoke(OsgiServiceProxyFactoryImpl.java:105)
          at com.atlassian.soy.springmvc.SoyView.render(SoyView.java:50)
          at com.atlassian.stash.internal.web.soy.StashSoyViewResolver$1.render(StashSoyViewResolver.java:34)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.stash.internal.spring.security.StashAuthenticationFilter.doFilter(StashAuthenticationFilter.java:85)
          at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doInsideSpringSecurityChain(BeforeLoginPluginAuthenticationFilter.java:112)
          at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:75)
          at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94)
          at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:67)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.bitbucket.internal.scm.git.lfs.servlet.filter.GitLfsLockingFilter.doFilter(GitLfsLockingFilter.java:50)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94)
          at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:67)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.plugin.connect.plugin.auth.oauth2.DefaultSalAuthenticationFilter.doFilter(DefaultSalAuthenticationFilter.java:69)
          at com.atlassian.plugin.connect.plugin.auth.user.ThreeLeggedAuthFilter.doFilter(ThreeLeggedAuthFilter.java:109)
          at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:37)
          at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:38)
          at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:39)
          at com.atlassian.bitbucket.internal.scm.git.lfs.servlet.filter.GitLfsLockingFilter.doFilter(GitLfsLockingFilter.java:50)
          at com.atlassian.stash.internal.spring.lifecycle.LifecycleJohnsonServletFilterModuleContainerFilter.doFilter(LifecycleJohnsonServletFilterModuleContainerFilter.java:42)
          at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doBeforeBeforeLoginFilters(BeforeLoginPluginAuthenticationFilter.java:90)
          at com.atlassian.stash.internal.web.auth.BeforeLoginPluginAuthenticationFilter.doFilter(BeforeLoginPluginAuthenticationFilter.java:73)
          at com.atlassian.stash.internal.request.DefaultRequestManager.doAsRequest(DefaultRequestManager.java:87)
          at com.atlassian.stash.internal.hazelcast.ConfigurableWebFilter.doFilter(ConfigurableWebFilter.java:38)
          at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
          at java.lang.Thread.run(Thread.java:748)
          ... 294 frames trimmed
      
      

      Workaround

      Use IPv6 addresses instead of DNS names.

        Attachments

          Issue Links

            Activity

              People

              Assignee:
              fdoherty@atlassian.com Frank Doherty
              Reporter:
              akhudavets Andrei Khudavets
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

                Dates

                Created:
                Updated:
                Resolved: