Ben Chester created MYFACES-4754:
------------------------------------
Summary: "Maximum call stack size exceeded" when AJAX updating
large DOM in Chromium based browsers
Key: MYFACES-4754
URL: https://issues.apache.org/jira/browse/MYFACES-4754
Project: MyFaces Core
Issue Type: Bug
Components: General
Affects Versions: 4.1.3
Reporter: Ben Chester
We chased this down to the spread operator used in the bottom of
`querySelectAllDeep` in DomQuery.ts. Changing those spread operators that just
copy to `.slice()` appears to rectify the issue.
This is caused by an issue that Chromium (or more specifically V8) is aware of
but don't care to fix, the earliest report I could find is from 2022:
[https://issues.chromium.org/issues/41467953] .
The issue is reproducible with the following xhtml, which creates 100,000 empty
divs (it breaks somewhere between 60k and 70k). I believe the only thing that
matters is the total number of elements in the DOM.
{noformat}
<!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="jakarta.faces.facelets"
xmlns:f="jakarta.faces.core"
xmlns:h="jakarta.faces.html"
><h:body>
<h:form>
<ui:repeat begin="0" end="100000">
<div/>
</ui:repeat>
<h:outputText value="Test Text"/>
<br/>
<h:commandLink
id="testButton"
value="Test"
>
<f:ajax
execute="@this"
render="testButton"
/>
</h:commandLink>
</h:form>
</h:body></html>{noformat}
I'm happy to prepare a PR for this if that'd help
--
This message was sent by Atlassian Jira
(v8.20.10#820010)