Uploaded image for project: 'Nuxeo Platform'
  1. Nuxeo Platform
  2. NXP-21825

Fix validation stackoverflow when nesting 3 list widgets

    XMLWordPrintable

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: Major
    • Resolution: Won't Fix
    • Affects Version/s: 7.10, 8.10, 9.1-SNAPSHOT
    • Fix Version/s: None
    • Component/s: Schema, Seam / JSF UI
    • Tags:
    • Backlog priority:
      900
    • Sprint:
      nxAT Sprint 9.1.8, nxfit 9.1.9, nxAT Sprint 9.1.9, nxAT Sprint 9.2.3, nxAT Sprint 9.2.1, nxAT Sprint 9.2.2, nxAT Sprint 9.3.4, nxAT Sprint 9.3.6, nxAT Sprint 9.3.7, nxAT Sprint 9.3.9, nxAT Sprint 9.3.8, nxAT Sprint 10.1.3, nxAT Sprint 10.1.4, nxAT Sprint 10.2.1, nxAT Sprint 10.3.1, nxAT Sprint 10.2.2, nxAT Sprint 10.2.3, nxAT Sprint 10.2.4, nxAT Sprint 10.3.2, nxAT Sprint 10.3.3, nxAT Sprint 11.1.3, nxAT Sprint 11.1.4, nxAT Sprint 11.1.5, nxAT Sprint 11.1.7, nxAT Sprint 11.1.8
    • Story Points:
      8

      Description

      1. create a custom schema (allow nested compleces)
      2. add a multi-valued complex called aProp
      3. click Edit
      4. add a multi-valued complex called bProp
      5. click Edit
      6. add a multi-valued complex called cProp
      7. click Edit
      8. add a String property called myString (see studioConf.png)
      9. save the schema
      10. create a custom Document Model
      11. add the aProp property to the layout
      12. synch the project with the server
      13. click Add until myString parameter is visible and enter a value (see creatingDoc.png)
      14. click Save

      The following stack trace appears:

      2017-03-09 12:01:45,223 ERROR [http-bio-0.0.0.0-8080-exec-13] [nuxeo-error-log] javax.servlet.ServletException: On requestURL: http://localhost:8080/nuxeo/create_document.faces
      	at org.nuxeo.ecm.platform.ui.web.rest.FancyURLFilter.doFilter(FancyURLFilter.java:138)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoRequestControllerFilter.doFilter(NuxeoRequestControllerFilter.java:144)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.webdav.service.WIRequestFilter.doFilter(WIRequestFilter.java:59)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilterInternal(NuxeoAuthenticationFilter.java:597)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:36)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth.NuxeoOAuthFilter.doFilter(NuxeoOAuthFilter.java:120)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:34)
      	at org.nuxeo.ecm.platform.ui.web.auth.oauth2.NuxeoOAuth2Filter.doFilter(NuxeoOAuth2Filter.java:68)
      	at org.nuxeo.ecm.platform.ui.web.auth.service.NuxeoAuthFilterChain.doFilter(NuxeoAuthFilterChain.java:34)
      	at org.nuxeo.ecm.platform.ui.web.auth.NuxeoAuthenticationFilter.doFilter(NuxeoAuthenticationFilter.java:402)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoCorsFilter.doFilter(NuxeoCorsFilter.java:66)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.exceptionhandling.NuxeoExceptionFilter.doFilter(NuxeoExceptionFilter.java:75)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.encoding.NuxeoEncodingFilter.doFilter(NuxeoEncodingFilter.java:73)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
      	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
      	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)
      	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)
      	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
      	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
      	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)
      	at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)
      	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
      	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
      	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
      	at java.lang.Thread.run(Thread.java:745)
      Caused by: javax.servlet.ServletException
      	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:659)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:83)
      	at org.jboss.seam.web.ExceptionFilter.doFilter(ExceptionFilter.java:64)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.jboss.seam.web.RedirectFilter.doFilter(RedirectFilter.java:45)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.nuxeo.elasticsearch.web.sync.UIThreadMarker.doFilter(UIThreadMarker.java:46)
      	at org.jboss.seam.servlet.SeamFilter$FilterChainImpl.doFilter(SeamFilter.java:69)
      	at org.jboss.seam.servlet.SeamFilter.doFilter(SeamFilter.java:158)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.web.common.requestcontroller.filter.NuxeoThreadTrackerFilter.doFilter(NuxeoThreadTrackerFilter.java:28)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.core.management.jtajca.internal.Log4jWebFilter.doFilter(Log4jWebFilter.java:67)
      	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
      	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
      	at org.nuxeo.ecm.platform.ui.web.rest.FancyURLFilter.doFilter(FancyURLFilter.java:118)
      	... 40 more
      Caused by: java.lang.StackOverflowError
      	at java.lang.ReflectiveOperationException.<init>(ReflectiveOperationException.java:89)
      	at java.lang.reflect.InvocationTargetException.<init>(InvocationTargetException.java:72)
      	at sun.reflect.GeneratedMethodAccessor731.invoke(Unknown Source)
      	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
      	at java.lang.reflect.Method.invoke(Method.java:498)
      	at javax.el.BeanELResolver.getValue(BeanELResolver.java:99)
      	at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
      	at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
      	at org.nuxeo.ecm.platform.ui.web.validator.ValueExpressionAnalyzer$InterceptingResolver.getValue(ValueExpressionAnalyzer.java:216)
      	at org.jboss.el.parser.AstPropertySuffix.getTarget(AstPropertySuffix.java:38)
      	at org.jboss.el.parser.AstValue.getTarget(AstValue.java:47)
      	at org.jboss.el.parser.AstValue.setValue(AstValue.java:83)
      	at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
      	at org.nuxeo.ecm.platform.ui.web.binding.alias.AliasValueExpression.setValue(AliasValueExpression.java:119)
      	at org.jboss.el.parser.AstIdentifier.setValue(AstIdentifier.java:65)
      	at org.jboss.el.ValueExpressionImpl.setValue(ValueExpressionImpl.java:249)
      	at com.sun.faces.facelets.el.TagValueExpression.setValue(TagValueExpression.java:131)
      	at org.nuxeo.ecm.platform.ui.web.validator.ValueExpressionAnalyzer.getReference(ValueExpressionAnalyzer.java:78)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:226)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      	at org.nuxeo.ecm.platform.ui.web.validator.DocumentConstraintValidator.resolveField(DocumentConstraintValidator.java:228)
      ...
      
      1. Increasing the -Xss parameter does not improve the situation, only shows a longer stacktrace
      2. Could not pinpoint the cause of this but the validator seems to be looping on resolveField as shown in the stack trace
      3. this does not happen with only two embedded compleces

        Attachments

          Activity

            People

            • Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved:

                Time Tracking

                Estimated:
                Original Estimate - Not Specified
                Not Specified
                Remaining:
                Remaining Estimate - 0 minutes
                0m
                Logged:
                Time Spent - 1 day, 1 hour
                1d 1h