[Geoserver-users] granuleLocation exception after modifying GeoServer store table

I am attempting to create a time indexed raster (.png's) data layer in
GeoServer using the ImageMosaic plugin. I am using the GeoServer REST api to
create
this layer. Once the layer is created in the PostGIS database I am dropping
the table that GeoServer creates and replacing it with a view of the
same name to a table with various metadata for the layer I have created.
When I attempt to view the mosaic on the Layer Preview page, I receive the
following exception:

2014-10-28 22:27:51,770 INFO [geoserver.wms] -
Request: getServiceInfo
2014-10-28 22:27:52,036 ERROR [geoserver.ows] -
org.geoserver.platform.ServiceException: Error rendering coverage on the
fast path
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:331)
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:251)
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:123)
    at org.geoserver.wms.GetMap.executeInternal(GetMap.java:509)
    at org.geoserver.wms.GetMap.run(GetMap.java:253)
    at org.geoserver.wms.GetMap.run(GetMap.java:124)
    at
org.geoserver.wms.DefaultWebMapService.getMap(DefaultWebMapService.java:328)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at
org.springframework.aop.support.AopUtils.invokeJoinpointUsingReflection(AopUtils.java:319)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.invokeJoinpoint(ReflectiveMethodInvocation.java:183)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at
org.geoserver.kml.WebMapServiceKmlInterceptor.invoke(WebMapServiceKmlInterceptor.java:34)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at
org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:61)
    at
org.geoserver.gwc.wms.CacheSeedingWebMapService.invoke(CacheSeedingWebMapService.java:35)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at
org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:73)
    at
org.geoserver.gwc.wms.CachingWebMapService.invoke(CachingWebMapService.java:54)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at
org.geoserver.ows.util.RequestObjectLogger.invoke(RequestObjectLogger.java:54)
    at
org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at
org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:202)
    at $Proxy59.getMap(Unknown Source)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:601)
    at org.geoserver.ows.Dispatcher.execute(Dispatcher.java:774)
    at
org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:272)
    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:923)
    at
org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:852)
    at
org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:882)
    at
org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:778)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.geoserver.filters.ThreadLocalsCleanupFilter.doFilter(ThreadLocalsCleanupFilter.java:27)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:74)
    at
org.geoserver.wms.animate.AnimatorFilter.doFilter(AnimatorFilter.java:70)
    at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
    at
org.geoserver.flow.controller.IpBlacklistFilter.doFilter(IpBlacklistFilter.java:92)
    at
org.geoserver.filters.SpringDelegatingFilter$Chain.doFilter(SpringDelegatingFilter.java:70)
    at
org.geoserver.filters.SpringDelegatingFilter.doFilter(SpringDelegatingFilter.java:45)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.geoserver.platform.AdvancedDispatchFilter.doFilter(AdvancedDispatchFilter.java:49)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.vfny.geoserver.filters.SetCharacterEncodingFilter.doFilter(SetCharacterEncodingFilter.java:109)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:311)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
    at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:116)
    at
org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
    at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
    at
org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:113)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
    at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    at
org.geoserver.security.filter.GeoServerAnonymousAuthenticationFilter.doFilter(GeoServerAnonymousAuthenticationFilter.java:53)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
    at
org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilter(BasicAuthenticationFilter.java:150)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
    at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
    at
org.geoserver.security.filter.GeoServerBasicAuthenticationFilter.doFilter(GeoServerBasicAuthenticationFilter.java:82)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:68)
    at
org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87)
    at
org.geoserver.security.filter.GeoServerSecurityContextPersistenceFilter$1.doFilter(GeoServerSecurityContextPersistenceFilter.java:52)
    at
org.geoserver.security.filter.GeoServerCompositeFilter$NestedFilterChain.doFilter(GeoServerCompositeFilter.java:72)
    at
org.geoserver.security.filter.GeoServerCompositeFilter.doFilter(GeoServerCompositeFilter.java:91)
    at
org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:323)
    at
org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:173)
    at
org.geoserver.security.GeoServerSecurityFilterChainProxy.doFilter(GeoServerSecurityFilterChainProxy.java:134)
    at
org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:346)
    at
org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:259)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.geoserver.filters.LoggingFilter.doFilter(LoggingFilter.java:75)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.geoserver.filters.GZIPFilter.doFilter(GZIPFilter.java:42)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.geoserver.filters.SessionDebugFilter.doFilter(SessionDebugFilter.java:47)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.filters.CorsFilter.handleNonCORS(CorsFilter.java:439)
    at org.apache.catalina.filters.CorsFilter.doFilter(CorsFilter.java:178)
    at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
    at
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
    at
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
    at
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
    at
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
    at
org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)
    at
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at
org.apache.catalina.ha.session.JvmRouteBinderValve.invoke(JvmRouteBinderValve.java:219)
    at
org.apache.catalina.ha.tcp.ReplicationValve.invoke(ReplicationValve.java:335)
    at
org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
    at
org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
    at
org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
    at
org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)
Caused by: org.geoserver.platform.ServiceException:
org.geotools.data.DataSourceException: Unable to create this mosaic
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.directRasterRender(RenderedImageMapOutputFormat.java:898)
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.produceMap(RenderedImageMapOutputFormat.java:329)
    ... 119 more
Caused by: org.geotools.data.DataSourceException: Unable to create this
mosaic
    at
org.geotools.gce.imagemosaic.RasterLayerResponse.prepareResponse(RasterLayerResponse.java:1387)
    at
org.geotools.gce.imagemosaic.RasterLayerResponse.processRequest(RasterLayerResponse.java:1228)
    at
org.geotools.gce.imagemosaic.RasterLayerResponse.createResponse(RasterLayerResponse.java:1194)
    at
org.geotools.gce.imagemosaic.RasterManager.read(RasterManager.java:1125)
    at
org.geotools.gce.imagemosaic.ImageMosaicReader.read(ImageMosaicReader.java:849)
    at
org.geotools.gce.imagemosaic.ImageMosaicReader.read(ImageMosaicReader.java:828)
    at
org.geoserver.catalog.SingleGridCoverage2DReader.read(SingleGridCoverage2DReader.java:146)
    at
org.geoserver.catalog.CoverageDimensionCustomizerReader.read(CoverageDimensionCustomizerReader.java:200)
    at
org.geoserver.catalog.CoverageDimensionCustomizerReader.read(CoverageDimensionCustomizerReader.java:190)
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.readBestCoverage(RenderedImageMapOutputFormat.java:1296)
    at
org.geoserver.wms.map.RenderedImageMapOutputFormat.directRasterRender(RenderedImageMapOutputFormat.java:861)
    ... 120 more
Caused by: java.io.IOException: Problem visiting <layername> visiting
<layername>.fid--5cde125b_14958df4642_-7fe7:java.lang.IllegalArgumentException:
Illegal argument: "granuleLocation=20141028T222140Z.png".
    at
org.geotools.data.store.ContentFeatureSource.accepts(ContentFeatureSource.java:705)
    at
org.geotools.data.store.ContentFeatureCollection.accepts(ContentFeatureCollection.java:121)
    at
org.geotools.gce.imagemosaic.catalog.CachingDataStoreGranuleCatalog.getGranuleDescriptors(CachingDataStoreGranuleCatalog.java:158)
    at
org.geotools.gce.imagemosaic.RasterManager.getGranuleDescriptors(RasterManager.java:1135)
    at
org.geotools.gce.imagemosaic.RasterLayerResponse.prepareResponse(RasterLayerResponse.java:1336)
    ... 130 more
Caused by: java.lang.IllegalArgumentException: Illegal argument:
"granuleLocation=20141028T222140Z.png".
    at
org.geotools.gce.imagemosaic.GranuleDescriptor.<init>(GranuleDescriptor.java:617)
    at
org.geotools.gce.imagemosaic.catalog.CachingDataStoreGranuleCatalog$1.visit(CachingDataStoreGranuleCatalog.java:175)
    at
org.geotools.data.store.ContentFeatureSource.accepts(ContentFeatureSource.java:696)
    ... 134 more
2014-10-28 22:27:52,046 INFO [geoserver.flow] - Running requests: 0,
processing through flow controllers: 0

When I do not attempt to replace the GeoServer created table with my own
view the mosaic can be viewed without exceptions in the Layer Preview page.
So, something is incorrect about the view I am creating as a replacement for
the GeoServer store table.

Here is the description for the table that GeoServer creates when the layer
is first created through the REST api:

                                                 Table "public.<layername>"
   Column | Type |
Modifiers | Storage | Description
------------+-----------------------------+------------------------------------------------------------+----------+-------------
fid | integer | not null default
nextval('"<layername>_fid_seq"'::regclass) | plain |
the_geom | geometry(Polygon,404000) |
| main |
location | character varying(255) |
| extended |
imageindex | integer |
| plain |
time | timestamp without time zone |
| plain |
Indexes:
    "<layername>_pkey" PRIMARY KEY, btree (fid)
    "spatial_<layername>_the_geom" gist (the_geom)
Has OIDs: no

Here is the description for the view I am replacing the GeoServer table
with:

                                                  View "public.<layername>"
         Column | Type |
Modifiers | Storage | Description
------------------------+-----------------------------+-----------+----------+-------------
fid | bigint |
| plain |
time | timestamp without time zone | |
plain |
<metadata columns> | |
| |
location | text |
| extended |
the_geom | geometry(Geometry,4326) | | main
|

Please let me know if anyone is familiar with this error.

Thank you for any help

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/granuleLocation-exception-after-modifying-GeoServer-store-table-tp5170060.html
Sent from the GeoServer - User mailing list archive at Nabble.com.

Hi,

have you found a solution for this issue? I'm struggling with the same
problem.
Any advice welcome :slight_smile:

Cheers,
Michael

--
View this message in context: http://osgeo-org.1560.x6.nabble.com/granuleLocation-exception-after-modifying-GeoServer-store-table-tp5170060p5218752.html
Sent from the GeoServer - User mailing list archive at Nabble.com.