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

This is really hacky, and depends on the provider knowing an exact module key. I don’t think that will work for us because we are generating modules dynamically, with differing keys, there is no single fixed key.

We could maybe do some kind of ugly hack on top of this, but we’d prefer if WebItemProvider was expanded to allow access to parameters.

We only use this module type in Jira, which is why we haven’t flagged this earlier in the platform 7 cycle.

I second what @rlander mentioned. We do not know the key beforehand, so I do not think this option will work for us.

In our use case, we need to use a single WebItemProvider class for every web item provider XML block we register via Dynamic Modules; our users can create many Web Item Provider entries, each for a different key, section/location and with a custom script that generates WebItems set as an XML param.

For each Web Item Provider definition in the atlassian-plugin.xml that uses our single WebItemProvider class, we need a script to be set as an XML parameter so that when the Web Item Provider com.atlassian.plugin.web.api.provider.WebItemProvider#getItems method is triggered, we can get that script from the params and then run it to generate the web items that the getItems method needs to return.

I note your idea on getting the WebItemProviderModuleDescriptor using pluginAccessor.getEnabledModuleDescriptorsByClass and then using a known key for the particular WebItemProvider XML entry. However, the getItems method is triggered when a user activates a particular section in the UI to cause it to render. At that point, I will not know what WebItemProvider XML entry triggered it, so I will not know what WebItemProvider XML Key entry to look for.

I need a way to get the script param for a particular XML entry via the com.atlassian.plugin.web.api.provider.WebItemProvider#getItems method. This means I need something in the context of that method to identify the WebItemProviderModuleDescriptor I need to get.

@Clark @rlander Thanks for providing more details around your use case. I’ll share the problem with the team again and have a look myself but I would prefer to wait for @mkemp before making any architectural changes. He’ll be back on Tuesday.

2 Likes

I just tested this on the latest Jira 10 EAP again.

For the admin user, I can click Details, Edit Groups, and Delete. It shows the popup and the correct menu.

Then I created a new user via the UI, and for this user, only the spinner appears when clicking Details, Edit Group, or Delete.

Since I am on Firefox, I also tested with Chrome—the same issue.

In web-item we can define an icon using the <icon> tag, is there any additional tag/possibility to define an icon for the dark theme separately?

Yes, I know this can be handled with css, but I wonder if it can be done in the atlassian-plugin.xml file.

I just started atlassian/jira-software:10.0.0-EAP08-ubuntu-jdk17 with PostgreSQL 15.4 dockerized. (I had this setup running with all EAPs before and just updated the image).

Now I get this error (unrelated to my app) and Jira won’t start up.

Cannot invoke "org.apache.felix.framework.Felix.getBundleContext()" because "this.felix" is null


    Database configuration OK

    ___ Database Configuration _________________

         Loading entityengine.xml from                 : file:/opt/atlassian/jira/atlassian-jira/WEB-INF/classes/entityengine.xml
         Entity model field type name                  : postgres72
         Entity model schema name                      : public
         Database Version                              : PostgreSQL - 15.4
         Database Driver                               : PostgreSQL JDBC Driver - 42.7.3
         Database URL                                  : jdbc:postgresql://192.168.178.66:5432/jira
         Database JDBC config                          : postgres72 jdbc:postgresql://192.168.178.66:5432/jira

2024-08-11 07:45:01,050+0000 JIRA-Bootstrap INFO      [c.a.jira.startup.JiraStartupLogger]

    ___ Starting the JIRA Plugin System _________________

2024-08-11 07:45:01,287+0000 JIRA-Bootstrap ERROR      [c.a.secrets.service.SecretConfigManager] Secret service configuration file is invalid, review the secrets-config.yaml file.
2024-08-11 07:45:02,211+0000 JIRA-Bootstrap ERROR      [c.a.jira.upgrade.PluginSystemLauncher] A fatal error occured during initialisation. JIRA has been locked.
com.atlassian.jira.InfrastructureException: Error occurred while starting Plugin Manager. Cannot invoke "org.apache.felix.framework.Felix.getBundleContext()" because "this.felix" is null
	at com.atlassian.jira.component.pico.ComponentManager$PluginSystem.earlyStartup(ComponentManager.java:706)
	at com.atlassian.jira.component.pico.ComponentManager.earlyStartPluginSystem(ComponentManager.java:252)
	at com.atlassian.jira.upgrade.PluginSystemLauncher.start(PluginSystemLauncher.java:48)
	at com.atlassian.jira.startup.DefaultJiraLauncher.lambda$postDbLaunch$2(DefaultJiraLauncher.java:153)
	at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrEnqueue(DatabaseConfigurationManagerImpl.java:305)
	at com.atlassian.jira.config.database.DatabaseConfigurationManagerImpl.doNowOrWhenDatabaseActivated(DatabaseConfigurationManagerImpl.java:202)
	at com.atlassian.jira.startup.DefaultJiraLauncher.postDbLaunch(DefaultJiraLauncher.java:144)
	at com.atlassian.jira.startup.DefaultJiraLauncher.lambda$start$0(DefaultJiraLauncher.java:109)
	at com.atlassian.jira.util.devspeed.JiraDevSpeedTimer.run(JiraDevSpeedTimer.java:31)
	at com.atlassian.jira.startup.DefaultJiraLauncher.start(DefaultJiraLauncher.java:107)
	at com.atlassian.jira.startup.LauncherContextListener.initSlowStuff(LauncherContextListener.java:162)
	at java.base/java.lang.Thread.run(Thread.java:840)
Caused by: java.lang.NullPointerException: Cannot invoke "org.apache.felix.framework.Felix.getBundleContext()" because "this.felix" is null
	at com.atlassian.plugin.osgi.container.felix.FelixOsgiContainerManager.addBundleListener(FelixOsgiContainerManager.java:459)
	at com.atlassian.plugin.osgi.factory.OsgiBundlePlugin.installInternal(OsgiBundlePlugin.java:224)
	at com.atlassian.plugin.impl.AbstractPlugin.install(AbstractPlugin.java:378)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$addPlugins$22(DefaultPluginManager.java:1175)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.addPlugins(DefaultPluginManager.java:1112)
	at com.atlassian.jira.plugin.JiraPluginManager.addPlugins(JiraPluginManager.java:165)
	at com.atlassian.plugin.manager.DefaultPluginManager.lambda$earlyStartup$5(DefaultPluginManager.java:591)
	at com.atlassian.plugin.manager.PluginTransactionContext.wrap(PluginTransactionContext.java:63)
	at com.atlassian.plugin.manager.DefaultPluginManager.earlyStartup(DefaultPluginManager.java:526)
	at com.atlassian.jira.plugin.JiraPluginManager.earlyStartup(JiraPluginManager.java:127)
	at com.atlassian.jira.component.pico.ComponentManager$PluginSystem.earlyStartup(ComponentManager.java:699)
	... 11 more
2024-08-11 07:45:02,410+0000 JIRA-Bootstrap ERROR      [c.a.jira.startup.DefaultJiraLauncher] JIRA has failed to start because of the following errors: [(Event: Level = (EventLevel: fatal) , Key = (EventType: startup-unexpected) , Desc = We couldn't start JIRA , Exception = An error occurred while trying to start JIRA. We can't give you any more detail right now, we suggest checking the logs for more detail and contacting our support team.<br/>See our documentation for more information on contacting our support team and creating a support zip.), (Event: Level = (EventLevel: fatal) , Key = (EventType: database) , Desc = Could not execute health check, DatabaseConfigurationManager not available. , Exception = ]
2 Likes

Hi Everyone,

I started testing EAP08 against our plugin and the plugin is no longer enabled.

I have several errors regarding fugue.

We have it as dependency as following :

       <dependency>
            <groupId>com.atlassian.fugue</groupId>
            <artifactId>fugue</artifactId>
            <version>2.0.0</version>
            <scope>provided</scope>
        </dependency>
Package com.atlassian.fugue is internal and is not available for export to plugin.

Any ideas where the problem might come from.

Kind regards,

Hi, I’m facing issues enabling my plugin on the newest Jira 10 EAP 8.

The error log is as follows:

Unsatisfied dependency expressed through constructor parameter 1; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'compatibilityPluginScheduler': Lookup method resolution failed; nested exception is java.lang.IllegalStateException: Failed to introspect Class [com.atlassian.scheduler.compat.AutoDetectingCompatibilityPluginScheduler] from ClassLoader
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:794)
...
...
Caused by: java.lang.NoClassDefFoundError: com/atlassian/util/concurrent/LazyReference
at java.base/java.lang.Class.getDeclaredMethods0(Native Method)
	at java.base/java.lang.Class.privateGetDeclaredMethods(Class.java:3402)
	at java.base/java.lang.Class.getDeclaredMethods(Class.java:2504)
	at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:467)
	... 34 more
Caused by: java.lang.ClassNotFoundException: com.atlassian.util.concurrent.LazyReference not found by...

Can anyone please shed a light on this matter?

1 Like

Hay, have you adopted your plugin to Platform 7 and dependency management changes in Jira 10?
https://developer.atlassian.com/server/jira/platform/preparing-for-jsw-10-jsm-6/#centralized-dependency-management
https://developer.atlassian.com/server/jira/platform/preparing-for-jsw-10-jsm-6/#upgrade-to-platform-7

Sorry, I was on leave. We’d like to unblock you. Could we know what end-user feature(s) this is powering? I’d like to see if there’s a better or faster way to support what’s happening.

Its this @mkemp: Web Item Provider Built-In Script

1 Like

Hi Team

After converting codehaus to fasterxml all annotation working properly in Jira 10 but in backward version Jira 9. I am getting below error.

org.codehaus.jackson.map.JsonMappingException: No serializer found for class “class name” and no properties discovered to create BeanSerializer (to avoid exception, disable SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS) ) (through reference chain: java.util.ArrayList[0])

I think Jira 9 internally initializing ObjectMapper using codehaus is there any way to resolved this like override initialize ObjectMapper using fasterxml.

Hi there,

I’ve encountered a weird thing with com.atlassian.jira.issue.attachment.StreamAttachmentStore#moveTemporaryToAttachment. Whenever I call, it is stuck. Thread dumps have few items with a state TIMED_WAITING.

Any ideas on how to deal with it, or will it be fixed in the next EAPs/RC ?
I’ve tested it against Jira 10 EAP 08.

Hello there, I tried to run a local instance of 10.0.0-m0010 but i’m unable to even test my app against the new version of Jira. Command atlas-run-standalone does not work, see below:

/usr/share/atlassian-plugin-sdk-8.2.8/apache-maven-3.5.4/bin/mvn com.atlassian.maven.plugins:amps-maven-plugin:8.17.1:run-standalone -gs /usr/share/atlassian-plugin-sdk-8.2.8/apache-maven-3.5.4/conf/settings.xml -Dproduct='jira' -Dproduct.version='10.0.0-m0010' -Damps.version=8.17.1 -Dupm.plugin.upload.enabled=true -Dallow.google.tracking=false -Datlassian.dev.mode=false -X
[...]
[ERROR] Failed to execute goal com.atlassian.maven.plugins:amps-maven-plugin:8.17.1:run-standalone (default-cli) on project standalone-pom: Unable to execute mojo: Execution null of goal org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom failed: A required class was missing while executing org.apache.maven.plugins:maven-help-plugin:3.4.0:effective-pom: org/apache/maven/model/InputLocation$StringFormatter
[...]

Full Log:
atlas-run-standalone.log.txt (167.0 KB)

The cause for the initialization failure is the invalid secrets-config.yaml from the previous EAP version. Delete this file and then restart JIRA. This fixed Jira initialization for me.

Kind regards,
Raimonds

1 Like

and @rlander

Could we please get your feedback on this solution (PR)?

Would y’all be able to compile this locally and use libArtifact in AMPS to try this out?

We’ll get it tested and get it into Jira

1 Like

The PR looks promising for our use case.
I will try this out and get back to you as soon as I can.
Thanks

1 Like

Hi,
Does anyone know if 10.0.0-RC https://developer.atlassian.com/server/jira/platform/preparing-for-jsw-10-jsm-6/ is the same as released yesterday 10.0 https://confluence.atlassian.com/adminjiraserver/upgrade-matrix-966063322.html?
Thanks

Hi @mkemp
The PR you merged should allow us to re-implement our existing feature for platform 7, as far as I can tell. However, I will not know for sure until I try it out.

Given that Jira 10 was released yesterday, are your changes planned for the next Jira release?
We will have to plan when we can start working on re-implementing the feature with the newer atlassian-plugins-webfragment version

Hi I have a WebResourceTransformer that does variable injection on some JS files, but that is now gone on Jira 10 in favor of WebResourceTransformerFactory. Could anyone provide any reference or assistance for doing this replacement? I found the existing guide to be quite vague and most of its links leads to nowhere.