Jira Software 10.4.x release notes

On this page

In this section

Still need help?

The Atlassian Community is here for you.

Ask the community


More

Read the upgrade notes for important info about this release and see the full list of issues resolved.

Compatible applications

If you're looking for compatible Jira applications, look no further: Jira Service Management 10.4 release notes.


Automation queue supportability improvements

For: ADMINS

Sometimes, when the automation queue grows, rule execution can be delayed or remains unexecuted. To enhance the monitoring capabilities of the automation queues, we’re introducing new alerts, metrics, and diagnostic REST endpoints:

  • Alerts will now appear on the Diagnostics page when the unprocessed and unclaimed messages in the automation queue surpass the configurable threshold configurable threshold (defaults to one hour).
  • You can see a new instrumentation and JMX metric (automation.queue.earliest.unprocessed.message.age.secs.max_stale_10mins) that reflects the age of the oldest unprocessed and unclaimed message in the queue.
  • You can use new API endpoints to analyze events and rules that are contributing to the queue growth:
  • GET /rest/cb-automation/latest/insight/automation-queue/by-event-type that retrieves and groups the contents of the automation queue by event type.
  • GET /rest/cb-automation/latest/insight/automation-queue/by-rule that retrieves and groups the contents of the automation queue by rule.
  • GET /rest/cb-automation/latest/insight/audit/by-event-source that analyzes audit logs and groups them by event source for a specified timeframe.

Explore how to monitor automation queues

Rotate your encryption keys like clockwork

For: ADMINS

Jira already automatically encrypts plaintext secrets through default secrets encryption. Now, you can further protect your system through encryption key rotation. Use API calls to re-encrypt your existing secrets with a new key, and to manage your inactive keys. This extra security is available for both single-node and clustered environments. Details on encryption key rotation

Customize the order of issue link types

For: ADMINS

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.

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.


New Jira Stats logging location

For: ADMINS

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

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>


New Search API now available

For: ADMINS

We're laying the foundations for more agnostic option for search tooling, starting with adding an abstraction layer. This change is key to enable future OpenSearch support. The new abstraction layer introduces a new Search API. Search and indexing performance will remain consistent with the existing Lucene implementation. This change also marks the start of our plans to remove Lucene from public APIs. Read the Search API upgrade guide

Resolved issues

See the full list of the issues we’ve resolved throughout the lifecycle of Jira Software 10.4.

Issues resolved in 10.4.0

Released on 22 January 2025

T Key Summary Status Security Level
Loading...
Refresh

Last modified on Jan 22, 2025

Was this helpful?

Yes
No
Provide feedback about this article

In this section

Powered by Confluence and Scroll Viewport.