Excessive HashMap with Xwork causes high CPU load

Platform Notice: Data Center Only - This article only applies to Atlassian products on the Data Center platform.

Note that this KB was created for the Data Center version of the product. Data Center KBs for non-Data-Center-specific features may also work for Server versions of the product, however they have not been tested. Support for Server* products ended on February 15th 2024. If you are running a Server product, you can visit the Atlassian Server end of support announcement to review your migration options.

*Except Fisheye and Crucible

Summary

Problem

Performance of Confluence is is slow.

Diagnosis

Long running threads in heap dumps show something similar to this:

1 2 3 4 5 6 7 "TP-Processor112" daemon prio=10 tid=0x0000002d9a661400 nid=0x58b3 runnable [0x000000004a9cf000..0x000000004a9d1d30] java.lang.Thread.State: RUNNABLE at java.util.HashMap.get(HashMap.java:303) at com.opensymphony.xwork.util.OgnlUtil.compile(OgnlUtil.java:192) at com.opensymphony.xwork.util.OgnlUtil.setValue(OgnlUtil.java:188) at com.opensymphony.xwork.util.OgnlValueStack.setValue(OgnlValueStack.java:113) at com.opensymphony.xwork.util.OgnlValueStack.setValue(OgnlValueStack.java:97)

Cause

Due to CONF-17774, the xwork jar file bundled with Confluence itself can cause excessive HashMap.get operations.

Solution

Resolution

  1. Stop confluence:

  2. Move the <<confluence install>confluence/WEB-INF/lib/xwork-1.0.3.1.jar to a temporary backup directory (just in case we need to restore.

  3. Copy xwork-1.0.3.2.jar to <<confluence install>confluence/WEB-INF/lib/

    (no need to rename file).

  4. Start Confuence

Updated on April 2, 2025

Still need help?

The Atlassian Community is here for you.