Summary
Installing the Timetracker add-on and then installing the latest Portfolio version on Jira 8 causing the following error when attempting to view a plan:
java.lang.LinkageError: loader constraint violation: when resolving method "com.querydsl.sql.SQLQueryFactory.<init>(Lcom/querydsl/sql/Configuration;Ljavax/inject/Provider;)V" the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoader) of the current class, com/atlassian/rm/common/bridges/jira/persistence/JiraDatabaseProviderBridge63, and the class loader (instance of org/apache/felix/framework/BundleWiringImpl$BundleClassLoader) for the method's defining class, com/querydsl/sql/SQLQueryFactory, have different Class objects for the type javax/inject/Provider used in the signature
at com.atlassian.rm.common.bridges.jira.persistence.JiraDatabaseProviderBridge63.execute:52
at com.atlassian.rm.common.persistence.env.JiraDatabaseProvider.execute:36
at com.atlassian.rm.common.persistence.DefaultDatabaseProvider.run:26
at com.atlassian.rm.jpo.core.plan.sql.QueryDslPlanPersistence.getAllPlans:274
at com.atlassian.rm.jpo.core.plan.api.DefaultPlanListingService.getAllPlans:60
at com.atlassian.rm.jpo.rest.service.program.ProgramRestEndpoint.getProgramList:118
at sun.reflect.NativeMethodAccessorImpl.invoke0:-2
at sun.reflect.NativeMethodAccessorImpl.invoke:62
at sun.reflect.DelegatingMethodAccessorImpl.invoke:43
at java.lang.reflect.Method.invoke:498
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker$1.invoke:192
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$1.intercept:83
at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke:53
at com.atlassian.plugins.rest.common.expand.interceptor.ExpandInterceptor.intercept:41
at com.atlassian.plugins.rest.common.interceptor.impl.DefaultMethodInvocation.invoke:53
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper.invokeMethodWithInterceptors:110
at com.atlassian.plugins.rest.common.interceptor.impl.DispatchProviderHelper$ResponseOutInvoker._dispatch:190
at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch:75
at com.atlassian.rm.common.rest.mau.MauTrackingDispatcher.dispatch:28
at com.atlassian.rm.common.rest.permissions.AnnotationPermissionDispatcher.dispatch:49
at com.atlassian.rm.common.rest.scope.RequestOperationScopeDispatcher.dispatch:25
at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept:302
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept:147
at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept:108
at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept:147
at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept:84
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest:1542
at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest:1473
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest:1419
at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest:1409
at com.sun.jersey.spi.container.servlet.WebComponent.service:409
at com.sun.jersey.spi.container.servlet.ServletContainer.service:558
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter:159
at com.sun.jersey.spi.container.servlet.ServletContainer.doFilter:829
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter:69
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:43
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilterInternal:22
at com.atlassian.plugins.rest.module.servlet.RestServletUtilsUpdaterFilter.doFilter:34
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter:24
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter:24
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter:24
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter:24
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter:24
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter:32
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.analytics.client.filter.UniversalAnalyticsFilter.doFilter:92
at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter:39
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter:21
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter:32
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter:80
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter:51
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.labs.botkiller.BotKillerFilter.doFilter:36
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:43
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.executeRequest:92
at com.atlassian.jira.web.filters.accesslog.AccessLogFilter.doFilter:78
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.security.xsrf.XsrfTokenAdditionRequestFilter.doFilter:46
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.pagebuilder.PageBuilderFilter.doFilter:81
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.CommittedResponseHtmlErrorRecoveryFilter.doFilter:55
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:39
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter:56
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:43
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.MauEventFilter.doFilter:49
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0:66
at com.atlassian.seraph.filter.SecurityFilter.doFilter:242
at com.atlassian.jira.security.JiraSecurityFilter.doFilter:64
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter:94
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.seraph.filter.BaseLoginFilter.doFilter:148
at com.atlassian.jira.web.filters.JiraLoginFilter.doFilter:77
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:39
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter:67
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter:56
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:43
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.johnson.JiraJohnson503Filter.doFilter:79
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at org.tuckey.web.filters.urlrewrite.RuleChain.handleRewrite:176
at org.tuckey.web.filters.urlrewrite.RuleChain.doRules:145
at org.tuckey.web.filters.urlrewrite.UrlRewriter.processRequest:92
at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter:394
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter:30
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:39
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.analytics.client.filter.JiraAnalyticsFilter.doFilter:42
at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter:39
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter:21
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter:36
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0:57
at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter:56
at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter:62
at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter:37
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:55
at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter:43
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter:74
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter:31
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.core.filters.encoding.AbstractEncodingFilter.doFilter:39
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at com.atlassian.jira.web.filters.PathMatchingEncodingFilter.doFilter:39
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.MultipartBoundaryCheckFilter.doFilter:36
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter:25
at com.atlassian.core.filters.AbstractHttpFilter.doFilter:32
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.jira.web.filters.steps.ChainedFilterStepRunner.doFilter:74
at com.atlassian.jira.web.filters.JiraFirstFilter.doFilter:57
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at com.atlassian.gzipfilter.GzipFilter.doFilterInternal:115
at com.atlassian.gzipfilter.GzipFilter.doFilter:92
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter:193
at org.apache.catalina.core.ApplicationFilterChain.doFilter:166
at org.apache.catalina.core.StandardWrapperValve.invoke:198
at org.apache.catalina.core.StandardContextValve.invoke:96
at org.apache.catalina.authenticator.AuthenticatorBase.invoke:493
at org.apache.catalina.core.StandardHostValve.invoke:140
at org.apache.catalina.valves.ErrorReportValve.invoke:81
at org.apache.catalina.core.StandardEngineValve.invoke:87
at org.apache.catalina.valves.AbstractAccessLogValve.invoke:650
at org.apache.catalina.connector.CoyoteAdapter.service:342
at org.apache.coyote.http11.Http11Processor.service:800
at org.apache.coyote.AbstractProcessorLight.process:66
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process:800
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun:1471
at org.apache.tomcat.util.net.SocketProcessorBase.run:49
at java.util.concurrent.ThreadPoolExecutor.runWorker:1149
at java.util.concurrent.ThreadPoolExecutor$Worker.run:624
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run:61
at java.lang.Thread.run:748
===============
=== Request ===
===============
URL: /j800/rest/jpo/1.0/programs/list?_=1551827634595
Type: GET
Status: 500
Data: undefined
===================
=== Client Info ===
===================
User agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36
Local time: Tue Mar 05 2019 17:13:56 GMT-0600 (Central Standard Time)
===================
=== Plugin Info ===
===================
Plugin build: 2.25.0
===================
=== System Info ===
===================
Jira Title: Jira
Jira Version: 8.0.0
Agile Version: 8.0.0-DAILY20190121095156
Environment
- Jira 8 (tested in 8.0.0 and 8.0.1)
- 2.25.0
- Timetracker (installed first)
Steps to Reproduce
- Install Jira 8
- Install Timetracker
- Install Portfolio 2.25.0
- Click Portfolio > View Portfolio
Notes
This appears to be caused by the fact that Timetracker also installs Querydsl Support for JIRA Plugin. It looks like Portfolio sees this other (incompatible) version of Querydsl and does not install the * querydsl-4.0.7-provider-plugin-1.2.jar* that it normally installs and requires.
When Portfolio is installed first, there appears to be no problem and both Querydsl versions live side-by-side without any issues.
Workaround
As of right now, the only working workaround that we found is to,
- Shut down Jira
- Remove the jira-querydsl-support-2.0.0.jar file from JIRA_HOME/plugins/installed-plugins
- Start Jira
- Add querydsl-4.0.7-provider-plugin-1.2.jar to JIRA_HOME/plugins/installed-plugins if it's missing (attaching to this ticket)
- Jira Portfolio should now work as expected