-
Type: Bug
-
Status: Resolved
-
Priority: Minor
-
Resolution: Fixed
-
Affects Version/s: None
-
Fix Version/s: 10.10-HF65, 2021.25
-
Component/s: Diff
-
Release Notes Summary:Limit diffs by counting them to avoid OOM errors in DaisyDiff
-
Upgrade notes:
-
Team:PLATFORM
-
Sprint:nxplatform #66, nxplatform #67
-
Story Points:5
With huge binary change, we may saturate the heap with org.eclipse.compare.rangedifferencer.OldDifferencer$LinkedRangeDifference object.
The number of diff should be limited we cannot accumulate an infinite number of diff objects.
Stack trace:
http-nio-0.0.0.0-8080-exec-433 at org.eclipse.compare.rangedifferencer.OldDifferencer.findDifferences(Lhidden/org/eclipse/core/runtime/IProgressMonitor;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;)[Lorg/eclipse/compare/rangedifferencer/RangeDifference; (OldDifferencer.java:147) at org.eclipse.compare.rangedifferencer.RangeDifferencer.findDifferences(Lhidden/org/eclipse/core/runtime/IProgressMonitor;Lorg/eclipse/compare/internal/LCSSettings;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;)[Lorg/eclipse/compare/rangedifferencer/RangeDifference; (RangeDifferencer.java:108) at org.eclipse.compare.rangedifferencer.RangeDifferencer.findDifferences(Lorg/eclipse/compare/internal/LCSSettings;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;Lorg/eclipse/compare/rangedifferencer/IRangeComparator;)[Lorg/eclipse/compare/rangedifferencer/RangeDifference; (RangeDifferencer.java:69) at org.outerj.daisy.diff.html.HTMLDiffer.diff(Lorg/outerj/daisy/diff/html/TextNodeComparator;Lorg/outerj/daisy/diff/html/TextNodeComparator;)V (HTMLDiffer.java:121) at org.nuxeo.ecm.diff.content.adapter.HtmlContentDiffer.getContentDiff(Lorg/nuxeo/ecm/core/api/Blob;Lorg/nuxeo/ecm/core/api/Blob;Ljava/util/Locale;)Ljava/util/List; (HtmlContentDiffer.java:140) at org.nuxeo.ecm.diff.content.adapter.base.ConverterBasedContentDiffAdapter.getContentDiffBlobs(Lorg/nuxeo/ecm/core/api/DocumentModel;Ljava/lang/String;Lorg/nuxeo/ecm/diff/content/adapter/base/ContentDiffConversionType;Ljava/util/Locale;)Ljava/util/List; (ConverterBasedContentDiffAdapter.java:139) at org.nuxeo.ecm.diff.content.adapter.base.ConverterBasedContentDiffAdapter.getContentDiffBlobs(Lorg/nuxeo/ecm/core/api/DocumentModel;Lorg/nuxeo/ecm/diff/content/adapter/base/ContentDiffConversionType;Ljava/util/Locale;)Ljava/util/List; (ConverterBasedContentDiffAdapter.java:61) at org.nuxeo.ecm.diff.content.adapter.base.AbstractContentDiffAdapter.getFileContentDiffBlobs(Lorg/nuxeo/ecm/core/api/DocumentModel;Lorg/nuxeo/ecm/diff/content/adapter/base/ContentDiffConversionType;Ljava/util/Locale;)Ljava/util/List; (AbstractContentDiffAdapter.java:54) at org.nuxeo.ecm.diff.content.restlet.ContentDiffRestlet.initCachedContentDiffBlobs(Lorg/restlet/Response;Ljava/lang/String;Lorg/nuxeo/ecm/diff/content/adapter/base/ContentDiffConversionType;)Ljava/util/List; (ContentDiffRestlet.java:199) at org.nuxeo.ecm.diff.content.restlet.ContentDiffRestlet.handle(Lorg/restlet/Request;Lorg/restlet/Response;)V (ContentDiffRestlet.java:130) at org.nuxeo.ecm.platform.ui.web.restAPI.ThreadSafeRestletFilter.doHandle(Lorg/restlet/Request;Lorg/restlet/Response;)I (ThreadSafeRestletFilter.java:48) at org.restlet.routing.Filter.handle(Lorg/restlet/Request;Lorg/restlet/Response;)V (Filter.java:197) at org.restlet.routing.Filter.doHandle(Lorg/restlet/Request;Lorg/restlet/Response;)I (Filter.java:150) at org.restlet.routing.Filter.handle(Lorg/restlet/Request;Lorg/restlet/Response;)V (Filter.java:197) at org.restlet.routing.Router.doHandle(Lorg/restlet/Restlet;Lorg/restlet/Request;Lorg/restlet/Response;)V (Router.java:422) at org.restlet.routing.Router.handle(Lorg/restlet/Request;Lorg/restlet/Response;)V (Router.java:641) at org.restlet.ext.servlet.ServletAdapter.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (ServletAdapter.java:195) at org.nuxeo.ecm.platform.ui.web.restAPI.RestletServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V (RestletServlet.java:116) at javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V (HttpServlet.java:764)
- causes
-
NXP-31401 Release Nuxeo Diff 1.9.4 with daisydiff-1.2-NX5
- Resolved
- depends on
-
VEND-53 Allow to limit the number of diffs in a comparison
- Resolved
-
VEND-54 Allow configuring the max number of diffs in a comparison
- Resolved
- is related to
-
NXP-31486 Add an option to configure nuxeo-diff maximum changes limit
- Resolved