Preparing for Jira 10.4
This documentation is intended for Jira developers who want to ensure that their existing apps are compatible with Jira Software Data Center 10.4 and Jira Service Management Data Center 10.4.
We've moved the communication about Jira Software Data Center and Jira Service Management Data Center development releases to this page. With this transition, we aim to provide partners and developers with a single source of information about improvements and changes to our products.
You can continue using the Atlassian Developer community for discussion and support. For archive release announcements, check out our changelog.
Latest version
Here you can find information about the latest EAPs.
Application | Date | Number | Version (Maven) | Downloads |
---|---|---|---|---|
Jira Software |
| 10.4.0-EAP02 | 10.4.0-m0002 | |
Jira Service Management |
| 10.4.0-EAP02 | 10.4.0-m0002 |
Summary of changes
This section provides an overview of the changes we intend to make so that you can start thinking about their impact on your apps. Once the updates are ready, we'll indicate when they’ve been implemented and in which milestone.
Jira Software and Jira Service Management common features
Moving away from Pico
Status: IMPLEMENTED (EAP 01)
We’re removing the Pico technology and standardizing on Spring across the board. This change is designed to have no impact on P2 plugins or change the composition of services available in OSGi. Additionally, we’ve ensured that ComponentAccessor
maintains its existing contract. We’re also removing the Pico explicit code from the internal com.atlassian.jira.component.pico
package and some of these changes are still pending. Join our community discussion regarding moving away from Pico
This update doesn’t require any changes in Jira Software, Jira Service Management, or any of our in-house bundled apps.
Customize the order of issue link types
Status: IMPLEMENTED (EAP 01)
Admins can now customize the order of issue link types. We’ve introduced two sorting methods:
- Drag and drop: Rearrange the order directly in the issue link type table.
- Sort alphabetically: Use the dropdown menu to sort in ascending or descending order.
Additionally, we’ve introduced two API resources for these operations within the Issue Link Type API group:
- [PUT] /api/2/issueLinkType/{issueLinkTypeId}/order
- [PUT] /api/2/issueLinkType/order
Note that if you have a large number of issue link types, the page may become slow or even unresponsive. In this case, you can disable the feature by adding com.atlassian.jira.issuelinkingtypes.customiseorder
to the list in the DarkSiteFeatures page.
Preparing for OpenSearch
Status: IMPLEMENTED (EAP 02)
We’re adding an abstraction layer to Jira's search functionality that will help us remove Lucene from the public APIs. This change is setting the stage for future OpenSearch support. The search and indexing performance will remain consistent with the existing Lucene implementation, ensuring a smooth transition. We’re actively working on the new API details that we’ll share with you soon.
New Jira Stats logging location
Status: IMPLEMENTED (EAP 02)
Starting from Jira 10.4.0, Jira Stats will be logged to atlassian-jira-stats.log
instead of atlassian-jira.log
. This is configured by the log4j2.xml
properties. Learn more about logging in Jira
Tools like Splunk, Grafana, Logstash, Kibana, or any other that rely on Jira Stats must be adapted to the new file location. If the log4j2.xml
configuration file is overridden, adapt it manually:
<JiraHomeAppender name="jirastatslog"
fileName="atlassian-jira-stats.log"
filePattern="atlassian-jira-stats.log.%i">
<PatternLayout alwaysWriteExceptions="false">
<Pattern>${StackTraceFilteringPattern}</Pattern>
</PatternLayout>
<Policies>
<SizeBasedTriggeringPolicy size="20480 KB"/>
</Policies>
<DefaultRolloverStrategy fileIndex="min" max="10"/>
</JiraHomeAppender>
(...)
<!-- #####################################################-->
<!-- # Jira Stats logging-->
<!-- #####################################################-->
<!-- # on INFO logs queue stats per node, on DEBUG logs queue stats per queue-->
<Logger name="com.atlassian.jira.cluster.distribution.localq.LocalQCacheManager" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.cluster.dbr.DBRSenderStats$TotalAndSnapshotDBRSenderStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.cluster.dbr.DBRReceiverStats$TotalAndSnapshotDBRReceiverStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.WriterWithStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.versioning.EntityVersioningManagerWithStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.issue.index.IndexingStatsManager" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.MonitoringIndexWriter" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.ha.ReIndexStatsLogger" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.ha.ReplicationStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.plugin.PluginTransactionListener" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.propertyset.TotalAndSnapshotPropertyEntryStoreStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.ha.TotalAndSnapshotIndexRepairStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.QueueingIndexStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<!-- # Cluster Authentication stats-->
<Logger name="com.atlassian.jira.cluster.distribution.localq.rmi.auth.ClusterAuthStatsManager" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.index.stats.TotalAndSnapshotIndexSearcherStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
<Logger name="com.atlassian.jira.util.stats.JiraStats" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>
If you add a new custom JiraStat and it doesn't use the JiraStats.create(…), then you must also add the custom logger from this class as:
<Logger name="logger_name_usually_a_package_and_classname" level="INFO" additivity="false">
<AppenderRef ref="jirastatslog"/>
</Logger>