This error results when a submission form has too many fields. The respondent is unable to submit at all (400 error).
com.google.apphosting.runtime.jetty9.JettyLogger warn: /page/studentFeedbackSubmissionEditSave (JettyLogger.java:29)
org.eclipse.jetty.http.BadMessageException: 400: Unable to parse form content
at org.eclipse.jetty.server.Request.getParameters(Request.java:372)
at org.eclipse.jetty.server.Request.getParameterMap(Request.java:1024)
at teammates.common.util.HttpRequestHelper.getParameterMap(HttpRequestHelper.java:59)
at teammates.ui.controller.ControllerServlet.doPost(ControllerServlet.java:59)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:848)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1772)
at com.googlecode.objectify.ObjectifyFilter.doFilter(ObjectifyFilter.java:48)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
at com.google.apphosting.utils.servlet.JdbcMySqlConnectionCleanupFilter.doFilter(JdbcMySqlConnectionCleanupFilter.java:60)
at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1759)
at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:582)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:524)
at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:226)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:143)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at com.google.apphosting.runtime.jetty9.ParseBlobUploadHandler.handle(ParseBlobUploadHandler.java:119)
at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1182)
at com.google.apphosting.runtime.jetty9.AppEngineWebAppContext.doHandle(AppEngineWebAppContext.java:187)
at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:512)
at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:185)
at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1112)
at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141)
at com.google.apphosting.runtime.jetty9.AppVersionHandlerMap.handle(AppVersionHandlerMap.java:293)
at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:134)
at org.eclipse.jetty.server.Server.handle(Server.java:539)
at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:333)
at com.google.apphosting.runtime.jetty9.RpcConnection.handle(RpcConnection.java:213)
at com.google.apphosting.runtime.jetty9.RpcConnector.serviceRequest(RpcConnector.java:81)
at com.google.apphosting.runtime.jetty9.JettyServletEngineAdapter.serviceRequest(JettyServletEngineAdapter.java:134)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchServletRequest(JavaRuntime.java:728)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.dispatchRequest(JavaRuntime.java:691)
at com.google.apphosting.runtime.JavaRuntime$RequestRunnable.run(JavaRuntime.java:661)
at com.google.apphosting.runtime.JavaRuntime$NullSandboxRequestRunnable.run(JavaRuntime.java:853)
at com.google.apphosting.runtime.ThreadGroupPool$PoolEntry.run(ThreadGroupPool.java:270)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: Form has too many keys
at org.eclipse.jetty.util.UrlEncoded.decodeUtf8To(UrlEncoded.java:502)
at org.eclipse.jetty.util.UrlEncoded.decodeTo(UrlEncoded.java:572)
at org.eclipse.jetty.server.Request.extractFormParameters(Request.java:521)
at org.eclipse.jetty.server.Request.extractContentParameters(Request.java:453)
at org.eclipse.jetty.server.Request.getParameters(Request.java:368)
... 37 more
Is it possible to increase the max number of keys accepted per form?
@damithc is this still a valid issue? If so, which pages does this issue happen?
I am a first timer here and I don't see any open, not-yet-claimed first timer issue. But I really would like to contribute to this project and am willing to learn new things to contribute to harder issues. So I would really appreciate if I can work on this issue if possible.
@manzurayusup it could happen when a submission form has many entries. e.g., a team has 20 students and there are 20 'give feedback to team members' questions, resulting in 20x20=400 entries in the submission form. The first thing is to check if it still happens in the current version by simulating such a case.
@damithc I simulated 20x20 case in the dev server and didn't run into any problems, so it seems that this issue does not happen in the current version
@damithc I simulated 20x20 case in the dev server and didn't run into any problems, so it seems that this issue does not happen in the current version
Nice. Perhaps keep pushing to see if there is a limit and what that limit is?
This issue is impossible to happen in V7 and will not have any limit because:
This issue is impossible to happen in V7 and will not have any limit because:
- Each question is submitted in individual HTTP request, whereas V6 lumps everything and submits one giant HTTP request
- The submission uses HTTP request body and not HTTP parameter
Great. @manzurayusup thanks for your help with investigating.
@damithc thank you for explaining this to me