Uploaded image for project: 'Jira Data Center'
  1. Jira Data Center
  2. JRASERVER-78133

If the integrity checker is run without clicking the "Acknowledge" button at the final step, it may block the integrity checker from being executed on other nodes

XMLWordPrintable

      Issue Summary

      Running the database integrity checker without clicking the "Acknowledge" button at the final step, may block the integrity checker from being executed on other nodes.

      Steps to Reproduce

      1. Open each node on the integrity checker page;
      2. Run the integrity checker on Node 1, and wait for this to finish
      3. Once it finishes, don't click on the "Acknowledge" button;
      4. Try to run the integrity checker on node 2;
      5. We will face a 500 error;
        Cannot call sendRedirect() after the response has been committed
        
      6. When we try to run the integrity checker again on node 1, it works, but it will not work on node 2 until we restart node 1.

      Video recording reproducing the issue: Integrity_checker_bug.mov

      Expected Results

      We the integrity checker finishes, this should allow other nodes to run the integrity checker even without clicking on the "Acknowledge" button. 

      Actual Results

      The integrity checker will no longer work on other nodes, and the below exception is thrown in the atlassian-jira.log file:

      java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed, stacktrace=java.lang.IllegalStateException: Cannot call sendRedirect() after the response has been committed
      

      Workaround

      Restarting the working node should fix the issue for the other nodes as it will reset the job. 

      To prevent this issue from happening:

      • Navigate to <BASE_URL>/secure/admin/SiteDarkFeatures!default.jspa
      • Add the flag com.atlassian.jira.web.action.admin.integrity.checker.task.cleanup.enabled
      • Restart each node for the configuration to apply

      The feature flag com.atlassian.jira.web.action.admin.integrity.checker.task.cleanup will always clean up integrity checker jobs that are not completed when a new one is run.
      While this will flag prevent the error from happening, there's a small chance that two admins run the integrity checker in quick succession and one ends up cancelling the job of the other.

              e2656c68d96d Agata Kowal
              7d74d3b1a350 Rodrigo Jose Zaparoli
              Votes:
              7 Vote for this issue
              Watchers:
              10 Start watching this issue

                Created:
                Updated:
                Resolved: