Announcing Data Center Platform 7.0. Next step to improve our security posture

For reference to the Atlassians who may be collecting feedback on this thread, what @KsaweryBuczkowski is referring to is the fact that the out-of-the-box AMPS does not work to build (for example) Confluence 8.8+ apps, or anything else depending on the new platform. This is because vendors are now required to bundle artifacts that were previously system-provided, but the default AMPS configuration actively prevents developers from bundling these (meaning the build fails), unless certain exceptions are added to the POM.

In short, the provided tooling doesn’t even work unless one dives into various CDAC threads to figure out how to fix it.

Specific details are in @aragot’s post here.

6 Likes

Well that’s a bit of the point, if Atlassian eats their own food they will discover such problems, so I would very much want to see an example app that uses multiple dependencies that are being deprecated (wrong or not) so it will fail when they attempt to run it on f. eks. Confluence 9 EAP.
I think it’s a minimum requirement to do these kind of proof of concept inhouse before you announce it to the ecosystem.

4 Likes

Yes, I had to mod the AMPS:

    <groupId>com.atlassian.amps</groupId>
    <artifactId>atlassian-amps-parent</artifactId>
    <version>8.13.1-SNAPSHOT</version>

And change the list:
com.atlassian.maven.plugins.amps.BannedDependencies#PLATFORM_DEPENDENCIES
In order to get a build, I would think it’s much better if that was provided so each vendor doesn’t have to do this.

OK and what about JS changes.
In the console I can see:
Use of window._ through AUI is deprecated and will be removed in AUI 10.0.0
Use of window.Backbone through AUI is deprecated and will be removed in AUI 10.0.0
DEPRECATED JS - JQuery.fn.spinStop has been deprecated since 7.9.4 and will be removed in 10.0.0. Use instead.
DEPRECATED undefined - AJS.params has been deprecated since 9.0.0 and will be removed in 10.0.0.
DEPRECATED JS - PopulateParameters has been deprecated since 9.0.0 and will be removed in 10.0.0.
DEPRECATED JS - Inline dialog constructor has been deprecated and will be removed in a future release. Use inline dialog 2 instead.
So do you plan to change frontend implementation technology, structure, or something?
Any plans to migrate boards or issue search navigator to react or new components?

@MalathiVangalapati or @MarekTokarski Can we expect a response regarding the various messages present in the browser console related to JavaScript?

Fabien [Elements]

3 Likes

Hey,

We’re not looking to do AUI 10 in Platform 7. It may come for Platform 8, but there will be a heads up, consultation, etc. Please do address all of those warnings if they’re a result of the plugin you’re working on, some of the warnings are a result of our own products’ code too. It’s likely that focusing on Platform 7 / the next major version [of whatever products you support] is more important to you though.

Internally we’ll route questions to the right team for you, but if you’d like a faster answer about AUI, it’s best to tag me or put the “aui” label on a new topic (if you make one)

4 Likes

Appreciated this! I just have a question wish I could get some help from anyone here. As what this post guided, we started to opt-in the platform 6.5 changes by adding the dependency to ensure our application continue work with Confluence 8.8:

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-public-api</artifactId>
                <version>${platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
                <exclusions>
                    <exclusion>
                        <groupId>com.atlassian.crowd</groupId>
                        <artifactId>crowd-events</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.atlassian.platform.dependencies</groupId>
                <artifactId>platform-deprecated-public-api</artifactId>
                <version>${platform.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

The version of the Confluence we test with the changes is v8.8.0-rc1, we get a org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txTemplate' error when installing our plugin in, here is the full stacktrace:

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'txTemplate': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalArgumentException: org.springframework.core.InfrastructureProxy referenced from a method is not visible from class loader
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:176)
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:101)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1884)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getObjectForBeanInstance(AbstractAutowireCapableBeanFactory.java:1284)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:267)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:208)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:950)
	at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:918)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.access$1600(AbstractDelegatedExecutionApplicationContext.java:57)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext$4.run(AbstractDelegatedExecutionApplicationContext.java:322)
	at org.eclipse.gemini.blueprint.util.internal.PrivilegedUtils.executeWithCustomTCCL(PrivilegedUtils.java:85)
	at org.eclipse.gemini.blueprint.context.support.AbstractDelegatedExecutionApplicationContext.completeRefresh(AbstractDelegatedExecutionApplicationContext.java:287)
	at org.eclipse.gemini.blueprint.extender.internal.dependencies.startup.DependencyWaiterApplicationContextExecutor$CompleteRefreshTask.run(DependencyWaiterApplicationContextExecutor.java:137)
	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
	at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalArgumentException: org.springframework.core.InfrastructureProxy referenced from a method is not visible from class loader
	at java.base/java.lang.reflect.Proxy$ProxyBuilder.ensureVisible(Proxy.java:858)
	at java.base/java.lang.reflect.Proxy$ProxyBuilder.validateProxyInterfaces(Proxy.java:681)
	at java.base/java.lang.reflect.Proxy$ProxyBuilder.<init>(Proxy.java:627)
	at java.base/java.lang.reflect.Proxy.lambda$getProxyConstructor$1(Proxy.java:426)
	at java.base/jdk.internal.loader.AbstractClassLoaderValue$Memoizer.get(AbstractClassLoaderValue.java:329)
	at java.base/jdk.internal.loader.AbstractClassLoaderValue.computeIfAbsent(AbstractClassLoaderValue.java:205)
	at java.base/java.lang.reflect.Proxy.getProxyConstructor(Proxy.java:424)
	at java.base/java.lang.reflect.Proxy.newProxyInstance(Proxy.java:1006)
	at org.springframework.aop.framework.JdkDynamicAopProxy.getProxy(JdkDynamicAopProxy.java:126)
	at org.springframework.aop.framework.ProxyFactory.getProxy(ProxyFactory.java:110)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:68)
	at org.eclipse.gemini.blueprint.service.util.internal.aop.ProxyUtils.createProxy(ProxyUtils.java:37)
	at org.eclipse.gemini.blueprint.service.importer.support.AbstractServiceProxyCreator.createServiceProxy(AbstractServiceProxyCreator.java:105)
	at org.eclipse.gemini.blueprint.service.importer.support.OsgiServiceProxyFactoryBean.createProxy(OsgiServiceProxyFactoryBean.java:176)
	at org.eclipse.gemini.blueprint.service.importer.support.AbstractServiceImporterProxyFactoryBean.getObject(AbstractServiceImporterProxyFactoryBean.java:95)
	at org.eclipse.gemini.blueprint.service.importer.support.OsgiServiceProxyFactoryBean.getObject(OsgiServiceProxyFactoryBean.java:122)
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:169)
	... 15 more

The bean that error referring to is this:

<component-import key="txTemplate" interface="com.atlassian.sal.api.transaction.TransactionTemplate"/>

Seems like com.atlassian.sal.api is not accessible at runtime, is anyone have any idea about what’s happening here?

The package marked as CHANGED in the list, could it mean the restriction of com.atlassian.sal.api has changed and is no longer accessible publicly?

Any help would be highly appreciated!
Thanks.

@Leon, not directly related to com.atlassian.sal.api, but seeing that you’re still using <component-import> – aka. old-school “transformed” plugins and not using Spring-Scanner or similar techniques:
I urge you to take a look at the findings on Preparing for Confluence 9.0 - EAP coming soon - #43 by AndreasEbert
In short: I’m afraid the old-school way won’t work anymore → We/you have to switch to Spring-Scanner (or similar techniques).

Hi @Leon

We don’t plan to make any changes to the visibility of SAL API right now. You can find the full list of changes for SAL in Bitbucket

As @AndreasEbert mentioned trying to use newer techniques and create “transformless” plugin may help in this specific case.

2 Likes

Hi :wave:

We reviewed the original list of third-party dependencies we wanted to remove in Platform 7. Finally, we made the decision to export Jackson 2 components to the Plugin System:

  • com.fasterxml.jackson.core:jackson-annotations
  • com.fasterxml.jackson.core:jackson-core
  • com.fasterxml.jackson.core:jackson-databind

For more information and/or discussion, please use Platform 7 will contain exports of Jackson 2

4 Likes

I did a bit of spelunking. My favorite was DCPL-320 Milestone 3: Migration guide (won’t do).

2 Likes

Hi There,
Can anyone tell me what are the dependency related changes requires in JSW datacenter plugin to make it compatible with jira EAP v10 ?

Thanks.

Hi @riteshshah

In general a plugin needs to update its API usages. Please refer to the https://developer.atlassian.com/platform/marketplace/dc-apps-platform-7/ to find out what API has changed. Perhaps the most notable change is migration to REST v2, that is also described on the page.

JSW may prepare their own changes. To have the full information what you need to do, I would recommend checking Preparing for Jira Software 10.0 and Jira Service Management 6.0 - multiple EAPs coming your way and perhaps asking question there.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.