Bug #5246
closedHTTP response code: 500 when trying to upload large KAR through kepler
0%
Description
Recently I tried (a few times) to upload a large "run-kar" from the Workflow Run Manager in Kepler to the KeplerDev metacat, but get the following stacktrace from Kepler. The kar tpc03-veld-condition-woody-run1.kar, is ~1M, and the karXml (the metadata) is ~1.9M. The run kar is created by running the following workflow once, and then clicking on the run row in the WRM and selecting upload:
https://code.ecoinformatics.org/code/kruger/trunk/workflows/tpc03-veld-condition/tpc03-veld-condition-woody.kar
--------
org.kepler.objectmanager.repository.RepositoryException: java.rmi.RemoteException: Server returned HTTP response code: 500 for URL: http://kepler-dev.nceas.ucsb.edu:80/kepler/metacat
at org.kepler.objectmanager.repository.EcogridRepository.put(EcogridRepository.java:334)
at org.kepler.kar.UploadToRepository.uploadMetadata(UploadToRepository.java:154)
at org.kepler.gui.kar.ComponentUploader.upload(ComponentUploader.java:119)
at org.kepler.gui.kar.ExportArchiveAction.actionPerformed(ExportArchiveAction.java:478)
at org.kepler.workflowrunmanager.gui.kar.ExportRunsArchiveAction.actionPerformed(ExportRunsArchiveAction.java:109)
at org.kepler.workflowrunmanager.gui.WorkflowRunManagerPanel$2.actionPerformed(WorkflowRunManagerPanel.java:1220)
--------
Uploading smaller run-kars works.
Jing and I took a look at catalina.out on dev and see the following associated errors to do with 'Post too large':
--------
knb 20101117-15:01:57: [ERROR]: Servlet.service() for servlet metacat threw exception [org.apache.catalina.core.ContainerBase.[Catalina].[kepler-dev.nceas.ucsb.edu].[/kepler].[metacat]]
java.lang.IllegalStateException: Post too large
at org.apache.catalina.connector.Request.parseParameters(Request.java:2388)
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1047)
at org.apache.catalina.connector.RequestFacade.getParameterNames(RequestFacade.java:369)
at edu.ucsb.nceas.metacat.MetaCatServlet.handleGetOrPost(MetaCatServlet.java:766)
at edu.ucsb.nceas.metacat.MetaCatServlet.doPost(MetaCatServlet.java:534)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
knb 20101117-15:01:57: [ERROR]: Servlet.service() for servlet metacat threw exception [org.apache.catalina.core.ContainerBase.[Catalina].[kepler-dev.nceas.ucsb.edu].[/kepler].[metacat]]
java.lang.IllegalStateException: Post too large
at org.apache.catalina.connector.Request.parseParameters(Request.java:2388)
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1047)
at org.apache.catalina.connector.RequestFacade.getParameterNames(RequestFacade.java:369)
at edu.ucsb.nceas.metacat.MetaCatServlet.handleGetOrPost(MetaCatServlet.java:766)
at edu.ucsb.nceas.metacat.MetaCatServlet.doPost(MetaCatServlet.java:534)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
knb 20101117-15:01:57: [ERROR]: Servlet.service() for servlet metacat threw exception [org.apache.catalina.core.ContainerBase.[Catalina].[kepler-dev.nceas.ucsb.edu].[/kepler].[metacat]]
java.lang.IllegalStateException: Post too large
at org.apache.catalina.connector.Request.parseParameters(Request.java:2388)
at org.apache.catalina.connector.Request.getParameterNames(Request.java:1047)
at org.apache.catalina.connector.RequestFacade.getParameterNames(RequestFacade.java:369)
at edu.ucsb.nceas.metacat.MetaCatServlet.handleGetOrPost(MetaCatServlet.java:766)
at edu.ucsb.nceas.metacat.MetaCatServlet.doPost(MetaCatServlet.java:534)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:710)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:122)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:174)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:200)
at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:283)
at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:773)
at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:703)
at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:895)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
at java.lang.Thread.run(Thread.java:619)
Failed to send data to metacat 3 times: Server returned HTTP response code: 500 for URL: http://kepler-dev.nceas.ucsb.edu:80/kepler/metacat
metacaturl: http://kepler-dev.nceas.ucsb.edu:80/kepler/metacat
knb 20101117-15:01:57: [WARN]: UploadMetacatMetadata() exception: Server returned HTTP response code: 500 for URL: http://kepler-dev.nceas.ucsb.edu:80/kepler/metacat [org.ecoinformatics.ecogrid.metacat.put.MetacatPutImpl]
Updated by Jing Tao almost 14 years ago
I searched online and found:
Apache Tomcat by default sets a limit on the maximum size of HTTP POST requests it accepts. In Tomcat 5, this limit is set to 2 MB. When you try to upload files larger than 2 MB, this error can occur.
The solution is to reconfigure Tomcat to accept larger POST requests, either by increasing the limit, or by disabling it. This can be done by editing [TOMCAT_DIR]/conf/server.xml. Set the Tomcat configuration parameter maxPostSize for the HTTPConnector to a larger value (in bytes) to increase the limit. Setting it to 0 in will disable the size check.
So on kepler-dev, i added a new parameter - maxPostSize with value equaling 0 on connect 8009. Then I asked derik to test. It worked.