Right, makes sense. I don't see any issue with making the cache clearing a
bit more robust to account for that case.
On Tue, Feb 18, 2014 at 5:00 AM, carlo cancellieri <
[email protected]> wrote:
> Hi I'm encountering some trouble running geoserver-manager integration
> tests over geoserver-2.5 (master).
>
> I'm getting many null pointer exception on 'info' into:
> org.geoserver.catalog.ResourcePool.FeatureTypeCache.dispose(String,
> FeatureType)
>
> Seems that the problem is originated here:
> org.geoserver.catalog.impl.CatalogImpl.remove(ResourceInfo)
> where the object is actually removed from the catalog before the execution
> of the above method (dispose).
>
> What do you think?
>
> Here is the stack trace of the suspended thread:
>
> ------------------ StackTrace -----------------------
>
> Thread [btpool0-57] (Suspended (breakpoint at line 1790 in
> ResourcePool$FeatureTypeCache))
> ResourcePool$FeatureTypeCache.dispose(String, FeatureType) line: 1790
> ResourcePool$FeatureTypeCache.dispose(Object, Object) line: 1
>
> ResourcePool$FeatureTypeCache(ResourcePool$CatalogResourceCache<K,V>).remove(Object)
> line: 1760
> ResourcePool.clear(FeatureTypeInfo) line: 1072
> ResourcePool$CacheClearingListener.visit(FeatureTypeInfo) line: 1959
> FeatureTypeInfoImpl.accept(CatalogVisitor) line: 96
> ResourcePool$CacheClearingListener.handleRemoveEvent(CatalogRemoveEvent)
> line: 1941
> CatalogImpl.event(CatalogEvent) line: 1445
> CatalogImpl.fireRemoved(CatalogInfo) line: 1433
> CatalogImpl.removed(CatalogInfo) line: 1400
> CatalogImpl.remove(ResourceInfo) line: 420
> SecureCatalogImpl.remove(ResourceInfo) line: 1274
> AdvertisedCatalog(AbstractFilteredCatalog).remove(ResourceInfo) line: 718
> LocalWorkspaceCatalog(AbstractCatalogDecorator).remove(ResourceInfo) line:
> 206
> CascadeDeleteVisitor.visit(LayerInfo) line: 128
> LayerInfoImpl.accept(CatalogVisitor) line: 239
> GeneratedMethodAccessor77.invoke(Object, Object[]) line: not available
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
> Method.invoke(Object, Object...) line: 616
> ModificationProxy.invoke(Object, Method, Object[]) line: 145
> $Proxy63.accept(CatalogVisitor) line: not available
> CascadeDeleteVisitor.visitStore(StoreInfo) line: 69
> CascadeDeleteVisitor.visit(DataStoreInfo) line: 82
> DataStoreInfoImpl.accept(CatalogVisitor) line: 41
> GeneratedMethodAccessor77.invoke(Object, Object[]) line: not available
> DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
> Method.invoke(Object, Object...) line: 616
> ModificationProxy.invoke(Object, Method, Object[]) line: 145
> $Proxy3.accept(CatalogVisitor) line: not available
> CascadeDeleteVisitor.visit(WorkspaceInfo) line: 46
> WorkspaceResource.handleObjectDelete() line: 166
> WorkspaceResource(ReflectiveResource).handleDelete() line: 224
> WorkspaceFinder(Finder).handle(Request, Response) line: 300
> BeanDelegatingRestlet.handle(Request, Response) line: 37
> Route(Filter).doHandle(Request, Response) line: 105
> Route(Filter).handle(Request, Response) line: 134
> RESTDispatcher$1(Router).handle(Request, Response) line: 444
> RESTDispatcher$1.handle(Request, Response) line: 204
> GeoServerServletConverter(ServletConverter).service(HttpServletRequest,
> HttpServletResponse) line: 129
> RESTDispatcher.handleRequestInternal(HttpServletRequest,
> HttpServletResponse) line: 86
> RESTDispatcher(AbstractController).handleRequest(HttpServletRequest,
> HttpServletResponse) line: 153
> SimpleControllerHandlerAdapter.handle(HttpServletRequest,
> HttpServletResponse, Object) line: 48
> DispatcherServlet.doDispatch(HttpServletRequest, HttpServletResponse)
> line: 923
> DispatcherServlet.doService(HttpServletRequest, HttpServletResponse) line:
> 852
> DispatcherServlet(FrameworkServlet).processRequest(HttpServletRequest,
> HttpServletResponse) line: 882
> DispatcherServlet(FrameworkServlet).doDelete(HttpServletRequest,
> HttpServletResponse) line: 811
> DispatcherServlet(HttpServlet).service(HttpServletRequest,
> HttpServletResponse) line: 733
> DispatcherServlet(HttpServlet).service(ServletRequest, ServletResponse)
> line: 820
> ServletHolder.handle(ServletRequest, ServletResponse) line: 487
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1093
> ThreadLocalsCleanupFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 27
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> SpringDelegatingFilter$Chain.doFilter(ServletRequest, ServletResponse)
> line: 74
> AnimatorFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
> line: 70
> SpringDelegatingFilter$Chain.doFilter(ServletRequest, ServletResponse)
> line: 70
> SpringDelegatingFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 45
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse)
> line: 1084
> AdvancedDispatchFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 49
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse)
> line: 1084
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 311
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 68
> FilterSecurityInterceptor.invoke(FilterInvocation) line: 116
> FilterSecurityInterceptor.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 83
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 72
>
> GeoServerSecurityInterceptorFilter(GeoServerCompositeFilter).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 91
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 323
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 68
> ExceptionTranslationFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 113
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 72
>
> GeoServerExceptionTranslationFilter(GeoServerCompositeFilter).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 91
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 323
> GeoServerAnonymousAuthenticationFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 53
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 323
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 68
> BasicAuthenticationFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 201
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 72
>
> GeoServerBasicAuthenticationFilter(GeoServerCompositeFilter).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 91
> GeoServerBasicAuthenticationFilter.doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 82
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 323
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 68
> GeoServerSecurityContextPersistenceFilter$1(SecurityContextPersistenceFilter).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 87
> GeoServerSecurityContextPersistenceFilter$1.doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 52
> GeoServerCompositeFilter$NestedFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 72
>
> GeoServerSecurityContextPersistenceFilter(GeoServerCompositeFilter).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 91
> FilterChainProxy$VirtualFilterChain.doFilter(ServletRequest,
> ServletResponse) line: 323
> GeoServerSecurityFilterChainProxy(FilterChainProxy).doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 173
> GeoServerSecurityFilterChainProxy.doFilter(ServletRequest,
> ServletResponse, FilterChain) line: 134
> DelegatingFilterProxy.invokeDelegate(Filter, ServletRequest,
> ServletResponse, FilterChain) line: 346
> DelegatingFilterProxy.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 259
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> LoggingFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
> line: 75
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> GZIPFilter.doFilter(ServletRequest, ServletResponse, FilterChain) line:
> 48
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> SessionDebugFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 47
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> FlushSafeFilter.doFilter(ServletRequest, ServletResponse, FilterChain)
> line: 43
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> SetCharacterEncodingFilter.doFilter(ServletRequest, ServletResponse,
> FilterChain) line: 109
> ServletHandler$CachedChain.doFilter(ServletRequest, ServletResponse) line:
> 1084
> ServletHandler.handle(String, HttpServletRequest, HttpServletResponse,
> int) line: 360
> SecurityHandler.handle(String, HttpServletRequest, HttpServletResponse,
> int) line: 216
> SessionHandler.handle(String, HttpServletRequest, HttpServletResponse,
> int) line: 181
> WebAppContext(ContextHandler).handle(String, HttpServletRequest,
> HttpServletResponse, int) line: 726
> WebAppContext.handle(String, HttpServletRequest, HttpServletResponse,
> int) line: 405
> Server(HandlerWrapper).handle(String, HttpServletRequest,
> HttpServletResponse, int) line: 152
> Server.handle(HttpConnection) line: 324
> HttpConnection.handleRequest() line: 505
> HttpConnection$RequestHandler.headerComplete() line: 828
> HttpParser.parseNext() line: 514
> HttpParser.parseAvailable() line: 211
> HttpConnection.handle() line: 380
> SocketConnector$Connection.run() line: 228
> BoundedThreadPool$PoolThread.run() line: 450
>
>
> --
> ==
> Our support, Your Success! Visit http://opensdi.geo-solutions.it for more
> information.
> ==
>
> Dott. Carlo Cancellieri
> @cancellieric
> Software Engineer
>
> GeoSolutions S.A.S.
> Via Poggio alle Viti 1187
> 55054 Massarosa (LU)
> Italy
> phone: +39 0584 962313
> fax: +39 0584 1660272
>
> http://www.geo-solutions.it
> http://twitter.com/geosolutions_it
>
> -------------------------------------------------------
>
>
> ------------------------------------------------------------------------------
> Managing the Performance of Cloud-Based Applications
> Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
> Read the Whitepaper.
>
> http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
> _______________________________________________
> Geoserver-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/geoserver-devel
>
>
--
*Justin Deoliveira*
Vice President, Engineering | Boundless
[email protected]
@j_deolive <https://twitter.com/j_deolive>
------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121054471&iu=/4140/ostg.clktrk
_______________________________________________
Geoserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geoserver-devel