-
Type:
Bug
-
Resolution: Unresolved
-
Priority:
Low
-
None
-
Affects Version/s: 11.3.3
-
Component/s: DC Platform Backend
-
None
-
11.03
-
Severity 3 - Minor
Issue Summary
After upgrading Jira from 10.3.18 to 11.3.3, cluster cache replication fails because the serial-blocklist library (v3.0.5) blocks deserialization of java.rmi.* classes used by the caching layer.
Steps to Reproduce
- Set up a multi-node Jira Data Center cluster (2+ nodes)
- Upgrade Jira from 10.3.x to 11.3.3
- Perform any action that triggers cache replication between nodes (e.g., modifying a notification scheme or any operation that causes a cache PUT/REMOVE across the cluster)
- Check the application logs on the receiving node
Expected Results
Cache operations are replicated successfully between cluster nodes without errors.
Actual Results
The below exception is thrown in the atlassian-jira.log file:
2026-06-02 08:49:23,062+0200 localq-reader-19 WARN [com.atlassian.security.serialblocklist.BlocklistFilteringFunction] Deserialize or execute step prevented for class: java.rmi.NoSuchObjectException
Cache entries are not replicated across cluster nodes. The fallback NodeDefaultIndexer thread compensates for data consistency, but the primary cache replication mechanism is broken.
2026-04-28 15:46:01,905+0200 localq-reader-17 ERROR [com.atlassian.jira.cluster.distribution.localq.LocalQCacheOpReader] [LOCALQ] [VIA-COPY] Abandoning sending: LocalQCacheOp{cacheName='com.atlassian.jira.cluster.dbr.DBRMessage', action=PUT, key=DBR, value == null ? false, replicatePutsViaCopy=true, creationTimeInMillis=1777383961901} from cache replication queue: [queueId=queue_Nodetrp17a_5_f30912d63a456b6807dcb5dc6337b9be_put, queuePath=/local/home/twm5vk/home/localq/queue_Nodetrp17a_5_f30912d63a456b6807dcb5dc6337b9be_put], failuresCount: 1/1. Removing from queue. Error: java.rmi.UnmarshalException: Transport return code invalid
com.atlassian.jira.cluster.distribution.localq.LocalQCacheOpSender$UnrecoverableFailure: java.rmi.UnmarshalException: Transport return code invalid
at com.atlassian.jira.cluster.distribution.localq.rmi.LocalQCacheOpRMISender.send(LocalQCacheOpRMISender.java:90)
at com.atlassian.jira.cluster.distribution.localq.LocalQCacheOpReader.run(LocalQCacheOpReader.java:109)
at java.base/java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:572)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
Caused by: java.rmi.UnmarshalException: Transport return code invalid
at java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:247)
Workaround
- Currently there is no known workaround for this behavior. The additional.blocklist.file system property can only add entries to the blocklist and cannot remove the overly broad (?:java|sun)\.rmi\..* regex pattern. A fix in the serial-blocklist library or product dependency is required. A workaround will be added here when available.
- use fall back NodeDefaultIndexer