Uploaded image for project: 'Confluence Data Center'
  1. Confluence Data Center
  2. CONFSERVER-99157

Error during linked content reconciliation (triggered by an attachment) causes some linked pages content to be duplicated

      Issue Summary

      When a user uploads or attaches a image to a page (example, drag and drop), reconciliation is triggered for all linked pages. If an exception is thrown during the process, and it causes a transaction rollback, there is a chance the linked pages get content duplicated. This will occur for the linked pages that have been successfully reconciled or recovered by synchrony.

      Steps to Reproduce

      1. Update the threshold hours of the Synchrony Data Removal (Hard / Soft)` jobs to 0, just to ensure when the job is run, it will definitely clean the synchrony data of target pages
        1. synchrony.eviction.hard.job.threshold.hours
        2. synchrony.eviction.soft.job.threshold.hours
      1. Add some extra code in DefaultContentReconciliationManager#reconcileIfNeeded with breakpoint so we are able to throw an exception from it
      2. Create a page (P1) whose link will be inserted in other pages
      3. Create multiple other pages with link of P1 (P2, P3, P4, P5, P6 etc)
      4. Run Synchrony Data Removal (Hard / Soft) to clean up the synchrony data of the created pages
      5. Open the attachments page of P1 and upload an image
      6. With the debug mode on, it will stop at the break point multiple times for P1 - P6, and when it stop for one of the other page, say P5, we throw an exception from  DefaultContentReconciliationManager#reconcileIfNeeded  and continue
      7. You will notice the transaction is rollbacked and some follow up external change reconcile happen
      8. After all code finish execution:
        1. Check the logs, you will see External change request with empty Synchrony Rev with content for P1, P2, P3, P4
        2. In confluence, open page P2, P3, P4 in editor mode, you will see content is duplicated

      Expected Results

      No changes are made to all the pages as they are rollbacked. No duplicated content should exist for all the pages.

      Actual Results

      You will see in the logs three stages in the same thread:

      1. The initial reconciliation of linked pages
        10:14:02,560 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015816 but will reconcile anyway
        10:14:07,647 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded Reconciling a content ContentId{id=1015816}
        10:14:07,647 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyContentService] restoredRecovery Launching synchrony recovery for restored content 1015816
        10:14:07,665 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015816 HTTP/1.1 for 1015816
        
      2. The exception and database rollback - this can be any cause, as long as it triggers the transaction to roll back
        10:14:22,441 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions: .......
        10:14:22,444 ERROR [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ThreadLocalCleanUpSynchronization] afterCompletion Error executing task in post-commit
         -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
        com.atlassian.confluence.pages.exceptions.ExternalChangesException: Unable to save changes to unreconciled page ContentId{id=1015814}
        
      3. The secondary reconciliation for pages that have successfully passed the first step - this is where duplication occurs.
        10:14:22,567 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] performExternalChange Started external change for ContentId{id=1015816}
        10:14:22,574 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] lambda$createExternalChangeRequest$0 External change request with empty Synchrony Rev with content 1015816
        10:14:22,574 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015816?state-at=@head&state-format=html HTTP/1.1 for 1015816
        

      Below is a complete log of the events from this example. Duplicated pages are 1015816 and 1015818:

      10:13:22,798 DEBUG [Caesium-1-2] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:13:22,799 DEBUG [Caesium-1-2] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:13:22,805 DEBUG [Caesium-1-2] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:13:22,805 DEBUG [Caesium-1-2] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:13:22,805 DEBUG [Caesium-1-2] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:13:25,806 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:13:25,807 DEBUG [Caesium-1-1] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:13:25,817 DEBUG [Caesium-1-1] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:13:25,817 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:13:25,817 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:13:26,814 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded
      10:13:41,557 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:13:41,558 DEBUG [Caesium-1-3] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:13:41,561 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded Reconciling a content ContentId{id=1015812}
      10:13:41,561 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyContentService] restoredRecovery Launching synchrony recovery for restored content 1015812
      10:13:45,226 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015812 HTTP/1.1 for 1015812
      10:13:50,596 DEBUG [Caesium-1-3] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:13:50,596 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:13:50,596 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:13:52,964 DEBUG [Caesium-1-4] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:13:52,965 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015812 HTTP/1.1 for 1015813
      10:13:52,965 DEBUG [Caesium-1-4] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:13:52,971 DEBUG [Caesium-1-4] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:13:52,971 DEBUG [Caesium-1-4] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:13:52,971 DEBUG [Caesium-1-4] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:13:52,998 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [util.profiling.DurationThresholdWarningTimingHelperFactory] logMessage Execution time for publishing event com.atlassian.confluence.event.events.content.page.synchrony.SynchronyRecoveryEvent@4982a63b took 11437 ms (warning threshold is 5000 ms)
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:13:53,012 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.AttachmentRelatedContentReconciliationListener] reconcileReferringContent No ReconcileContentRegisterTask in current Thread we will create one
      10:13:53,014 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] handleEditorOnlyContentUpdateAfterSave Initiating editor content sync with synchrony for content: 1015812
      10:13:53,030 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] handleContentUpdateAfterSave No ReconcileContentTask in current Thread we will create one
      10:13:53,041 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$6 Process owning content for batch number 1
      10:13:53,041 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$6 Processing a batch of owning content: [1015812]
      10:13:53,043 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$6 There are [1] of owning CEO is loaded from DB
      10:13:53,043 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$6 Space detail in current batch: [SPAC]
      10:13:53,050 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$6 Finishing process for owning content batch 1
      10:13:53,050 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$12 There are 12 of distingue CEO potential to reconcile
      10:13:53,050 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$11 Process reconcile content for batch number 2
      10:13:53,050 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$11 Processing a batch of reconcile content: [page: p6 v.1 (1015825), page: p5 v.1 (1015823), page: P3 v.1 (1015818), page: P2 v.1 (1015816), page: P1 v.1 (1015814), page: p6 v.1 (1015824), page: p5 v.1 (1015822), page: p4 v.1 (1015820), page: p4 v.1 (1015821), page: P3 v.1 (1015819), page: P2 v.1 (1015817), page: P1 v.1 (1015815)]
      10:13:53,050 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015825 but will reconcile anyway
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:13:53,050 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015823 but will reconcile anyway
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:13:53,050 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015818 but will reconcile anyway
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:13:55,427 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded
      10:13:59,627 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:13:59,627 DEBUG [Caesium-1-3] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:13:59,630 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded Reconciling a content ContentId{id=1015818}
      10:13:59,630 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyContentService] restoredRecovery Launching synchrony recovery for restored content 1015818
      10:14:02,501 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015818 HTTP/1.1 for 1015818
      10:14:02,533 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015818 HTTP/1.1 for 1015819
      10:14:02,555 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] handleEditorOnlyContentUpdateAfterSave Initiating editor content sync with synchrony for content: 1015818
      10:14:02,560 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$10 Reconcile for content ContentId{id=1015818} is done
      10:14:02,560 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015816 but will reconcile anyway
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:14:03,675 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded
      10:14:07,647 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded Reconciling a content ContentId{id=1015816}
      10:14:07,647 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyContentService] restoredRecovery Launching synchrony recovery for restored content 1015816
      10:14:07,653 DEBUG [Caesium-1-3] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:14:07,653 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:14:07,653 DEBUG [Caesium-1-3] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:14:07,662 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Checking Synchrony Status...
      10:14:07,663 DEBUG [Caesium-1-1] [synchrony.bootstrap.HeartbeatChecker] isSynchronyUp Checking Synchrony heartbeat on: http://127.0.0.1:8091/synchrony/heartbeat
      10:14:07,665 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015816 HTTP/1.1 for 1015816
      10:14:07,684 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015816 HTTP/1.1 for 1015817
      10:14:07,703 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] handleEditorOnlyContentUpdateAfterSave Initiating editor content sync with synchrony for content: 1015816
      10:14:07,708 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] lambda$run$10 Reconcile for content ContentId{id=1015816} is done
      10:14:07,708 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileReferringContentTask] getShouldIncludeOwnContent Could not find shouldIncludeOwnContentMap for Content ID 1015814 but will reconcile anyway
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:14:08,538 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.DefaultContentReconciliationManager] reconcileIfNeeded
      10:14:22,441 WARN [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [impl.hibernate.ConfluenceHibernateTransactionManager] doRollback Performing rollback. Transactions:\n    [null]: PROPAGATION_REQUIRED,ISOLATION_DEFAULT (Session #135036684)\n        [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #747969556)\n        [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #1157983079)\n      ->[null]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT (Session #940917725)\n            [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #830147850)\n            [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #697215999)\n            [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #1748798294)\n            [SALSpringTx]: PROPAGATION_REQUIRES_NEW,ISOLATION_DEFAULT,readOnly (Session #630939188)
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      10:14:22,489 DEBUG [Caesium-1-1] [synchrony.bootstrap.HeartbeatChecker] lambda$isSynchronyUp$0 Response received from Synchrony heartbeat: status 200
      10:14:22,489 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Synchrony is running: true
      10:14:22,489 DEBUG [Caesium-1-1] [synchrony.status.SynchronyStatusCheckJob] runJob Setting the system property atlassian.internal.synchrony.status to true
      10:14:22,444 ERROR [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ThreadLocalCleanUpSynchronization] afterCompletion Error executing task in post-commit
       -- url: /confluence/plugins/drag-and-drop/upload.action | userName: admin | action: upload | referer: http://localhost:8080/confluence/pages/viewpageattachments.action?pageId=1015812 | traceId: c3af629433743209
      com.atlassian.confluence.pages.exceptions.ExternalChangesException: Unable to save changes to unreconciled page ContentId{id=1015814}
          at com.atlassian.confluence.internal.content.collab.DefaultContentReconciliationManager.reconcileIfNeeded(DefaultContentReconciliationManager.java:135)
          at com.atlassian.confluence.internal.content.collab.DefaultContentReconciliationManager.handleContentUpdateBeforeSave(DefaultContentReconciliationManager.java:78)
          at com.atlassian.confluence.internal.content.collab.DefaultContentReconciliationManager.handleEditorOnlyContentUpdateBeforeSave(DefaultContentReconciliationManager.java:88)
          at com.atlassian.confluence.internal.content.collab.ReconcileReferringContentTask.lambda$run$10(ReconcileReferringContentTask.java:117)
          at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
          at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
          at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
          at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:179)
          at java.base/java.util.ArrayList$SubList$2.forEachRemaining(ArrayList.java:1566)
          at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
          at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
          at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
          at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
          at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
          at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
          at com.atlassian.confluence.internal.content.collab.ReconcileReferringContentTask.lambda$run$11(ReconcileReferringContentTask.java:115)
          at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184)
          at java.base/java.util.stream.IntPipeline$1$1.accept(IntPipeline.java:180)
          at java.base/java.util.stream.Streams$RangeIntSpliterator.forEachRemaining(Streams.java:104)
          at java.base/java.util.Spliterator$OfInt.forEachRemaining(Spliterator.java:712)
          at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
          at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
          at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151)
          at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174)
          at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
          at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596)
          at com.atlassian.confluence.internal.content.collab.ReconcileReferringContentTask.lambda$run$12(ReconcileReferringContentTask.java:108)
          at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:140)
          at com.atlassian.confluence.internal.content.collab.ReconcileReferringContentTask.run(ReconcileReferringContentTask.java:69)
          at com.atlassian.confluence.internal.content.collab.ThreadLocalCleanUpSynchronization.afterCompletion(ThreadLocalCleanUpSynchronization.java:22)
          at org.springframework.transaction.support.TransactionSynchronizationUtils.invokeAfterCompletion(TransactionSynchronizationUtils.java:172)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.invokeAfterCompletion(AbstractPlatformTransactionManager.java:978)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.triggerAfterCompletion(AbstractPlatformTransactionManager.java:953)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.processCommit(AbstractPlatformTransactionManager.java:786)
          at org.springframework.transaction.support.AbstractPlatformTransactionManager.commit(AbstractPlatformTransactionManager.java:712)
          at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
          at java.base/java.lang.reflect.Method.invoke(Method.java:580)
          at org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:344)
          at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:234)
          at jdk.proxy3/jdk.proxy3.$Proxy83.commit(Unknown Source)
          at com.atlassian.xwork.interceptors.TransactionalInvocation.commitOrRollbackTransaction(TransactionalInvocation.java:85)
          at com.atlassian.xwork.interceptors.TransactionalInvocation.access$000(TransactionalInvocation.java:19)
          at com.atlassian.xwork.interceptors.TransactionalInvocation$1.beforeResult(TransactionalInvocation.java:42)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:278)
          at com.atlassian.xwork.interceptors.XWorkProfilingInterceptor.intercept(XWorkProfilingInterceptor.java:16)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179)
          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
          at com.atlassian.confluence.core.ConfluenceWorkflowInterceptor.intercept(ConfluenceWorkflowInterceptor.java:25)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263)
          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.security.interceptors.CaptchaInterceptor.intercept(CaptchaInterceptor.java:44)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.xwork.interceptors.XWorkProfilingInterceptor.intercept(XWorkProfilingInterceptor.java:16)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.xwork.interceptors.XsrfTokenInterceptor.intercept(XsrfTokenInterceptor.java:117)
          at com.atlassian.confluence.xwork.ConfluenceXsrfTokenInterceptor.intercept(ConfluenceXsrfTokenInterceptor.java:34)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.core.ConfluenceLicenseInterceptor.intercept(ConfluenceLicenseInterceptor.java:74)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.xwork.HttpRequestStatsInterceptor.intercept(HttpRequestStatsInterceptor.java:23)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.validation.MessageHolderInterceptor.intercept(MessageHolderInterceptor.java:38)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.event.EventPublisherInterceptor.intercept(EventPublisherInterceptor.java:19)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.util.LoggingContextInterceptor.intercept(LoggingContextInterceptor.java:43)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.core.CancellingInterceptor.intercept(CancellingInterceptor.java:21)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.xwork.interceptors.RestrictHttpMethodInterceptor.intercept(RestrictHttpMethodInterceptor.java:122)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.security.websudo.WebSudoInterceptor.intercept(WebSudoInterceptor.java:37)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.themes.ThemeContextInterceptor.intercept(ThemeContextInterceptor.java:37)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.security.actions.PermissionCheckInterceptor.intercept(PermissionCheckInterceptor.java:86)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.setup.struts.BootstrapAwareInterceptor.intercept(BootstrapAwareInterceptor.java:19)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:175)
          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.user.actions.UserAwareInterceptor.intercept(UserAwareInterceptor.java:50)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.pages.actions.CommentAwareInterceptor.intercept(CommentAwareInterceptor.java:37)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.pages.actions.PageAwareInterceptor.intercept(PageAwareInterceptor.java:49)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.spaces.actions.SpaceAwareInterceptor.intercept(SpaceAwareInterceptor.java:70)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.security.interceptors.ConfluenceAccessInterceptor.intercept(ConfluenceAccessInterceptor.java:30)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.xwork.FlashScopeInterceptor.intercept(FlashScopeInterceptor.java:21)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:154)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.core.actions.LastModifiedInterceptor.intercept(LastModifiedInterceptor.java:27)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.core.ConfluenceAutowireInterceptor.intercept(ConfluenceAutowireInterceptor.java:44)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at org.apache.struts2.interceptor.parameter.ParametersInterceptor.doIntercept(ParametersInterceptor.java:203)
          at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.xwork.interceptors.TransactionalInvocation.invokeAndHandleExceptions(TransactionalInvocation.java:63)
          at com.atlassian.xwork.interceptors.TransactionalInvocation.invokeInTransaction(TransactionalInvocation.java:53)
          at com.atlassian.xwork.interceptors.XWorkTransactionInterceptor.intercept(XWorkTransactionInterceptor.java:50)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.confluence.xwork.SetupIncompleteInterceptor.intercept(SetupIncompleteInterceptor.java:60)
          at com.opensymphony.xwork2.DefaultActionInvocation.executeConditional(DefaultActionInvocation.java:299)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:253)
          at com.atlassian.confluence.security.interceptors.SecurityHeadersInterceptor.intercept(SecurityHeadersInterceptor.java:28)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at com.atlassian.xwork.interceptors.XWorkProfilingInterceptor.intercept(XWorkProfilingInterceptor.java:16)
          at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:256)
          at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48)
          at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:739)
          at com.atlassian.confluence.impl.struts.ConfluenceStrutsDispatcher.serviceAction(ConfluenceStrutsDispatcher.java:58)
          at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79)
          at org.apache.struts2.dispatcher.filter.StrutsExecuteFilter.doFilter(StrutsExecuteFilter.java:111)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.plugins.baseurl.IncludeResourcesFilter.doFilter(IncludeResourcesFilter.java:52)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.labs.botkiller.BotKillerFilter.doFilter(BotKillerFilter.java:36)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.applinks.core.rest.context.ContextFilter.doFilter(ContextFilter.java:24)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.plugins.pulp.PulpFilter.doFilter(PulpFilter.java:75)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.analytics.client.filter.UniversalAnalyticsFilter.doFilter(UniversalAnalyticsFilter.java:75)
          at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.mywork.client.filter.ServingRequestsFilter.doFilter(ServingRequestsFilter.java:32)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.efi.OnboardingFilter.doFilter(OnboardingFilter.java:77)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.plugins.authentication.impl.web.filter.authentication.ConfluenceAuthenticationFilter.doFilterInternal(ConfluenceAuthenticationFilter.java:101)
          at com.atlassian.plugins.authentication.impl.web.filter.AbstractJohnsonAwareFilter.doFilter(AbstractJohnsonAwareFilter.java:29)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFixupFilter.doFilter(PrettyUrlsSiteMeshFixupFilter.java:32)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsDispatcherFilter.doFilter(PrettyUrlsDispatcherFilter.java:55)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsSiteMeshFilter.doFilter(PrettyUrlsSiteMeshFilter.java:80)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsMatcherFilter.doFilter(PrettyUrlsMatcherFilter.java:51)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.plugins.mobile.filter.MobileAppWebViewFilter.doFilter(MobileAppWebViewFilter.java:72)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
          at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.message.MessagesDecoratorFilter.doFilter(MessagesDecoratorFilter.java:64)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.opensymphony.sitemesh.webapp.SiteMeshFilter.obtainContent(SiteMeshFilter.java:181)
          at com.opensymphony.sitemesh.webapp.SiteMeshFilter.doFilter(SiteMeshFilter.java:85)
          at com.atlassian.confluence.util.profiling.ProfilingSiteMeshFilter.doFilter(ProfilingSiteMeshFilter.java:48)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.oauth2.scopes.web.ReadWriteScopeFilter.doFilter(ReadWriteScopeFilter.java:46)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.util.profiling.ConfluenceActivityFilter.doFilter(ConfluenceActivityFilter.java:39)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:56)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
          at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.impl.webapp.security.NeoSecurityFilter.doFilter(NeoSecurityFilter.java:74)
          at javax.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at org.apache.struts2.dispatcher.filter.StrutsPrepareFilter.doFilter(StrutsPrepareFilter.java:122)
          at com.atlassian.confluence.impl.struts.ConfluenceStrutsPrepareFilter.doFilter(ConfluenceStrutsPrepareFilter.java:46)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.jmx.JmxFilter.doFilter(JmxFilter.java:97)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.cache.TransactionalCacheFactoryCleanupFilter.doFilter(TransactionalCacheFactoryCleanupFilter.java:22)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.core.filters.ServletContextThreadLocalFilter.doFilter(ServletContextThreadLocalFilter.java:17)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.UserLoggingContextFilter.doFilter(UserLoggingContextFilter.java:31)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.UserNameHeaderFilter.doFilter(UserNameHeaderFilter.java:25)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.MauEventFilter.doFilterInternal(MauEventFilter.java:31)
          at com.atlassian.confluence.web.filter.AbstractStaticResourceAwareFilter.doFilter(AbstractStaticResourceAwareFilter.java:44)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.UserThreadLocalFilter.doFilter(UserThreadLocalFilter.java:39)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.ConfluenceTimeoutFilter.doFilter(ConfluenceTimeoutFilter.java:57)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.HttpSessionRegistrarFilter.doFilter(HttpSessionRegistrarFilter.java:83)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.seraph.filter.SecurityFilter.doFilter(SecurityFilter.java:242)
          at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.applyFilter(ConfluenceSecurityFilter.java:40)
          at com.atlassian.confluence.web.filter.ConfluenceSecurityFilter.doFilter(ConfluenceSecurityFilter.java:29)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.security.auth.trustedapps.filter.TrustedApplicationsFilter.doFilter(TrustedApplicationsFilter.java:94)
          at com.atlassian.confluence.util.AbstractBootstrapHotSwappingFilter.doFilter(AbstractBootstrapHotSwappingFilter.java:35)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.seraph.filter.BaseLoginFilter.doFilter(BaseLoginFilter.java:148)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.oauth.serviceprovider.internal.servlet.OAuthFilter.doFilter(OAuthFilter.java:67)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.pats.web.filter.TokenBasedAuthenticationFilter.doFilter(TokenBasedAuthenticationFilter.java:82)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.oauth2.provider.core.web.AccessTokenFilter.doFilter(AccessTokenFilter.java:82)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:56)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
          at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.ClusterHeaderFilter.doFilter(ClusterHeaderFilter.java:57)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at org.springframework.orm.hibernate5.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:156)
          at com.atlassian.confluence.web.filter.ConfluenceOpenSessionInViewFilter.doFilterInternal(ConfluenceOpenSessionInViewFilter.java:39)
          at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.ConfluenceErrorFilter.doFilter(ConfluenceErrorFilter.java:24)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.util.profiling.filters.ProfilingFilter.doFilter(ProfilingFilter.java:104)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.core.datetime.RequestTimeThreadLocalFilter.doFilter(RequestTimeThreadLocalFilter.java:39)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.core.filters.cache.AbstractCachingFilter.doFilter(AbstractCachingFilter.java:31)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:39)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.plugins.authentication.impl.web.filter.loginform.DisableNativeLoginAuthFilter.doFilterInternal(DisableNativeLoginAuthFilter.java:53)
          at com.atlassian.plugins.authentication.impl.web.filter.AbstractJohnsonAwareFilter.doFilter(AbstractJohnsonAwareFilter.java:29)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.plugins.authentication.impl.basicauth.filter.DisableBasicAuthFilter.doFilter(DisableBasicAuthFilter.java:74)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.analytics.client.filter.DefaultAnalyticsFilter.doFilter(DefaultAnalyticsFilter.java:26)
          at com.atlassian.analytics.client.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:33)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.jwt.internal.servlet.JwtAuthFilter.doFilter(JwtAuthFilter.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.troubleshooting.thready.filter.AbstractThreadNamingFilter.doFilter(AbstractThreadNamingFilter.java:46)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.web.filter.HttpRequestStatsFilter.doFilter(HttpRequestStatsFilter.java:58)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.gzipfilter.GzipFilter.doFilterInternal(GzipFilter.java:114)
          at com.atlassian.gzipfilter.GzipFilter.doFilter(GzipFilter.java:91)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.web.filter.ConfluenceTimingFilter.doFilter(ConfluenceTimingFilter.java:47)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.prettyurls.filter.PrettyUrlsCombinedMatchDispatcherFilter.doFilter(PrettyUrlsCombinedMatchDispatcherFilter.java:56)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.lambda$doFilter$0(DelegatingPluginFilter.java:57)
          at com.atlassian.confluence.extra.webdav.servlet.filter.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:38)
          at com.atlassian.plugin.servlet.filter.DelegatingPluginFilter.doFilter(DelegatingPluginFilter.java:62)
          at com.atlassian.plugin.servlet.filter.IteratingFilterChain.doFilter(IteratingFilterChain.java:37)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:60)
          at com.atlassian.plugin.servlet.filter.ServletFilterModuleContainerFilter.doFilter(ServletFilterModuleContainerFilter.java:46)
          at com.atlassian.johnson.plugin.servlet.filter.JohnsonServletFilterModuleContainerFilter.doFilter(JohnsonServletFilterModuleContainerFilter.java:50)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.MobileAppRequestFilter.doFilter(MobileAppRequestFilter.java:36)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.internal.web.filter.spring.IgnoreWebAsyncManagerFilter.doFilter(IgnoreWebAsyncManagerFilter.java:59)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.validateparam.RequestParamValidationFilter.doFilter(RequestParamValidationFilter.java:51)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.TranslationModeFilter.doFilter(TranslationModeFilter.java:39)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.LanguageExtractionFilter.doFilter(LanguageExtractionFilter.java:39)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.impl.vcache.VCacheRequestContextFilter.lambda$doFilter$3(VCacheRequestContextFilter.java:44)
          at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContextInternal(VCacheRequestContextManager.java:84)
          at com.atlassian.confluence.impl.vcache.VCacheRequestContextManager.doInRequestContext(VCacheRequestContextManager.java:68)
          at com.atlassian.confluence.impl.vcache.VCacheRequestContextFilter.doFilter(VCacheRequestContextFilter.java:43)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.LoggingContextFilter.doFilter(LoggingContextFilter.java:32)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.util.RequestCacheThreadLocalFilter.doFilter(RequestCacheThreadLocalFilter.java:67)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at brave.servlet.TracingFilter.doFilter(TracingFilter.java:87)
          at com.atlassian.confluence.web.filter.ZipkinTracingFilter.doFilter(ZipkinTracingFilter.java:49)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.ResponseOutputStreamFilter.doFilter(ResponseOutputStreamFilter.java:25)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.johnson.filters.AbstractJohnsonFilter.doFilter(AbstractJohnsonFilter.java:59)
          at com.atlassian.confluence.web.ConfluenceJohnsonFilter.doFilter(ConfluenceJohnsonFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.core.filters.HeaderSanitisingFilter.doFilter(HeaderSanitisingFilter.java:37)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.servlet.FourOhFourErrorLoggingFilter.doFilter(FourOhFourErrorLoggingFilter.java:64)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.internal.diagnostics.ipd.http.IpdHttpMonitoringFilter.doFilter(IpdHttpMonitoringFilter.java:35)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.internal.diagnostics.HttpRequestMonitoringFilter.doFilter(HttpRequestMonitoringFilter.java:42)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.impl.webapp.ConfluenceHttpHeaderSecurityFilter.doFilter(ConfluenceHttpHeaderSecurityFilter.java:98)
          at javax.servlet.http.HttpFilter.doFilter(HttpFilter.java:53)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.setup.ConfluenceEncodingFilter.doFilterInternal(ConfluenceEncodingFilter.java:35)
          at com.atlassian.confluence.web.filter.AbstractStaticResourceAwareFilter.doFilter(AbstractStaticResourceAwareFilter.java:44)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.ThreadLocalCacheFilter.doFilter(ThreadLocalCacheFilter.java:25)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at com.atlassian.confluence.web.filter.DebugFilter.doFilter(DebugFilter.java:63)
          at com.atlassian.core.filters.AbstractHttpFilter.doFilter(AbstractHttpFilter.java:32)
          at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:168)
          at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:144)
          at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:168)
          at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:90)
          at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:482)
          at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:130)
          at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:93)
          at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:660)
          at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74)
          at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:346)
          at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:383)
          at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:63)
          at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:936)
          at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1791)
          at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:52)
          at org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1190)
          at org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
          at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:63)
          at java.base/java.lang.Thread.run(Thread.java:1583)
      10:14:22,567 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ThreadLocalCleanUpSynchronization] afterCompletion Task is done. Clean up ThreadLocal data
      10:14:22,567 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileContentTask] run Processing reconcile for 3 events
      10:14:22,567 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] performExternalChange Started external change for ContentId{id=1015816}
      10:14:22,574 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] lambda$createExternalChangeRequest$0 External change request with empty Synchrony Rev with content 1015816
      10:14:22,574 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015816?state-at=@head&state-format=html HTTP/1.1 for 1015816
      10:14:22,615 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] performExternalChange Started external change for ContentId{id=1015818}
      10:14:22,619 DEBUG [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] lambda$createExternalChangeRequest$0 External change request with empty Synchrony Rev with content 1015818
      10:14:22,619 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015818?state-at=@head&state-format=html HTTP/1.1 for 1015818
      10:14:22,657 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [synchrony.service.SynchronyExternalChangesManager] performExternalChange Started external change for ContentId{id=1015812}
      10:14:22,659 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [service.http.SynchronyRequestExecutor] execute Initiating request PUT http://127.0.0.1:8091/synchrony/v1/data/Synchrony-f9dfa72a-05e3-39c8-b07e-24aae2954331/confluence-1015812?state-at=@head&state-format=html HTTP/1.1 for 1015812
      10:14:22,720 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ReconcileContentTask] run Processing reconcile for 3 events ===> DONE
      10:14:22,720 INFO [http-nio-8080-exec-5 url: /confluence/plugins/drag-and-drop/upload.action; user: admin] [content.collab.ThreadLocalCleanUpSynchronization] afterCompletion Task is done. Clean up ThreadLocal data
      10:14:23,826 WARN [http-nio-8080-exec-10 url: /confluence/pages/viewpageattachments.action; user: admin] [htmlsafe.introspection.AnnotationBoxingUberspect] logOrThrowDeprecationWarningsIfNecessary Velocity template accessing deprecated method com.atlassian. 

      Workaround

      Currently the only work-around is to find the cause to the exception/rollback, and to resolve that issue so that the transaction does not fail

      Versions Tested

      Please confirm all versions that have been tested for this issue, and indicate whether the tested version is affected or not affected, below: 

      Testing Requirements Version Affected Version
      Customers Reported Version 8.5.17 Yes
      Most Recent Bug-Fix Release    
      Previous Major Release    
      Most Recent LTS    
      Previous Supported LTS    
      Other Versions..    
      (Add rows as needed)    

          Form Name

            [CONFSERVER-99157] Error during linked content reconciliation (triggered by an attachment) causes some linked pages content to be duplicated

            Hello Atlassian, what about a fix also for the latest 9.2.x LTS version? Urgently needed to be able to upgrade to the next LTS version ...
            Thanks & regards, -Rainer

            Rainer Pöhlmann added a comment - Hello Atlassian, what about a fix also for the latest 9.2.x LTS version? Urgently needed to be able to upgrade to the next LTS version ... Thanks & regards, -Rainer

              Unassigned Unassigned
              5339cdd01cf4 Jeffery Xie
              Affected customers:
              4 This affects my team
              Watchers:
              17 Start watching this issue

                Created:
                Updated:
                Resolved: