Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
Clear All
new posts

    Form too large 763549>200000 when deleting tree folder with many children.

    SmartClient Version: v10.1p_2015-12-18/Pro Deployment (built 2015-12-18)

    I am getting an error when trying to remove a folder from my treegrid which has a lot of children.

    Looking at the DSRequest in the developer console I can see that the request has all the data for the folder and all of its children.

    The problem is obviously that it tries to send all children/data in the remove request, but do i need to create a RemoveRecordHandler and create a simplified removeData request or what?

    Error:
    Code:
    java.lang.IllegalStateException: Form too large 763547>200000
     at org.eclipse.jetty.server.Request.extractParameters(Request.java:352)
     at org.eclipse.jetty.server.Request.getParameterNames(Request.java:813)
     at com.isomorphic.servlet.ServletTools.paramsToMap(ServletTools.java:145)
     at com.isomorphic.servlet.ISCHttpServletRequest.getStringParams(ISCHttpServletRequest.java:132)
     at com.isomorphic.servlet.ISCHttpServletRequest.getParameter(ISCHttpServletRequest.java:349)
     at com.isomorphic.rpc.RPCManager.parseRequest(RPCManager.java:2126)
     at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:369)
     at com.isomorphic.rpc.RPCManager.<init>(RPCManager.java:349)
     at com.isomorphic.servlet.IDACall.processRequest(IDACall.java:147)
     at com.isomorphic.servlet.IDACall._processRequest(IDACall.java:119)
     at com.isomorphic.servlet.IDACall.doPost(IDACall.java:79)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:688)
     at com.isomorphic.servlet.BaseServlet.service(BaseServlet.java:162)
     at javax.servlet.http.HttpServlet.service(HttpServlet.java:770)
     at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:686)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1494)
     at it.forecast.server.servlets.filter.CGWTCacheControlFilter.doFilter(CGWTCacheControlFilter.java:37)
     at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1474)
     at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:499)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:137)
     at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:557)
     at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:231)
     at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1086)
     at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:428)
     at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:193)
     at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1020)
     at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:135)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
     at org.eclipse.jetty.server.handler.RequestLogHandler.handle(RequestLogHandler.java:68)
     at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:116)
     at org.eclipse.jetty.server.Server.handle(Server.java:370)
     at org.eclipse.jetty.server.AbstractHttpConnection.handleRequest(AbstractHttpConnection.java:489)
     at org.eclipse.jetty.server.AbstractHttpConnection.content(AbstractHttpConnection.java:960)
     at org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content(AbstractHttpConnection.java:1021)
     at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:865)
     at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:240)
     at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:82)
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:668)
     at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:52)
     at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:608)
     at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:543)
     at java.lang.Thread.run(Thread.java:745)

    #2
    The limit that Jetty is imposing here is not an HTTP standard. You could just configure Jetty to accept larger form posts.

    You could instead create a simplified handler since arguably the server doesn't need all the client information - it depends on whether you want to verify that the client was looking at up-to-date data at the moment the removal was attempted (which is the purpose of sending the full node data).

    Another alternative would be to use dataSource.transformRequest to trim off data you don't think you want to send (such as dsRequest.oldValues, or even all properties on all records other than the PK).

    Comment

    Working...
    X