cluster cache replication fails because the serial-blocklist library (v3.0.5) blocks deserialization of java.rmi.* on jira 11.3.3

XMLWordPrintable

    • 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

      1. Set up a multi-node Jira Data Center cluster (2+ nodes)
      2. Upgrade Jira from 10.3.x to 11.3.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)
      4. 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

              Assignee:
              Shao-Wen Wu
              Reporter:
              Szymon Rękawek
              Votes:
              4 Vote for this issue
              Watchers:
              5 Start watching this issue

                Created:
                Updated: