From cad49082d247bdc6c54badc8ca529895c573d25b Mon Sep 17 00:00:00 2001 From: Thomas Mortagne <thomas.mortagne@gmail.com> Date: Fri, 7 Jun 2024 11:30:22 +0200 Subject: [PATCH] XWIKI-22215: XWikiDocument#getPreparedXDOM can run the preparation on the same XDOM instance in several threads (cherry picked from commit 954c5107dbab28655a060c71412f024da367d1e0) --- .../src/main/java/com/xpn/xwiki/doc/XWikiDocument.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java index 4aa31ef81cd..b5034f3fc10 100644 --- a/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java +++ b/xwiki-platform-core/xwiki-platform-oldcore/src/main/java/com/xpn/xwiki/doc/XWikiDocument.java @@ -8995,6 +8995,9 @@ public XDOM getPreparedXDOM() // Parse the content if not already done if (xdom == null) { xdom = parseContentNoException(); + } else { + // Clone the XDOM to avoid concurrent modifications during the preparation + xdom = xdom.clone(); } // Prepare the content @@ -9005,7 +9008,7 @@ public XDOM getPreparedXDOM() this.xdomCache = xdom; this.xdomCachePrepareDate = xdomPrepareDate; - return xdom.clone(); + return this.xdomCache.clone(); } private void resetXDOM() -- GitLab