[Geoserver-devel] [jira] Created: (GEOS-3393) WMS Post GetMap fails due to exception in OWS Dispatcher on a request.input.reset() (mark invalid)

WMS Post GetMap fails due to exception in OWS Dispatcher on a request.input.reset() (mark invalid)
--------------------------------------------------------------------------------------------------

                 Key: GEOS-3393
                 URL: http://jira.codehaus.org/browse/GEOS-3393
             Project: GeoServer
          Issue Type: Bug
          Components: WMS
    Affects Versions: 2.0-RC1
         Environment: Apache Wicket 1.4, WicketStuff-Openlayers, OpenLayers 2.8, Postgis (postgresql 8.3) Debian Lenny.
Test system (webapp + geoserver )is 32-bit Linux
Production system is geoserver running on 64-bit Linux

            Reporter: Michael O'Cleirigh
            Assignee: Andrea Aime

I've built a WMS proxy that converts OpenLayer WMS GET requests into POST requests. This allows me to set any number of filters without hitting the url limit restrictions. The specific filter values are passed into the proxy through a seperate AJAX request from the client.

I'm having a problem where everything works properly if geoserver is running on the same machine as the web application but I get pink tiles when running geoserver on a remote machine (the production scenario). The pink tiles only occur when the GetMap XML document contains a custom SLD that encodes specific filters (i.e. when the document starts to get large).

When the size of the generated XML document gets over 3500 characters I start to see the pink tiles. It is not all the tiles for some unknown reason but most of them.

Following the advice of this thread from March 2009: http://www.mail-archive.com/geoserver-devel@lists.sourceforge.net/msg04310.html

I was able to change the mark size from 2048 to 8192 and get rid of the problem (I've tested up to 10000 character documents) The suggestion is that 8192 matches the default value in BufferedReader and this is what stops the error from occurring.

Can the default value be changed to 8192?

The applicable lines are:

Dispatcher.java line 254
Dispatcher.java line 287

This is the stacktrace that fills the log for each request that a pink tile is generated:

java.io.IOException: Mark invalid
        at java.io.BufferedReader.reset(BufferedReader.java:485)
        at org.geoserver.ows.Dispatcher.readOpPost(Dispatcher.java:1216)
        at org.geoserver.ows.Dispatcher.service(Dispatcher.java:320)
        at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:196)
        at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
        at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:875)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:809)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:571)
        at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:511)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
        at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1093)
        at org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:108)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265)
        at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107)
        at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:124)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.providers.anonymous.AnonymousProcessingFilter.doFilter(AnonymousProcessingFilter.java:125)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.ui.basicauth.BasicProcessingFilter.doFilter(BasicProcessingFilter.java:174)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249)
        at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275)
        at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149)
        at org.acegisecurity.util.FilterToBeanProxy.doFilter(FilterToBeanProxy.java:98)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:73)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:183)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
        at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1084)
        at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:360)
        at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216)
        at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181)
        at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726)
        at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:405)
        at org.mortbay.jetty.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
        at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
        at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152)
        at org.mortbay.jetty.Server.handle(Server.java:324)
        at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505)
        at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:842)
        at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:730)
        at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205)
        at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
        at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395)
        at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450)

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira