Preparing for Jira Software 10.0 and Jira Service Management 6.0 - multiple EAPs coming your way

Hi! If you mean jira-testkit, please use 10.0.3.

2 Likes

Is there a chance it might become possible before platform 7 GA?

I think something is wrong in the built-in Workflow Designer, when editing WF you can see exceptions in the logs (the same situation occurs when loading any WF via Implementing the JIRA workflow designer)

2024-07-19 08:15:29,392+0200 http-nio-2990-exec-2 url: /jira/rest/workflowDesigner/latest/workflowMau; user: admin WARN admin 495x12414x1 98hpeu 0:0:0:0:0:0:0:1 /rest/workflowDesigner/latest/workflowMau [c.a.j.p.workflowdesigner.rest.MauEventResource] Exception thrown from MAUEventService.setApplicationForThreadBasedOnProject:Cannot read field "projectKey" because "projectKey" is null
java.lang.NullPointerException: Cannot read field "projectKey" because "projectKey" is null
	at com.atlassian.jira.plugins.workflowdesigner.rest.MauEventResource.triggerMauEventForProject(MauEventResource.java:44)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:568)
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)

Hello,

I’m seeing these errors in the log and I get the ā€˜Jira Cloud Migration Assistant’ plugin disabled.
My plugins and the rest of the plugins work correctly. I am using jira-10.0.0-m0007.

How could I solve it?

1 plugin failed to load during Jira startup.
    
    	'com.atlassian.jira.migration.jira-migration-plugin' - 'Jira Cloud Migration Assistant'  failed to load.
    		Cannot start plugin: com.atlassian.jira.migration.jira-migration-plugin
    			Unable to resolve com.atlassian.jira.migration.jira-migration-plugin [85](R 85.0): missing requirement [com.atlassian.jira.migration.jira-migration-plugin [85](R 85.0)] osgi.wiring.package; (osgi.wiring.package=com.atlassian.plugins.rest.common.multipart) Unresolved requirements: [[com.atlassian.jira.migration.jira-migration-plugin [85](R 85.0)] osgi.wiring.package; (osgi.wiring.package=com.atlassian.plugins.rest.common.multipart)]

For this, perhaps i can add woodstox implementation. https://jira.atlassian.com/browse/JRASERVER-26214

[c.a.s.caesium.impl.SchedulerQueueWorker] Unhandled exception thrown by job QueuedJob[jobId=com.atlassian.analytics.client.upload.RemoteFilterRead:job,deadline=1721047421574]
javax.xml.stream.FactoryConfigurationError: Provider for class javax.xml.stream.XMLInputFactory cannot be created
...
Caused by: java.lang.RuntimeException: Provider for class javax.xml.stream.XMLInputFactory cannot be created
	at java.xml/javax.xml.stream.FactoryFinder.findServiceProvider(FactoryFinder.java:365)
	... 68 more
Caused by: java.util.ServiceConfigurationError: javax.xml.stream.XMLInputFactory: Provider com.ctc.wstx.stax.WstxInputFactory not found
	at java.base/java.util.ServiceLoader.fail(ServiceLoader.java:593)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.nextProviderClass(ServiceLoader.java:1219)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNextService(ServiceLoader.java:1228)
	at java.base/java.util.ServiceLoader$LazyClassPathLookupIterator.hasNext(ServiceLoader.java:1273)
	at java.base/java.util.ServiceLoader$2.hasNext(ServiceLoader.java:1309)
	at java.base/java.util.ServiceLoader$3.hasNext(ServiceLoader.java:1393)
	at java.xml/javax.xml.stream.FactoryFinder$1.run(FactoryFinder.java:350)
	at java.base/java.security.AccessController.doPrivileged(AccessController.java:318)
	at java.xml/javax.xml.stream.FactoryFinder.findServiceProvider(FactoryFinder.java:339)

Hey, Jira Cloud Migration Assistant is not compatible yet in m0007. It will be part of next EAP.

2 Likes

Thanks!

And woodstox error is for analytics, no problem :slight_smile:

https://confluence.atlassian.com/jirakb/jira-fails-to-send-analytics-events-957133938.html

thanks @adam.labus, we’re looking into it.

1 Like

Hi there

I am getting below error after converting codehaus to fasterxml.

No properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0])

Hii @ashraf.teleb85

Add below lines in import package it’s work for me
javax.ws.rs;version=ā€œ[2.0.0,3.0.0)ā€,
javax.ws.rs.core;version=ā€œ[2.0.0,3.0.0)ā€,
javax.ws.rs.ext;version=ā€œ[2.0.0,3.0.0)ā€

Hi Atlassian,

I’m getting the following stack trace on a Jira v10.0.0-m0008#10000002-sha1:45a492b (with the v10.0.0-m0005#10000002-sha1:ff51c61 I don’t get errors)

When the app enables after installing it:

2024-07-22 11:06:14,974+0000 http-nio-8080-exec-4 ERROR admin 666x3461x1 1ixk8qr 178.24.138.34,10.2.215.7 /rest/de.resolution.apitokenauth/1.0/reconfigure/heartbeat/admin [c.a.plugin.servlet.DefaultServletModuleManager] Unable to create new reference LazyLoadedFilterReference{descriptor=de.resolution.apitokenauth.jira:apitokenauth-rest-filter (Provides REST resources for the configuration), filterConfig=com.atlassian.plugin.servlet.filter.PluginFilterConfig@18ad7a58}
io.atlassian.util.concurrent.LazyReference$InitializationException: A MultiException has 2 exceptions.  They are:
1. java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: com.fasterxml.jackson.module.paramnames.ParameterNamesModule not a subtype
2. java.lang.IllegalStateException: Unable to perform operation: create on com.atlassian.plugins.rest.v2.jersey.RestJacksonJaxbJsonProvider

Whenever I try to access one of our REST resources:

2024-07-22 12:20:57,361+0000 http-nio-8080-exec-17 ERROR admin 740x5680x1 1ixk8qr 178.24.138.34,10.2.215.7 /rest/de.resolution.apitokenauth/1.0/reconfigure/heartbeat/admin [c.a.plugin.servlet.DefaultServletModuleManager] Unable to create new reference LazyLoadedFilterReference{descriptor=de.resolution.apitokenauth.jira:apitokenauth-rest-filter (Provides REST resources for the configuration), filterConfig=com.atlassian.plugin.servlet.filter.PluginFilterConfig@18ad7a58}
io.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
	at io.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:156)
	at io.atlassian.util.concurrent.LazyReference.get(LazyReference.java:116)
	at com.atlassian.plugin.servlet.DefaultServletModuleManager.getInstance(DefaultServletModuleManager.java:432)
	at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilter(DefaultServletModuleManager.java:425)
	at com.atlassian.plugin.servlet.DefaultServletModuleManager.getFilters(DefaultServletModuleManager.java:290)
	at com.atlassian.plugins.rest.v2.servlet.DefaultRestServletModuleManager.getFilters(DefaultRestServletModuleManager.java:209)
	... 15 filtered
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:28)
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:41)
	... 23 filtered
	at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:57)
	... 8 filtered
	at com.atlassian.jira.plugin.mobile.web.filter.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:59)
	... 4 filtered
	at com.atlassian.jira.plugin.mobile.login.MobileLoginSuccessFilter.doFilter(MobileLoginSuccessFilter.java:54)
	... 3 filtered
	at com.atlassian.diagnostics.internal.platform.monitor.http.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:54)
	... 8 filtered
	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
	... 4 filtered
	at com.atlassian.app.usage.core.features.user.interaction.servlet.filter.CapturingServletFilter.doFilter(CapturingServletFilter.kt:38)
	... 3 filtered
	at com.atlassian.app.usage.core.features.common.usage.rest.filter.CapturingRestFilter.doFilter(CapturingRestFilter.kt:36)
	... 23 filtered
	at de.resolution.userdeactivator.servlet.filter.AbstractSingleExecutionFilter.doFilter(AbstractSingleExecutionFilter.java:55)
	... 23 filtered
	at com.atlassian.theme.filter.DefaultRequestOverrideServletFilter.doFilter(DefaultRequestOverrideServletFilter.java:77)
	... 3 filtered
	at com.atlassian.oauth2.scopes.web.ReadWriteScopeFilter.doFilter(ReadWriteScopeFilter.java:48)
	... 3 filtered
	at com.atlassian.ratelimiting.internal.filter.RateLimitFilter.doFilter(RateLimitFilter.java:77)
	... 3 filtered
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	... 23 filtered
	at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:68)
	... 1 filtered
	at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:66)
	... 18 filtered
	at com.atlassian.pats.web.filter.TokenBasedAuthenticationFilter.doFilter(TokenBasedAuthenticationFilter.java:84)
	... 3 filtered
	at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.doFilter(AccessTokenFilter.java:84)
	... 19 filtered
	at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:32)
	... 5 filtered
	at com.atlassian.plugins.authentication.sso.web.filter.loginform.DisableNativeLoginAuthFilter.doFilter(DisableNativeLoginAuthFilter.java:55)
	... 3 filtered
	at com.atlassian.plugins.authentication.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:74)
	... 3 filtered
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:224)
	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:136)
	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:89)
	at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:57)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:215)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:143)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:132)
	... 4 filtered
	at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:39)
	... 8 filtered
	at com.atlassian.ratelimiting.internal.filter.RateLimitPreAuthFilter.doFilter(RateLimitPreAuthFilter.java:74)
	... 3 filtered
	at com.atlassian.web.servlet.plugin.ThreadIdFilter.doFilter(ThreadIdFilter.java:19)
	... 4 filtered
	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
	... 4 filtered
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	... 3 filtered
	at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
	... 3 filtered
	at de.resolution.apitokenauth.platform.auth.other.ApiTokenAuthenticationFilter.doFilter(ApiTokenAuthenticationFilter.java:75)
	... 7 filtered
	at de.resolution.apitokenauth.platform.auth.other.ApiTokenRequestGuard.doFilter(ApiTokenRequestGuard.java:241)
	... 3 filtered
	at de.resolution.apitokenauth.platform.auth.other.ApiTokenRateLimiterFilter.doFilter(ApiTokenRateLimiterFilter.java:114)
	... 24 filtered
	at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:27)
	... 25 filtered
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IllegalStateException: The resource configuration is not modifiable in this context.
	at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:249)
	at org.glassfish.jersey.server.ResourceConfig$ImmutableState.register(ResourceConfig.java:196)
	at org.glassfish.jersey.server.ResourceConfig.register(ResourceConfig.java:429)
	at org.glassfish.jersey.servlet.WebComponent.<init>(WebComponent.java:306)
	at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:154)
	at org.glassfish.jersey.servlet.ServletContainer.init(ServletContainer.java:386)
	at com.atlassian.plugins.rest.v2.servlet.RestDelegatingServletFilter.initServletContainer(RestDelegatingServletFilter.java:105)
	at com.atlassian.plugins.rest.v2.servlet.RestDelegatingServletFilter.init(RestDelegatingServletFilter.java:73)
	... 1 filtered
	at com.atlassian.plugin.servlet.DefaultServletModuleManager$LazyLoadedFilterReference.create(DefaultServletModuleManager.java:501)
	at com.atlassian.plugin.servlet.DefaultServletModuleManager$LazyLoadedFilterReference.create(DefaultServletModuleManager.java:488)
	at io.atlassian.util.concurrent.LazyReference$Sync.run(LazyReference.java:332)
	at io.atlassian.util.concurrent.LazyReference.getInterruptibly(LazyReference.java:150)
	... 333 more

All my REST Resources are already annotated with @Inject and not @Autowired anymore.
I also added @UnrestrictedAccess to the app’s servlet filters and replaced @Autowired with @Inject. But since I made these latter changes only to fix the problem, and they didn’t solve it, I’m sure there’s something else going on.

What can I do now? @FilipNowak

Hi!

Please make sure you have jackson-databind, jackson-core, and jackson-annotations in provided scope and necessary packages coming from them are imported via OSGi.

1. java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: com.fasterxml.jackson.module.paramnames.ParameterNamesModule not a subtype

indicates it might not be the case.

I haven’t met with:

2. java.lang.IllegalStateException: Unable to perform operation: create on com.atlassian.plugins.rest.v2.jersey.RestJacksonJaxbJsonProvider

yet, are you trying to instantiate it in your plugin or something like that?

1 Like

@FilipNowak

Please make sure you have jackson-databind , jackson-core , and jackson-annotations in provided scope and necessary packages coming from them are imported via OSGi.

We have them with compile scope, and this wasn’t a problem with the EAP before.
We also tried using provided but that didn’t fix it.

java.lang.IllegalStateException: Unable to perform operation: create on com.atlassian.plugins.rest.v2.jersey.RestJacksonJaxbJsonProvider
→
are you trying to instantiate it in your plugin or something like that?

Not that I know. I think the root cause will be tricky to find; I was more or less hoping that you know what changed in the latest EAP compared to the one before.

In m0005 we used atlassian-rest 7.2.19 whereas in m0008 we already use 8.0.3 and RESTv1 subsystem is removed from Jira.

We also tried using provided but that didn’t fix it.

You can make sure if the packages are indeed imported by your plugin in the OSGi browser: <jira_address>/plugins/servlet/upm/osgi

Hi Atlassian Team,

When creating a project, you can see the following error in the logs (top menu → Projects → Create project) - the project itself is created correctly.

Version: m0008

2024-07-24 07:47:12,701+0200 http-nio-2990-exec-18 url: /jira/rest/project-templates/1.0/templates; user: admin ERROR admin 647x72750x1 ynfy24 0:0:0:0:0:0:0:1 /rest/project-templates/1.0/templates [c.a.event.internal.AsynchronousAbleEventDispatcher] There was an exception thrown trying to dispatch event [com.atlassian.jira.event.ProjectCreatedEvent@24af91f2] from the invoker [com.atlassian.event.internal.ComparableListenerInvoker@60dde432]
java.lang.RuntimeException: Index: 6, Size: 5. Listener: com.atlassian.jira.plugins.initialwatchers.InitialWatchersSetup event: com.atlassian.jira.event.ProjectCreatedEvent
	at com.atlassian.event.internal.SingleParameterMethodListenerInvoker.invoke(SingleParameterMethodListenerInvoker.java:53)
	at com.atlassian.diagnostics.internal.platform.monitor.event.EventSystemMonitor.invokeMonitored(EventSystemMonitor.java:105)
	at com.atlassian.diagnostics.internal.platform.monitor.event.MonitoredListenerInvoker.invoke(MonitoredListenerInvoker.java:38)
	at com.atlassian.event.internal.ComparableListenerInvoker.invoke(ComparableListenerInvoker.java:48)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.lambda$static$0(AsynchronousAbleEventDispatcher.java:37)
	at com.atlassian.event.internal.AsynchronousAbleEventDispatcher.dispatch(AsynchronousAbleEventDispatcher.java:85)
	at com.atlassian.diagnostics.internal.platform.monitor.event.MonitoredEventDispatcher.dispatch(MonitoredEventDispatcher.java:36)
	at com.atlassian.event.internal.EventPublisherImpl.publish(EventPublisherImpl.java:102)
	at com.atlassian.jira.event.project.DefaultProjectEventManager.dispatchProjectCreated(DefaultProjectEventManager.java:44)
	at com.atlassian.jira.bc.project.DefaultProjectService.createProjectInternal(DefaultProjectService.java:381)
	at com.atlassian.jira.bc.project.DefaultProjectService.createProject(DefaultProjectService.java:350)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at com.atlassian.plugin.util.ContextClassLoaderSettingInvocationHandler.invoke(ContextClassLoaderSettingInvocationHandler.java:26)
	at jdk.proxy3/jdk.proxy3.$Proxy143.createProject(Unknown Source)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at com.atlassian.plugin.osgi.bridge.external.HostComponentFactoryBean$DynamicServiceInvocationHandler.invoke(HostComponentFactoryBean.java:130)
	at jdk.proxy3/jdk.proxy3.$Proxy143.createProject(Unknown Source)
	at com.atlassian.jira.projecttemplates.service.ProjectTemplateServiceImpl.applyProjectTemplate(ProjectTemplateServiceImpl.java:173)
	at com.atlassian.jira.projecttemplates.rest.ProjectTemplatesResource.createProjectFromFormRequest(ProjectTemplatesResource.java:173)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.base/java.lang.reflect.Method.invoke(Method.java:569)
	at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory.lambda$static$0(ResourceMethodInvocationHandlerFactory.java:52)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:146)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:189)
	at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$ResponseOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:176)
	at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:93)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:478)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:400)
	at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:81)
	at org.glassfish.jersey.server.ServerRuntime$1.run(ServerRuntime.java:256)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:248)
	at org.glassfish.jersey.internal.Errors$1.call(Errors.java:244)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:292)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:274)
	at org.glassfish.jersey.internal.Errors.process(Errors.java:244)
	at org.glassfish.jersey.process.internal.RequestScope.runInScope(RequestScope.java:265)
	at org.glassfish.jersey.server.ServerRuntime.process(ServerRuntime.java:235)
	at org.glassfish.jersey.server.ApplicationHandler.handle(ApplicationHandler.java:684)
	at org.glassfish.jersey.servlet.WebComponent.serviceImpl(WebComponent.java:394)
	at org.glassfish.jersey.servlet.WebComponent.service(WebComponent.java:346)
	at org.glassfish.jersey.servlet.ServletContainer.service(ServletContainer.java:359)
	at com.atlassian.plugins.rest.v2.jersey.JerseyOsgiServletContainer.doFilter(JerseyOsgiServletContainer.java:74)
	at org.glassfish.jersey.servlet.ServletContainer.doFilter(ServletContainer.java:432)
	at com.atlassian.plugins.rest.v2.servlet.RestDelegatingServletFilter.doFilter(RestDelegatingServletFilter.java:80)
	... 17 filtered
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilterInternal(RestServletUtilsUpdaterFilter.java:28)
	at com.atlassian.plugins.rest.v2.servlet.RestServletUtilsUpdaterFilter.doFilter(RestServletUtilsUpdaterFilter.java:41)
	... 23 filtered
	at com.atlassian.servicedesk.internal.web.ExternalCustomerLockoutFilter.doFilter(ExternalCustomerLockoutFilter.java:57)
	... 8 filtered
	at com.atlassian.jira.plugin.mobile.web.filter.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:59)
	... 4 filtered
	at com.atlassian.jira.plugin.mobile.login.MobileLoginSuccessFilter.doFilter(MobileLoginSuccessFilter.java:54)
	... 3 filtered
	at com.atlassian.diagnostics.internal.platform.monitor.http.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:54)
	... 8 filtered
	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
	... 4 filtered
	at com.atlassian.app.usage.core.features.user.interaction.servlet.filter.CapturingServletFilter.doFilter(CapturingServletFilter.kt:38)
	... 3 filtered
	at com.atlassian.app.usage.core.features.common.usage.rest.filter.CapturingRestFilter.doFilter(CapturingRestFilter.kt:36)
	... 23 filtered
	at com.atlassian.labs.httpservice.resource.ResourceFilter.doFilter(ResourceFilter.java:59)
	... 22 filtered
	at com.atlassian.theme.filter.DefaultRequestOverrideServletFilter.doFilter(DefaultRequestOverrideServletFilter.java:77)
	... 3 filtered
	at com.atlassian.oauth2.scopes.web.ReadWriteScopeFilter.doFilter(ReadWriteScopeFilter.java:48)
	... 3 filtered
	at com.itlab.jira.plugins.extender.FilterContextUser.doFilter(FilterContextUser.java:226)
	... 4 filtered
	at com.atlassian.ratelimiting.internal.filter.RateLimitFilter.doFilter(RateLimitFilter.java:77)
	... 3 filtered
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	... 23 filtered
	at com.atlassian.jira.security.JiraSecurityFilter.lambda$doFilter$0(JiraSecurityFilter.java:68)
	... 1 filtered
	at com.atlassian.jira.security.JiraSecurityFilter.doFilter(JiraSecurityFilter.java:66)
	... 18 filtered
	at com.atlassian.pats.web.filter.TokenBasedAuthenticationFilter.doFilter(TokenBasedAuthenticationFilter.java:84)
	... 3 filtered
	at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.doFilter(AccessTokenFilter.java:84)
	... 19 filtered
	at com.atlassian.jira.servermetrics.CorrelationIdPopulatorFilter.doFilter(CorrelationIdPopulatorFilter.java:32)
	... 7 filtered
	at com.atlassian.plugins.authentication.sso.web.filter.loginform.DisableNativeLoginAuthFilter.doFilter(DisableNativeLoginAuthFilter.java:55)
	... 3 filtered
	at com.atlassian.plugins.authentication.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:74)
	... 3 filtered
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.lambda$invokeFilterChain$0(CustomerContextSettingFilter.java:224)
	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.rteInvoke(ReentrantThreadLocalBasedCodeContext.java:136)
	at com.atlassian.servicedesk.internal.api.util.context.ReentrantThreadLocalBasedCodeContext.runOutOfContext(ReentrantThreadLocalBasedCodeContext.java:89)
	at com.atlassian.servicedesk.internal.utils.context.CustomerContextServiceImpl.runOutOfCustomerContext(CustomerContextServiceImpl.java:57)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.outOfCustomerContext(CustomerContextSettingFilter.java:215)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilterImpl(CustomerContextSettingFilter.java:143)
	at com.atlassian.servicedesk.internal.web.CustomerContextSettingFilter.doFilter(CustomerContextSettingFilter.java:132)
	... 4 filtered
	at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:39)
	... 8 filtered
	at com.atlassian.ratelimiting.internal.filter.RateLimitPreAuthFilter.doFilter(RateLimitPreAuthFilter.java:74)
	... 3 filtered
	at com.atlassian.web.servlet.plugin.ThreadIdFilter.doFilter(ThreadIdFilter.java:19)
	... 4 filtered
	at com.atlassian.web.servlet.plugin.request.RedirectInterceptingFilter.doFilter(RedirectInterceptingFilter.java:21)
	... 4 filtered
	at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
	... 3 filtered
	at com.atlassian.web.servlet.plugin.LocationCleanerFilter.doFilter(LocationCleanerFilter.java:36)
	... 26 filtered
	at com.atlassian.jira.servermetrics.MetricsCollectorFilter.doFilter(MetricsCollectorFilter.java:27)
	... 24 filtered
	at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
	at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.IndexOutOfBoundsException: Index: 6, Size: 5
	at java.base/java.util.ArrayList.rangeCheckForAdd(ArrayList.java:756)
	at java.base/java.util.ArrayList.add(ArrayList.java:481)
	at com.atlassian.jira.issue.fields.screen.FieldScreenTabImpl$LayoutItems.add(FieldScreenTabImpl.java:230)
	at com.atlassian.jira.issue.fields.screen.FieldScreenTabImpl.addFieldScreenLayoutItem(FieldScreenTabImpl.java:133)
	at com.atlassian.jira.plugins.initialwatchers.InitialWatchersSetup.lambda$addCustomField$1(InitialWatchersSetup.java:115)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
	at java.base/java.util.stream.Streams$StreamBuilderImpl.forEachRemaining(Streams.java:411)
	at java.base/java.util.stream.ReferencePipeline$Head.forEach(ReferencePipeline.java:762)
	at java.base/java.util.stream.ReferencePipeline$7$1.accept(ReferencePipeline.java:276)

Cheers
Adam

Hi @j.borrmann

to follow up your discussion with @FilipNowak :

Exception

1. java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: com.fasterxml.jackson.module.paramnames.ParameterNamesModule not a subtype

is most probably caused by duplicated jackson code in the plugin. It may be one of the root jackson libraries as @FilipNowak suggested. However, it can be also a specific module that provides ParameterNamesModule - jackson-module-parameter-names.

Please double check your dependencies. I recommend:

  1. run mvn dependency:tree - transitive compile dependencies also matter and you may depend on jackson even without explicitly defining it
  2. unzip jar of your plugin and ensure there is no jackson copied there - it may be also included as a separate jar in META-INF/lib directory inside your jar
  3. check Import-Package header in META-INF/MANIFEST.MF file inside plugin’s jar to check what jackson packages are imported

Exception

2. java.lang.IllegalStateException: Unable to perform operation: create on com.atlassian.plugins.rest.v2.jersey.RestJacksonJaxbJsonProvider

most probably is simply caused by the first issue. RestJacksonJaxbJsonProvider is responsible for creating Jackson ObjectMapper - probably that code threw the first exception.

The second exception you presented:

io.atlassian.util.concurrent.LazyReference$InitializationException: java.lang.IllegalStateException: The resource configuration is not modifiable in this context.

It is most probably a result of that first exception. REST context is initialized on the first call to an endpoint. If it fails, the context object is changed to failed (unmodifiable) state. Subsequent calls to an endpoint try to initialize the failed context and since it is unmodifiable - an exception is thrown.

Fixing the original issue, will resolve that one.

2 Likes

Hi @MarekTokarski, thanks for your detailed reply. Just a few minutes ago, I was able to fix the issue using a parent POM that is already used in other apps that were working with the latest Jira 10 EAP. While I’m not sure which dependency definitions (and/ or exclusions in one of these) were the culprit, this is good news for now because I know it only happened due to dependency issues and not somewhere in the codebase itself.

I’ll update the thread again in case I find some more details on the error.

1 Like

thanks Adam, we’ll look into it although we have not encountered this in our testing while creation of software or business projects. Is there anything out of ordinary on your test instance with this popping out or is it just vanilla m0008?

Also does it happen always when you create one?

1 Like

Hi @AndrzejKotas

I checked it on the vanilla version m0008 and in fact this error does not occur.
Previously, I verified on the version where I restored data from the XML file from version 9.17.0.

Thanks for verifying

Cheers
Adam

1 Like

Hi @FilipNowak,

What we want to achieve with Jackson and REST v2:

  • support for java.time classes. It can be achieved by adding jackson-datatype-jsr310 package to plugin classpath, but we want to disable WRITE_DATES_AS_TIMESTAMPS feature to have more conventional data formats, which is currently impossible to change. Currently we would have to resort to implement our own module with custom de/serializers.
  • identical ObjectMapper for non-REST usage. Currently, the only way is to replicate code from REST v2 which instantiates ObjectMapper, it also requires us to bundle jackson-module-jaxb-annotations as it’s currently not included in platform exports.

To help us understand the direction to invest our time in, can you clarify if we can expect any of these things to be achievable before GA in a cleaner way, or should we start to work around the current implementations?

Hi!

  • There is no way to override the jackson settings for REST behaviour, using your your own serializers/deserializers is currently the only way to achieve that.
  • You can use com.atlassian.plugins.rest.api.json.JaxbJsonMarshaller from atlassian-rest-v2-api for serializing. However, there’s indeed no deserializer counterpart.