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.