librelist archives

« back to archive

GeoNode layer permissions and GeoServer issues

GeoNode layer permissions and GeoServer issues

From:
mbertrand
Date:
2011-01-31 @ 22:03
Hello,

I'm getting some odd behavior when setting layer permissions, 
particularly when setting permissions for "Anyone" to "No Permissions".

I've got GeoServer running inside Tomcat, with GeoNode/WorldMap running 
under Apache/mod_wsgi.

After GeoServer has been running for some amount of time, if I set 
permissions for "Anyone" to "No Permissions", the layer no longer 
appears on the map for any user including the layer owner, and the 
tomcat log contains the following error:

org.geoserver.wfs.WFSException: Could not find type: 
{http://geonode.org/}<layername>
     at 
org.geoserver.wfs.DescribeFeatureType.run(DescribeFeatureType.java:138)
     at 

org.geoserver.wfs.DefaultWebFeatureService.describeFeatureType(DefaultWebFeatureService.java:98)
     at sun.reflect.GeneratedMethodAccessor373.invoke(Unknown Source)
     at 

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at 

org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:310)
     at 

org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:182)
     at 

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:149)
     at org.geoserver.ows.util.EMFLogger.invoke(EMFLogger.java:51)
     at 

org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:171)
     at 

org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:204)
     at $Proxy18.describeFeatureType(Unknown Source)
     at sun.reflect.GeneratedMethodAccessor372.invoke(Unknown Source)
     at 

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
     at java.lang.reflect.Method.invoke(Method.java:597)
     at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:599)
     at 
org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:230)
     at 

org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:153)
     at 

org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:48)


I suspect some error must occur at some point, possibly during a file 
upload?, that somehow confuses GeoServer's security checks until it is 
restarted.
If I just restart Tomcat, the layer security then behaves as expected: 
the layer does not appear on the map for unauthorized users, but does 
appear for all registered users.

However, some tiles appear as blanks with the error code 
'LayerNotDefined Could not find layer geonode:<layername>'
This appears in the tomcat log:

31 Jan 16:09:44 WARN [geonode.security] - Error connecting to the 
GeoNode server for authentication purposes
java.net.SocketTimeoutException: Read timed out
     at java.net.SocketInputStream.socketRead0(Native Method)
     at java.net.SocketInputStream.read(SocketInputStream.java:129)
     at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
     at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
     at 
org.apache.commons.httpclient.HttpParser.readRawLine(HttpParser.java:78)
     at 
org.apache.commons.httpclient.HttpParser.readLine(HttpParser.java:106)
     at 
org.apache.commons.httpclient.HttpConnection.readLine(HttpConnection.java:1116)
     at 

org.apache.commons.httpclient.MultiThreadedHttpConnectionManager$HttpConnectionAdapter.readLine(MultiThreadedHttpConnectionManager.java:1413)
.............
followed immediately by:
31 Jan 16:09:45 ERROR [geoserver.ows] -
org.vfny.geoserver.wms.WmsException: Could not find layer 
geonode:<layername>
     at 

org.geoserver.wms.kvp.GetMapKvpRequestReader.parseLayers(GetMapKvpRequestReader.java:1099)
     at 
org.geoserver.wms.kvp.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:179)
     at 
org.geoserver.wms.kvp.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:71)
     at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1120)
     at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:457)

So it seems that security checks is are being made for each tile, and 
some of these checks are timing out.