Comparing Page Versions Fails Due to Timeout Exceeded

Still need help?

The Atlassian Community is here for you.

Ask the community

Symptoms

 This page only applies for Confluence 4.x or higher, since page comparison is handled differently in Confluence 3.5.x or lower.

Comparing two page versions is failing with the following error:

OR

The following appears in the atlassian-confluence.log:

WARN [http-8790-1] [confluence.pages.actions.AbstractDiffPagesAction] execute Error while generating diff: (page: Koopia LEP_1.2 Lepingu lisamine (värvitud) v.52 (592359) vs page: LEP_1.2 Lepingu lisamine v.82 (591818))
 -- url: /pages/diffpagesbyversion.action | page: 590034 | userName: admin | referer: http://localhost:8790/pages/viewpreviousversions.action?pageId=590034 | action: diffpagesbyversion

OR

ERROR [TP-Processor10] [confluence.pages.actions.AbstractDiffPagesAction] execute Error while generating diff: (page: IT-Betrieb___Spotlight Jahre 2008 bis 2010 v.1 (6980160) vs page: IT-Betrieb___Spotlight Jahre 2008 bis 2012 v.2 (5083797))
 -- url: /confluence/pages/diffpagesbyversion.action | page: 5083797 | userName: admin | referer: http://localhost:879/confluence/pages/viewpreviousversions.action?pageId=5083797 | action: diffpagesbyversion
com.atlassian.confluence.diff.DiffException: Index: 7942, Size: 7942
        at com.atlassian.confluence.diff.DaisyHtmlDiffer.createOrGetFutureDiff(DaisyHtmlDiffer.java:154)
        at com.atlassian.confluence.diff.DaisyHtmlDiffer.diff(DaisyHtmlDiffer.java:97)
        at com.atlassian.confluence.diff.WikiConvertingHtmlDiffer.diff(WikiConvertingHtmlDiffer.java:31)
        at com.atlassian.confluence.pages.actions.AbstractDiffPagesAction.execute(AbstractDiffPagesAction.java:83)
Caused by: java.lang.IndexOutOfBoundsException: Index: 7942, Size: 7942
        at java.util.ArrayList.rangeCheck(Unknown Source)
        at java.util.ArrayList.get(Unknown Source)
        at org.outerj.daisy.diff.html.TextNodeComparator.getTextNode(TextNodeComparator.java:67)
        at org.outerj.daisy.diff.html.TextNodeComparator.handlePossibleChangedPart(TextNodeComparator.java:136)
        at org.outerj.daisy.diff.html.HTMLDiffer.diff(HTMLDiffer.java:81)
        at com.atlassian.confluence.diff.DaisyHtmlDiffer.diff(DaisyHtmlDiffer.java:230)
        at com.atlassian.confluence.diff.DaisyHtmlDiffer.renderContentAndDiff(DaisyHtmlDiffer.java:168)
        at com.atlassian.confluence.diff.DaisyHtmlDiffer.createOrGetFutureDiff(DaisyHtmlDiffer.java:145)

Diagnosis

Enable the following debug logging:

com.atlassian.confluence.diff
com.atlassian.confluence.pages.actions
tip/resting Created with Sketch.

See Configuring Logging for details on how to implement the debug logging.


Then, execute the page version comparison again. The following will appear in the atlassian-confluence.log

DEBUG [http-8428-7] [confluence.pages.actions.PageAwareInterceptor] intercept Set page on PageAware com.atlassian.confluence.pages.actions.DiffPagesByVersionAction: page: LEP_1.2 Lepingu lisamine v.82 (2392272)
DEBUG [http-8428-7] [confluence.pages.actions.AbstractDiffPagesAction] execute Error while generating diff: (page: LEP_1.2 Lepingu lisamine v.52 (2393793) vs page: LEP_1.2 Lepingu lisamine v.82 (2392272))
 -- referer: http://localhost:8428/pages/viewpreviousversions.action?pageId=2392272 | url: /pages/diffpagesbyversion.action | userName: adminconf | action: diffpagesbyversion | page: 2392272
com.atlassian.confluence.diff.InterruptedDiffException: Diff timed out during daisydiff.
	at com.atlassian.confluence.diff.DaisyHtmlDiffer.diff(DaisyHtmlDiffer.java:230)
	at com.atlassian.confluence.diff.DaisyHtmlDiffer.renderContentAndDiff(DaisyHtmlDiffer.java:166)
	at com.atlassian.confluence.diff.DaisyHtmlDiffer.createOrGetFutureDiff(DaisyHtmlDiffer.java:143)
	at com.atlassian.confluence.diff.DaisyHtmlDiffer.diff(DaisyHtmlDiffer.java:95)

Cause

The comparison of page versions failed because the task exceeded the default timeout of 10 seconds. It can occur when comparing a page version with another page version that has huge difference in the content. 

Resolution

Increase page version comparison timeout value to a higher value (in milliseconds) using the following parameter and restart Confluence for the changes to take effect, for example, increase it to 60 seconds:

Note that page comparison is an expensive task. Therefore, be considerate in increasing the timeout as it might cause a performance issue.

-Dconfluence.html.diff.timeout=60000
tip/resting Created with Sketch.

See Configuring System Properties on how to include the parameter.

Last modified on Nov 14, 2018

Was this helpful?

Yes
No
Provide feedback about this article
Powered by Confluence and Scroll Viewport.