[Geoserver-users] ShapefileReader leaving file locked?

Dear all,

I'm struggling with one of those situations where Geoserver hangs up,
occupying 100% of CPU and not answering requests. In the log files I'm
getting loads of time out exceptions, but nothing special, apart the
exception reproduced below. This locked file exception is coming when
I shutdown Geoserver.

Can this exception be causing Geoserver to hang up? If not, is there a
way to avoid Geoserver permanently occupying the CPU at 100%, like
tweaking some threshold?

Thank you,

Luís

--------

2011-05-16 10:26:02,084 ERROR [data.shapefile] - The following locker
still has a lock� read on
file:/srv/arhtapp/geoserver/data_dir/00_BDG/VECTOR/LIMITES_ADM_PTCONT/LIMITES_ARHT/LIMITES_ARHT.shp
by org.geotools.data.shapefile.shp.ShapefileReader
it was created with the following stack trace
org.geotools.data.shapefile.ShpFilesLocker$Trace: Locking
file:/srv/arhtapp/geoserver/data_dir/00_BDG/VECTOR/LIMITES_ADM_PTCONT/LIMITES_ARHT/LIMITES_ARHT.shp
for read by org.geotools.data.shapefile.shp.ShapefileReader in thread
btpool0-51
  at org.geotools.data.shapefile.ShpFilesLocker.setTraceException(ShpFilesLocker.java:72)
  at org.geotools.data.shapefile.ShpFilesLocker.<init>(ShpFilesLocker.java:36)
  at org.geotools.data.shapefile.ShpFiles.acquireRead(ShpFiles.java:365)
  at org.geotools.data.shapefile.ShpFiles.getReadChannel(ShpFiles.java:813)
  at org.geotools.data.shapefile.shp.ShapefileReader.<init>(ShapefileReader.java:213)
  at org.geotools.data.shapefile.ShapefileDataStore.openShapeReader(ShapefileDataStore.java:453)
  at org.geotools.data.shapefile.indexed.IndexedShapefileDataStore.getAttributesReader(IndexedShapefileDataStore.java:458)
  at org.geotools.data.shapefile.indexed.IndexedShapefileDataStore.getFeatureReader(IndexedShapefileDataStore.java:325)
  at org.geotools.data.AbstractDataStore.getFeatureReader(AbstractDataStore.java:385)
  at org.geotools.data.DefaultFeatureResults.reader(DefaultFeatureResults.java:210)
  at org.geotools.data.store.DataFeatureCollection.openIterator(DataFeatureCollection.java:224)
  at org.geotools.data.store.DataFeatureCollection.iterator(DataFeatureCollection.java:194)
  at org.geoserver.feature.RetypingFeatureCollection.iterator(RetypingFeatureCollection.java:47)
  at org.geotools.renderer.lite.StreamingRenderer.drawOptimized(StreamingRenderer.java:1859)
  at org.geotools.renderer.lite.StreamingRenderer.processStylers(StreamingRenderer.java:1792)
  at org.geotools.renderer.lite.StreamingRenderer.paint(StreamingRenderer.java:699)
  at org.geotools.renderer.shape.ShapefileRenderer.renderWithStreamingRenderer(ShapefileRenderer.java:1525)
  at org.geotools.renderer.shape.ShapefileRenderer.paint(ShapefileRenderer.java:1373)
  at org.vfny.geoserver.wms.responses.DefaultRasterMapProducer.produceMap(DefaultRasterMapProducer.java:376)
  at org.vfny.geoserver.wms.responses.GetMapResponse.execute(GetMapResponse.java:426)
  at org.geoserver.ows.adapters.ResponseAdapter.getMimeType(ResponseAdapter.java:48)
  at org.geoserver.ows.Dispatcher.response(Dispatcher.java:712)
  at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:234)
  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.doGet(FrameworkServlet.java:501)
  at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
  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.headerComplete(HttpConnection.java:828)
  at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
  at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
  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)

2011/5/16 Luís de Sousa <luis.a.de.sousa@anonymised.com>:

Dear all,

I'm struggling with one of those situations where Geoserver hangs up,
occupying 100% of CPU and not answering requests.

Haven't experienced something like this for a long time. What version
of GS is that?

In the log files I'm
getting loads of time out exceptions, but nothing special, apart the
exception reproduced below. This locked file exception is coming when
I shutdown Geoserver.

Can this exception be causing Geoserver to hang up? If not, is there a
way to avoid Geoserver permanently occupying the CPU at 100%, like
tweaking some threshold?

Use jstack and find out what is chewing up all the CPU, see here:

http://docs.geoserver.org/latest/en/user/production/troubleshooting.html

Cheers
Andrea

--
-------------------------------------------------------
Ing. Andrea Aime
GeoSolutions S.A.S.
Tech lead

Via Poggio alle Viti 1187
55054 Massarosa (LU)
Italy

phone: +39 0584 962313
fax: +39 0584 962313

http://www.geo-solutions.it
http://geo-solutions.blogspot.com/
http://www.youtube.com/user/GeoSolutionsIT
http://www.linkedin.com/in/andreaaime
http://twitter.com/geowolf

-------------------------------------------------------