We are planning on adding Jira 8 to the list of supported versions for our plugins but have uncovered a lucene issue while testing. We are getting an IncompatibleClassChangeError whenever saving an instance of the gadget to a dashboard.
I initially tested using version 6.2 of the atlassian sdk and I got a NoClassDefFoundError. Wasn't able to quickly resolve that so I updated the sdk to 8.0.7. Now I am getting an IncompatibleClassChangeError error. This appears to be a problem with luenece and/or one of its dependencies.
It appears the FieldableDocumentHitCollector class has been moved from the jira-api dependency into another jar called jira-lucene-dmz. I'm guessing there is a compatibility problem between the jira-api, lucene-core, and jira-lucene-dmz versions but I haven't been able to figure it out after trying different combinations.
The logs are below but the ui produces a gadget.common.error.500 message when attempting to save the gadget.
Has anyone run into something like this?
Start my local instance using:
atlas-run --product jira --jvmargs "-Xmx2048m -XX:MaxPermSize=256m -Xms1024m" --version 8.0.2 -X
public List<PluginRestResourceModel> retreiveDataPoints() throws SearchException
{
List<String> issueKeys = new ArrayList<String>();
Query query = getProjectOrFilterId().buildQuery();
PluginIssuesHitCollector collector = new PluginIssuesHitCollector( issueKeys );
searchProvider.search( query, authenticationContext.getUser(), collector );
return calculateDataPoints( issueKeys );
}
static class PluginIssuesHitCollector extends FieldableDocumentHitCollector
{
private final List<String> issueKeys;
private final FieldSelector fieldSelector = new MapFieldSelector(DocumentConstants.ISSUE_KEY);
public PluginIssuesHitCollector( List<String> issueKeys )
{
this.issueKeys = issueKeys;
}
@Override
protected FieldSelector getFieldSelector()
{
return fieldSelector;
}
@Override
public void collect(Document d)
{
String issueKey = d.get(DocumentConstants.ISSUE_KEY);
issueKeys.add( issueKey );
}
}
Stack trace:
SDK 6.2.X
------------------------------------
2019-04-11 11:44:33,040 http-nio-2990-exec-5 ERROR admin 704x6543x1 1isflq7 192.168.158.154 /rest/OUR_PLUGIN_DIR/1.0/plugin/generateDataPoints [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: com/atlassian/jira/issue/statistics/util/FieldableDocumentHitCollector
java.lang.NoClassDefFoundError: com/atlassian/jira/issue/statistics/util/FieldableDocumentHitCollector
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
...
SDK 8.0.7
------------------------------------
2019-05-09 15:47:37,262 http-nio-2990-exec-13 ERROR admin 947x8503x1 18quk87 192.168.158.119 /rest/OUR_PLUGIN_DIR/1.0/plugin/generateDataPoints [c.a.p.r.c.error.jersey.ThrowableExceptionMapper] Uncaught exception thrown by REST service: class com.atlassian.jira.issue.statistics.util.FieldableDocumentHitCollector has interface org.apache.lucene.search.Collector as super class
java.lang.IncompatibleClassChangeError: class com.atlassian.jira.issue.statistics.util.FieldableDocumentHitCollector has interface org.apache.lucene.search.Collector as super class
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.defineClass(BundleWiringImpl.java:2410)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.findClass(BundleWiringImpl.java:2194)
at org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1607)
at org.apache.felix.framework.BundleWiringImpl.access$200(BundleWiringImpl.java:80)
at org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:2053)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at com.OUR_COMPANY.plugins.jira.OUR_PLUGIN_DIR.gadget.OUR_PLUGIN_DIRDataGatherer.retreiveDataPoints(OUR_PLUGIN_DIRDataGatherer.java:80)
at com.OUR_COMPANY.plugins.jira.OUR_PLUGIN_DIR.rest.OUR_PLUGIN_DIRDataPointsListCreator.collectDataPoints(OUR_PLUGIN_DIRDataPointsListCreator.java:36)
at com.OUR_COMPANY.plugins.jira.OUR_PLUGIN_DIR.rest.OUR_PLUGIN_DIRDataPointsListCreator.create(OUR_PLUGIN_DIRDataPointsListCreator.java:29)
at com.OUR_COMPANY.plugins.jira.OUR_PLUGIN_DIR.rest.OUR_PLUGIN_DIRRestResource.generateDataPoints(OUR_PLUGIN_DIRRestResource.java:81)
... 3 filtered
at java.lang.reflect.Method.invoke(Method.java:498)
... 19 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter$JerseyOsgiServletContainer.doFilter(RestDelegatingServletFilter.java:159)
... 1 filtered
at com.atlassian.plugins.rest.module.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:69)
... 41 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 24 filtered
at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
... 32 filtered
at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:66)
... 1 filtered
at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:64)
... 16 filtered
at com.atlassian.plugins.rest.module.servlet.RestSeraphFilter.doFilter(RestSeraphFilter.java:37)
... 19 filtered
at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:30)
... 10 filtered
at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
... 4 filtered
at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
... 26 filtered
at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:25)
... 24 filtered
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
2019-05-09 15:48:34,870 localhost-startStop-2 INFO [c.a.jira.startup.DefaultJiraLauncher] Stopping launchers
2019-05-09 15:48:34,918 localhost-startStop-2 INFO [c.a.jira.index.MonitoringIndexWriter] [lucene-stats] flush
POM:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>OUR_GROUP_ID</groupId>
<artifactId>OUR_PLUGIN</artifactId>
<version>1.4</version>
<organization>
<name>OUR_COMPANY</name>
<url>http://www.google.ca</url>
</organization>
<name>OUR_PLUGIN</name>
<description>OUR_PLUGIN</description>
<packaging>atlassian-plugin</packaging>
<dependencies>
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-api</artifactId>
<version>${jira.version}</version>
<scope>provided</scope>
</dependency>
<!-- WIRED TEST RUNNER DEPENDENCIES -->
<dependency>
<groupId>com.atlassian.plugins</groupId>
<artifactId>atlassian-plugins-osgi-testrunner</artifactId>
<version>${plugin.testrunner.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>javax.ws.rs</groupId>
<artifactId>jsr311-api</artifactId>
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.2.2-atlassian-1</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>javax.xml.bind</groupId>
<artifactId>jaxb-api</artifactId>
<version>2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.atlassian.plugins.rest</groupId>
<artifactId>atlassian-rest-common</artifactId>
<version>1.0.2</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.atlassian.sal</groupId>
<artifactId>sal-api</artifactId>
<version>2.6.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.wink</groupId>
<artifactId>wink-client</artifactId>
<version>1.1.3-incubating</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-lucene-dmz</artifactId>
<version>7.0.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>com.atlassian.jira</groupId>
<artifactId>jira-rest-api</artifactId>
<version>6.4.7</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>com.atlassian.maven.plugins</groupId>
<artifactId>jira-maven-plugin</artifactId>
<version>${amps.version}</version>
<extensions>true</extensions>
<configuration>
<productVersion>${jira.version}</productVersion>
<productDataVersion>${jira.version}</productDataVersion>
</configuration>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.6</source>
<target>1.6</target>
</configuration>
</plugin>
</plugins>
</build>
<properties>
<jira.version>7.13.0</jira.version>
<amps.version>8.0.0</amps.version>
<plugin.testrunner.version>1.2.3</plugin.testrunner.version>
<!-- TestKit version 5.x for JIRA 5.x, 6.x for JIRA 6.x -->
<testkit.version>5.2.26</testkit.version>
</properties>
<repositories>
<repository>
<id>atlassian</id>
<name>Atlassian Repository</name>
<url>https://maven.atlassian.com/content/groups/public/</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>atlassian-public</id>
<url>https://m2proxy.atlassian.com/repository/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
ENVIRONMENT DETAILS:
Atlas Version:
ATLAS Version: 8.0.7
ATLAS Home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec
ATLAS Scripts: /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec/bin
ATLAS Maven Home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec/apache-maven-3.5.4
AMPS Version: 8.0.0
--------
Executing: /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec/apache-maven-3.5.4/bin/mvn --version -gs /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec/apache-maven-3.5.4/conf/settings.xml
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=256M; support was removed in 8.0
Apache Maven 3.5.4 (1edded0938998edf8bf061f1ceb3cfdeccf443fe; 2018-06-17T13:33:14-05:00)
Maven home: /usr/local/Cellar/atlassian-plugin-sdk/8.0.7/libexec/apache-maven-3.5.4
Java version: 1.8.0_151, vendor: Oracle Corporation, runtime: /Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/jre
Default locale: en_CA, platform encoding: UTF-8
OS name: "mac os x", version: "10.14.4", arch: "x86_64", family: "mac"
Java version:
java version "1.8.0_151"
Java(TM) SE Runtime Environment (build 1.8.0_151-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.151-b12, mixed mode)
Java home:
/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home
Too hard to read.
I met with same error on open source project the problem was dependency in pom.xml
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.