Uploaded image for project: 'FishEye'
  1. FishEye
  2. FE-3645

Old non-http/s SimpleLinker configuration passes upgrade but results in error when trying to open repo

    XMLWordPrintable

Details

    Description

      Customer was running 2.3.5 with a custom Simple Linker:

      config.xml: <linker><simple description="lotus notes linker" href="${0}" regex="notes://[^\s]+"/></linker>
      

      Upgraded to 2.6.3
      Opening a repo in Administration Repositories list results in an error popup:

      An error has occurred
      Error calling server:com.google.gwt.user.client.rpc.StatusCodeException: 
      The call failed on the server; see server log for details 
      Unknown.WYc(Unknown source:0) 
      Unknown.v1c(Unknown source:0) 
      Unknown.rnc(Unknown source:0) 
      Unknown.Ync(Unknown source:0) 
      Unknown.<anonymous>(Unknown source:0) 
      Unknown.Wcc(Unknown source:0) 
      Unknown.onreadystatechange(Unknown source:0)
      

      Errorlog shows

      2011-08-11 12:13:42,955 ERROR [btpool0-312 ] / org.mortbay.log.Slf4jLog-warn - Exception while dispatching incoming RPC call
      com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract com.atlassian.fecru.gwt.admin.shared.repositories.FullRepositoryInfo com.atlassian.fecru.gwt.admin.client.RepositoryAdminRpcService.getFullRepositoryInfo(java.lang.String) throws com.atlassian.fecru.gwt.admin.shared.AuthorizationException,com.atlassian.fecru.gwt.admin.shared.OperationFailureException,com.atlassian.fecru.gwt.admin.shared.NoSuchRepositoryException' threw an unexpected exception: java.lang.IllegalArgumentException: href '${0}' is invalid.
      	at com.google.gwt.user.server.rpc.RPC.encodeResponseForFailure(RPC.java:378)
      	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:581)
      	at com.atlassian.fecru.gwt.servlet.GwtRPCRoutingServlet.invokeRequest(GwtRPCRoutingServlet.java:73)
      	at com.atlassian.fecru.gwt.servlet.GwtRPCRoutingServlet.processCall(GwtRPCRoutingServlet.java:51)
      	at com.google.gwt.user.server.rpc.RemoteServiceServlet.processPost(RemoteServiceServlet.java:224)
      	at com.google.gwt.user.server.rpc.AbstractRemoteServiceServlet.doPost(AbstractRemoteServiceServlet.java:62)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
      	at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
      	at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1272)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
      	at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:25)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
      	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.crucible.filters.CrucibleFilter.doFilter(CrucibleFilter.java:142)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.cenqua.fisheye.web.filters.TotalityFilter.doFilter(TotalityFilter.java:263)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:98)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter$1.doFilter(DelegatingPluginFilter.java:66)
      	at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:71)
      	at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:74)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:42)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at org.mortbay.servlet.UserAgentFilter.doFilter(UserAgentFilter.java:78)
      	at org.mortbay.servlet.GzipFilter.doFilter(GzipFilter.java:131)
      	at com.cenqua.fisheye.web.filters.CustomIncludableGzipFilter.doFilter(CustomIncludableGzipFilter.java:21)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.cenqua.fisheye.web.filters.ProductInfoFilter.doFilter(ProductInfoFilter.java:36)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:46)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:77)
      	at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:63)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.cenqua.fisheye.web.filters.UpfrontFilter.doFilter(UpfrontFilter.java:52)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at com.atlassian.fecru.profiling.ProfilingServletFilter.doFilter(ProfilingServletFilter.java:73)
      	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:236)
      	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:167)
      	at org.mortbay.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1264)
      	at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:399)
      	at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
      	at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182)
      	at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:766)
      	at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:450)
      	at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:230)
      	at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
      	at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
      	at org.mortbay.jetty.Server.handle(Server.java:326)
      	at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542)
      	at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:945)
      	at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:756)
      	at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218)
      	at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404)
      	at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:410)
      	at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:451)
      Caused by: java.lang.IllegalArgumentException: href '${0}' is invalid.
      	at com.atlassian.fisheye.spi.admin.data.SimpleLinker.setHref(SimpleLinker.java:58)
      	at com.atlassian.fisheye.spi.admin.data.SimpleLinker.<init>(SimpleLinker.java:23)
      	at com.atlassian.fisheye.spi.admin.impl.AdminSpiUtil.toSimpleLinker(AdminSpiUtil.java:692)
      	at com.atlassian.fisheye.spi.admin.impl.AbstractRepositoryOptionsHelper.getSimpleLinkers(AbstractRepositoryOptionsHelper.java:46)
      	at com.atlassian.fisheye.spi.admin.impl.DefaultRepositoryAdminService.getDefaultOptions(DefaultRepositoryAdminService.java:237)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:77)
      	at com.cenqua.crucible.hibernate.WithSessionAspect.doCloseSession(WithSessionAspect.java:37)
      	at sun.reflect.GeneratedMethodAccessor268.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)
      	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)
      	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:64)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160)
      	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at $Proxy24.getDefaultOptions(Unknown Source)
      	at com.atlassian.fecru.gwt.admin.server.RepositoryAdminRpcServiceImpl.getRepositoryDefaults(RepositoryAdminRpcServiceImpl.java:526)
      	at com.atlassian.fecru.gwt.admin.server.RepositoryAdminRpcServiceImpl.getFullRepositoryInfo(RepositoryAdminRpcServiceImpl.java:497)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:307)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
      	at org.springframework.aop.aspectj.MethodInvocationProceedingJoinPoint.proceed(MethodInvocationProceedingJoinPoint.java:77)
      	at com.atlassian.fecru.gwt.admin.server.AdminSecurityAspect.doCloseSession(AdminSecurityAspect.java:35)
      	at sun.reflect.GeneratedMethodAccessor674.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethodWithGivenArgs(AbstractAspectJAdvice.java:627)
      	at org.springframework.aop.aspectj.AbstractAspectJAdvice.invokeAdviceMethod(AbstractAspectJAdvice.java:616)
      	at org.springframework.aop.aspectj.AspectJAroundAdvice.invoke(AspectJAroundAdvice.java:64)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:160)
      	at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:89)
      	at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
      	at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
      	at $Proxy29.getFullRepositoryInfo(Unknown Source)
      	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
      	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
      	at java.lang.reflect.Method.invoke(Unknown Source)
      	at com.google.gwt.user.server.rpc.RPC.invokeAndEncodeResponse(RPC.java:562)
      	... 75 more
      2011-08-11 12:13:43,012 ERROR [btpool0-312 ] fisheye.app com.atlassian.fecru.gwt.core.server.LoggingRPCServiceImpl-error - Error calling server:com.google.gwt.user.client.rpc.StatusCodeException: The call failed on the server; see server log for details
              Unknown.WYc(Unknown source:0)
              Unknown.v1c(Unknown source:0)
              Unknown.rnc(Unknown source:0)
              Unknown.Ync(Unknown source:0)
              Unknown.<anonymous>(Unknown source:0)
              Unknown.Wcc(Unknown source:0)
              Unknown.onreadystatechange(Unknown source:0)
      

      SimpleLinker.setHref() --> SimpleLinker.isValidHref() --> TextUtils.verifyUrl() which only allows hrefs starting with "http://" or "https://"
      No warning was given at upgrade time.

      Attachments

        Activity

          People

            pepoirot Pierre-Etienne Poirot (Inactive)
            rverschoor Rene Verschoor (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: