Uploaded image for project: 'Jira Server and Data Center'
  1. Jira Server and Data Center
  2. JRASERVER-67019

Asynchronous cache replication in Jira Data Center



    • We collect Jira feedback from various sources, and we evaluate what we've collected when planning our product roadmap. To understand how this piece of feedback will be reviewed, see our Implementation of New Features Policy.


      Problem Definition

      Caches in Jira Data Center are synchronous and have no guaranteed delivery. Synchronous replication may cause problems with scalability, as each change in cache needs to be replicated to other nodes. It means each change is blocking other actions for the caller until completed. Second important thing is that replication event is not guaranteed to be delivered. If something goes wrong, there is an exception when replicating - the operation will not be redone and cluster may be inconsistent, until cache will be refreshed. 

      Suggested Solution

      Caches in Data Center should be replicated asynchronously (async) using persistent layer as a separation of HTTP thread and RMI replication mechanism.

      • HTTP thread will be responsible only for persisting replication events to queues and replication itself should happen asynchronously to that thread.
      • The order of replication events coming from one HTTP request should be preserved.
      • Replication event is removed from queue only when there is confirmation of successful replication to other node.
      • If replication can not be done, replication event will remain in queue, waiting for possibility to replicate


        Issue Links



              mswinarski Maciej Swinarski
              morzechowski Michal Orzechowski (Inactive)
              0 Vote for this issue
              12 Start watching this issue