[Geoserver-devel] WFS GetFeature Request

Hello,

GetFeature request returns "Failed to process the file name template null"
service exception.
http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip
Similar requests against other layers work fine.
Server logs are given below.
Any help is much appreciated.

Thanks.

---Sri

2011-05-24 21:16:52,356 INFO [geoserver.wfs] -
Request: getFeature
        handle = null
        service = WFS
        version = 1.0.0
        baseUrl = http://sedac.ciesin.columbia.edu:80/geoserver/
        providedVersion = null
        extendedProperties = {}
        query = [net.opengis.wfs.impl.QueryTypeImpl@anonymised.com (group: null,
propertyName: null, function: null, filter: [ bbox POLYGON ((-81.1822
36.9407, -81.1822 50.4305, -65.9204 50.4305, -65.9204 36.9407, -81.1822
36.9407)) ], sortBy: null, featureVersion: null, handle: null, srsName:
null, typeName:
[{http://www.ciesin.columbia.edu}esri-administrative-boundaries_level-1])]
        maxFeatures = null
        outputFormat = shape-zip
        resultType = results
        traverseXlinkDepth = null
        traverseXlinkExpiry = null
        formatOptions = {}
        metadata = null
2011-05-24 21:16:52,358 ERROR [geoserver.ows] -
org.geoserver.wfs.WFSException: Failed to process the file name template
        at
org.geoserver.wfs.response.ShapeZipOutputFormat$FileNameSource.processTempla
te(ShapeZipOutputFormat.java:699)
        at
org.geoserver.wfs.response.ShapeZipOutputFormat$FileNameSource.getZipName(Sh
apeZipOutputFormat.java:708)
        at
org.geoserver.wfs.response.ShapeZipOutputFormat.getHeaders(ShapeZipOutputFor
mat.java:155)
        at org.geoserver.ows.Dispatcher.response(Dispatcher.java:740)
        at
org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:233)
        at
org.springframework.web.servlet.mvc.AbstractController.handleRequest(Abstrac
tController.java:153)
        at
org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(Si
mpleControllerHandlerAdapter.java:48)
        at
org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServl
et.java:875)
        at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServle
t.java:809)
        at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkSer
vlet.java:571)
        at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java
:501)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:290)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanup
Filter.java:23)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:68)
        at
org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(Exce
ptionTranslationFilter.java:101)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(Exce
ptionTranslationFilter.java:101)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp
(BasicProcessingFilter.java:174)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.providers.anonymous.AnonymousProcessingFilter.d
oFilterHttp(AnonymousProcessingFilter.java:105)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.ui.rememberme.RememberMeProcessingFilter.doFilt
erHttp(RememberMeProcessingFilter.java:116)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.wrapper.SecurityContextHolderAwareRequestFilter
.doFilterHttp(SecurityContextHolderAwareRequestFilter.java:91)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.ui.AbstractProcessingFilter.doFilterHttp(Abstra
ctProcessingFilter.java:278)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.ui.logout.LogoutFilter.doFilterHttp(LogoutFilte
r.java:89)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.context.HttpSessionContextIntegrationFilter.doF
ilterHttp(HttpSessionContextIntegrationFilter.java:192)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.context.HttpSessionContextIntegrationFilter.doF
ilterHttp(HttpSessionContextIntegrationFilter.java:192)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(
FilterSecurityInterceptor.java:99)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilte
r(FilterSecurityInterceptor.java:83)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(
FilterSecurityInterceptor.java:99)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilte
r(FilterSecurityInterceptor.java:83)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:394)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(
FilterSecurityInterceptor.java:99)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilte
r(FilterSecurityInterceptor.java:83)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(Exce
ptionTranslationFilter.java:101)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.providers.anonymous.AnonymousProcessingFilter.d
oFilterHttp(AnonymousProcessingFilter.java:105)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp
(BasicProcessingFilter.java:174)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.context.HttpSessionContextIntegrationFilter.doF
ilterHttp(HttpSessionContextIntegrationFilter.java:192)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy
.java:185)
        at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegating
Filter.java:64)
        at
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter
.java:39)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilte
r.java:49)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterE
ncodingFilter.java:109)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:394)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.invoke(
FilterSecurityInterceptor.java:109)
        at
org.springframework.security.intercept.web.FilterSecurityInterceptor.doFilte
r(FilterSecurityInterceptor.java:83)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.ui.ExceptionTranslationFilter.doFilterHttp(Exce
ptionTranslationFilter.java:101)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.providers.anonymous.AnonymousProcessingFilter.d
oFilterHttp(AnonymousProcessingFilter.java:105)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.ui.basicauth.BasicProcessingFilter.doFilterHttp
(BasicProcessingFilter.java:174)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.context.HttpSessionContextIntegrationFilter.doF
ilterHttp(HttpSessionContextIntegrationFilter.java:235)
        at
org.springframework.security.ui.SpringSecurityFilter.doFilter(SpringSecurity
Filter.java:53)
        at
org.springframework.security.util.FilterChainProxy$VirtualFilterChain.doFilt
er(FilterChainProxy.java:406)
        at
org.springframework.security.util.FilterChainProxy.doFilter(FilterChainProxy
.java:185)
        at
org.springframework.security.util.FilterToBeanProxy.doFilter(FilterToBeanPro
xy.java:99)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:71)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.filters.ReverseProxyFilter.doFilter(ReverseProxyFilter.java:18
3)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:41)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:46
)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
FilterChain.java:235)
        at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
ain.java:206)
        at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
va:233)
        at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
va:191)
        at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127
)
        at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102
)
        at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
:109)
        at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
        at
org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at
org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at
org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at
org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java
:891)
        at
org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.jav
a:690)
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.NullPointerException
        at
org.geoserver.wfs.response.ShapeZipOutputFormat$FileNameSource.getTypeName(S
hapeZipOutputFormat.java:704)
        at
org.geoserver.wfs.response.ShapeZipOutputFormat$FileNameSource.processTempla
te(ShapeZipOutputFormat.java:681)
        ... 126 more

On Wed, May 25, 2011 at 3:32 AM, Sri Vinay <sri@anonymised.com> wrote:

Hello,

GetFeature request returns “Failed to process the file name template null”
service exception.
http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip
Similar requests against other layers work fine.
Server logs are given below.
Any help is much appreciated.

What version of GeoServer is this?
The line numbers do not match with the source code I have

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


On Wed, May 25, 2011 at 8:46 AM, Andrea Aime <andrea.aime@anonymised.com.1268…> wrote:

On Wed, May 25, 2011 at 3:32 AM, Sri Vinay <sri@anonymised.com> wrote:

Hello,

GetFeature request returns “Failed to process the file name template null”
service exception.
http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip
Similar requests against other layers work fine.
Server logs are given below.
Any help is much appreciated.

What version of GeoServer is this?
The line numbers do not match with the source code I have

Did some history research, looks like the code was like this back in January 2011.
The shape-zip code has changed a lot in the meantime, can you try out a recent
build?

Also, about that layer, was there anything specific about it? Was it renamed when
the others were not? Is it in a non default workspace?
What makes it different?

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


Hi list,

I’ve tested the db config module with success. I would like to use it in a cloud environment because multiple Geoserver instances have to access the same config. Is this module meant to run into production environments? Is there any expericence and feedback with it?

Regards,
Rémy

The fact that the DB config module is a community module and not an extension is an indication that it hasn’t met the quality requirements for promotion to extension (see http://docs.geoserver.org/stable/en/developer/policies/community-modules.html). However, one of those requirements is real-world users, so if you want to see it become supported in the future the way to make it happen is to use it, report bugs, and maybe fund some development on it or get your own hands dirty. I haven’t looked at it in some time but I think there are still some functionality gaps (ie, some things like featureinfo templates are not stored in the database) as well as just a general lack of field testing.


David Winslow
OpenGeo - http://opengeo.org/

On Wed, May 25, 2011 at 4:17 AM, web <web@anonymised.com> wrote:

Hi list,

I’ve tested the db config module with success. I would like to use it in a cloud environment because multiple Geoserver instances have to access the same config. Is this module meant to run into production environments? Is there any expericence and feedback with it?

Regards,
Rémy


vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel

Hi Andrea,

Geoserver version 2.1-RC5

Thanks for looking into this.

—Sri

From: andrea.aime@anonymised.com [mailto:andrea.aime@anonymised.com] On Behalf Of Andrea Aime
Sent: Wednesday, May 25, 2011 2:50 AM
To: sri@anonymised.com
Cc: geoserver-devel@anonymised.comforge.net
Subject: Re: [Geoserver-devel] WFS GetFeature Request

On Wed, May 25, 2011 at 8:46 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Wed, May 25, 2011 at 3:32 AM, Sri Vinay <sri@anonymised.com> wrote:

Hello,

GetFeature request returns “Failed to process the file name template null”
service exception.
http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip
Similar requests against other layers work fine.
Server logs are given below.
Any help is much appreciated.

What version of GeoServer is this?

The line numbers do not match with the source code I have

Did some history research, looks like the code was like this back in January 2011.

The shape-zip code has changed a lot in the meantime, can you try out a recent

build?

Also, about that layer, was there anything specific about it? Was it renamed when

the others were not? Is it in a non default workspace?

What makes it different?

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


I echo David’s comments and add a few things. While I have tested it successfully in a multi server environment it is still pretty rough. And as David states its not yet complete with regard to configuration. Style SLD’s, templates, and other supplementary fiels are still required to be on the local file system so using dbconfig to store configuration still requires a hybrid database, shared file system approach.

That said any feedback you can provide will be much appreciated and hopefully get the module to supported status sooner.

-Justin

On Wed, May 25, 2011 at 6:20 AM, David Winslow <dwinslow@anonymised.com> wrote:

The fact that the DB config module is a community module and not an extension is an indication that it hasn’t met the quality requirements for promotion to extension (see http://docs.geoserver.org/stable/en/developer/policies/community-modules.html). However, one of those requirements is real-world users, so if you want to see it become supported in the future the way to make it happen is to use it, report bugs, and maybe fund some development on it or get your own hands dirty. I haven’t looked at it in some time but I think there are still some functionality gaps (ie, some things like featureinfo templates are not stored in the database) as well as just a general lack of field testing.


David Winslow
OpenGeo - http://opengeo.org/

On Wed, May 25, 2011 at 4:17 AM, web <web@anonymised.com> wrote:

Hi list,

I’ve tested the db config module with success. I would like to use it in a cloud environment because multiple Geoserver instances have to access the same config. Is this module meant to run into production environments? Is there any expericence and feedback with it?

Regards,
Rémy


vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1


Geoserver-devel mailing list
Geoserver-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

Thanks guys for your answers about this module.

So there is two ways to externalize the Geoserver’s config:

  • By using the geoserver config module
  • Or by specifying the GEOSERVER_DATA_DIR to another directory

One question more, which of these approaches is the best for a deployement on the cloud?

On Wed, May 25, 2011 at 10:11 AM, web <web@anonymised.com> wrote:

Thanks guys for your answers about this module.

So there is two ways to externalize the Geoserver’s config:

  • By using the geoserver config module
  • Or by specifying the GEOSERVER_DATA_DIR to another directory

One question more, which of these approaches is the best for a deployement on the cloud?

“cloud” is a very vague term. You will have to be more specific. Are you talking about a specific “cloud” infrastructure like amazon? Or are you talking about setting up a geoserver cluster?


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.

Hi,

We would like to put Geoserver into a custom cloud environment composed by a frontal load balancer that can raise many instances depending on the load, cpu/mem usage, the request is then dispatched to an instance. It is totally transparent to the user, so if a request is addressed to Geoserver, you’ll never know on which instance it will go. Therefore these many instances must share the same Geoserver config. The question remains: are we going to face data inconsistency because many instances are editting the non-synchronized file-based Geoserver config? This is why I thought about using the db config plugin, to avoid these problems (even if I’m not sure it will help that way…).

However what we mostly do with Geoserver is creating/editing featuretypes, layers and styles. And our users have separate namespaces and do not edit resources from other ones, only their owns. So maybe sharing the file based config between the instances would be sufficient?

Regards,
Rémy

On Thu, May 26, 2011 at 9:10 AM, web <web@anonymised.com> wrote:

Hi,

We would like to put Geoserver into a custom cloud environment composed by a
frontal load balancer that can raise many instances depending on the load,
cpu/mem usage, the request is then dispatched to an instance. It is totally
transparent to the user, so if a request is addressed to Geoserver, you'll
never know on which instance it will go. Therefore these many instances must
share the same Geoserver config. The question remains: are we going to face
data inconsistency because many instances are editting the non-synchronized
file-based Geoserver config? This is why I thought about using the db config
plugin, to avoid these problems (even if I'm not sure it will help that
way..).

What you're looking at are the typical clustered deployment issues,
cloud or not.
You'll need to have all the GeoServer instancies use the same shared data
directory, and also have a way to synchronize them when the
configuration changes
on one.

However what we mostly do with Geoserver is creating/editing featuretypes,
layers and styles. And our users have separate namespaces and do not edit
resources from other ones, only their owns. So maybe sharing the file based
config between the instances would be sufficient?

This might be indeed tricky, as Geoserver caches the configuration
fully in memory.
Every time the configuration changes you need to force the other instances
in the cluster to reload the config from files, which is possible via
a rest config
call.
In your case you have multiple admins though, it might get tricky, the reload
might indeed result in inconsistencies and errors, if files are
changed during a reload
the reader may find an unfinished xml file to read (as far as I
remember we follow
a "write and rename" approach, so that should not happen much...

I'd suggest you add a restlet to do only a partial reload instead, one that
only forces the reload of a single workspace. You do have a single admin
per workspace, do you?

Btw, how do you manage to give per workspace administration? GeoServer
still does not have the notion of a "partial" administrator?
The GS admin is, today, like root on Unix systems, it's all powerful.

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

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

Hi Andrea,

thanks for the inputs. I did not notice it into the first mail but we use 1 admin. I told about many users, but it is not referring at Geoserver itself. In some words, we have a servlet (our application) in front of Geoserver. This servlet can create featuretypes and layers via REST for our CMS users (Joomla). But it always authenticate to Geoserver with the admin account to do this.
Each CMS user owns a namespace, a datastore and db postgis schema, so they never access to ressources from eachother.

So data inconcitency may not occur in this case.The issue will be more, as you noticed, if a user creates a new layer on instance 1 and then the page reloads on instance 2, even if the shared config is up-to-date, he won’t be able to see this layer because the cache has not been realoaded.

Then like you said I have to reload the cache after every change on all servers. Is it also possible to configure GS not to use cache at all?!

You mean we can reload only a namespace. Do you mean instead of calling:

If we use the db config plugin to store the config in a database, then this config will remain cached in memory of all instances anyway or no more cache will be used?

Regards,
Remy

On Thu, May 26, 2011 at 5:00 PM, web <web@anonymised.com> wrote:

Hi Andrea,

thanks for the inputs. I did not notice it into the first mail but we use 1
admin. I told about many users, but it is not referring at Geoserver itself.
In some words, we have a servlet (our application) in front of Geoserver.
This servlet can create featuretypes and layers via REST for our CMS users
(Joomla). But it always authenticate to Geoserver with the admin account to
do this.
Each CMS user owns a namespace, a datastore and db postgis schema, so they
never access to ressources from eachother.

So data inconcitency may not occur in this case.The issue will be more, as
you noticed, if a user creates a new layer on instance 1 and then the page
reloads on instance 2, even if the shared config is up-to-date, he won't be
able to see this layer because the cache has not been realoaded.

Then like you said I have to reload the cache after every change on all
servers. Is it also possible to configure GS not to use cache at all?!

Nope, not possible. Not simple either.

You mean we can reload only a namespace. Do you mean instead of calling:

http://localhost:8080/geoserver/rest/reload
we can use something like:
http://localhost:8080/geoserver/rest/workspaces/acme/reload ?

Yeah, it would be nice to have something like that (it's not there, but it
can be created).

If we use the db config plugin to store the config in a database, then this
config will remain cached in memory of all instances anyway or no more cache
will be used?

I honestly don't know

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

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

Hi Andrea,

I tested it on 2.1.0 and seems to be working fine.

http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip

Thanks.

—Sri

From: andrea.aime@anonymised.com [mailto:andrea.aime@anonymised.com] On Behalf Of Andrea Aime
Sent: Wednesday, May 25, 2011 2:50 AM
To: sri@anonymised.com
Cc: geoserver-devel@lists.sourceforge.net
Subject: Re: [Geoserver-devel] WFS GetFeature Request

On Wed, May 25, 2011 at 8:46 AM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Wed, May 25, 2011 at 3:32 AM, Sri Vinay <sri@anonymised.com> wrote:

Hello,

GetFeature request returns “Failed to process the file name template null”
service exception.
http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip
Similar requests against other layers work fine.
Server logs are given below.
Any help is much appreciated.

What version of GeoServer is this?

The line numbers do not match with the source code I have

Did some history research, looks like the code was like this back in January 2011.

The shape-zip code has changed a lot in the meantime, can you try out a recent

build?

Also, about that layer, was there anything specific about it? Was it renamed when

the others were not? Is it in a non default workspace?

What makes it different?

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


On Thu, May 26, 2011 at 7:00 PM, Sri Vinay <sri@anonymised.com> wrote:

Hi Andrea,

I tested it on 2.1.0 and seems to be working fine.

http://sedac.ciesin.columbia.edu/geoserver/wfs?service=WFS&version=1.0.0&req
uest=GetFeature&typeName=cartographic:esri-administrative-boundaries_level-1
&bbox=-81.1822,+36.9407,-65.9204,+50.4305&outputFormat=shape-zip

Good, thanks for letting us know

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

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

Since I’m also curious and can no longer bear the suspense, which approach is recommended for a cluster?

On Wed, May 25, 2011 at 8:27 AM, Justin Deoliveira <jdeolive@anonymised.com> wrote:

On Wed, May 25, 2011 at 10:11 AM, web <web@anonymised.com9…> wrote:

Thanks guys for your answers about this module.

So there is two ways to externalize the Geoserver’s config:

  • By using the geoserver config module
  • Or by specifying the GEOSERVER_DATA_DIR to another directory

One question more, which of these approaches is the best for a deployement on the cloud?

“cloud” is a very vague term. You will have to be more specific. Are you talking about a specific “cloud” infrastructure like amazon? Or are you talking about setting up a geoserver cluster?


Justin Deoliveira
OpenGeo - http://opengeo.org
Enterprise support for open source geospatial.


vRanger cuts backup time in half-while increasing security.
With the market-leading solution for virtual backup and recovery,
you get blazing-fast, flexible, and affordable data protection.
Download your free trial now.
http://p.sf.net/sfu/quest-d2dcopy1


Geoserver-devel mailing list
Geoserver-devel@anonymised.comsts.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/geoserver-devel


Shane StClair
Software Engineer
Axiom Consulting & Design
523 W 8th Ave
Suite 104
Anchorage, AK 99501
http://www.axiomalaska.com

On Fri, May 27, 2011 at 2:10 AM, Shane StClair <shane@anonymised.com> wrote:

Since I'm also curious and can no longer bear the suspense, which approach
is recommended for a cluster?

What we do is to have a single GS used for administartion, it's the
only one that
can write to the data directory, which is NFS shared/NAS mounted.
And then we have scripts in place to call rest config on all the other
boxes forcing
the reloading of the configuration

Another typical approach is to have an off line machine that can access the same
data but it's not web accessible, this is the "stage" environment.
The admin prepares the next set of layers and styles and whatnot, and then kicks
a script that copies the data dir contents to the cluster and forces the reload
on all boxes. It's a staging/production setup.
Sometimes the copy mechanism is subversion (check-in in stage,
checkout in production),
so that the data dir history is preserved and it's easy to go back to
a previous version of it.

In general I don't recommend to change the production "live" as people would see
unfinished setups and possibly faulty layers (you don't know it
actually works until you
have tested it), stage/production separation is normally recommended.

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

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

Thank you, this is very helpful.

On Thu, May 26, 2011 at 10:40 PM, Andrea Aime <andrea.aime@anonymised.com> wrote:

On Fri, May 27, 2011 at 2:10 AM, Shane StClair <shane@anonymised.com…> wrote:

Since I’m also curious and can no longer bear the suspense, which approach
is recommended for a cluster?

What we do is to have a single GS used for administartion, it’s the
only one that
can write to the data directory, which is NFS shared/NAS mounted.
And then we have scripts in place to call rest config on all the other
boxes forcing
the reloading of the configuration

Another typical approach is to have an off line machine that can access the same
data but it’s not web accessible, this is the “stage” environment.
The admin prepares the next set of layers and styles and whatnot, and then kicks
a script that copies the data dir contents to the cluster and forces the reload
on all boxes. It’s a staging/production setup.
Sometimes the copy mechanism is subversion (check-in in stage,
checkout in production),
so that the data dir history is preserved and it’s easy to go back to
a previous version of it.

In general I don’t recommend to change the production “live” as people would see
unfinished setups and possibly faulty layers (you don’t know it
actually works until you
have tested it), stage/production separation is normally recommended.

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



Shane StClair
Software Engineer
Axiom Consulting & Design
523 W 8th Ave
Suite 104
Anchorage, AK 99501
http://www.axiomalaska.com