Our Geoserver is hosted on AWS with Data Directory on Elastic File System so it may be shared between multiple instances with Geoserver
Running a Filter operation in Tile layers page hangs. Layers are not filtered but it completely locks Geoserver.
- Layers cannot be previewed
- Styles, Workspaces, Stores, Layers cannot be edited
Things come back up after a restart but running a filter on tile layer page is simply a blocker to use Geoserver.
Error seen while editing styles or layers is:
2020-04-26 23:28:03,077 ERROR [geoserver.web] - Error occurred saving the style
java.lang.RuntimeException: Failed to upgrade lock from read to write state, please re-try the configuration operation
at org.geoserver.GeoServerConfigurationLock.tryUpgradeLock(GeoServerConfigurationLock.java:159)
at org.geoserver.catalog.LockingCatalogFacade.invoke(LockingCatalogFacade.java:34)
at com.sun.proxy.$Proxy24.save(Unknown Source)
at org.geoserver.catalog.impl.CatalogImpl.save(CatalogImpl.java:1458)
at org.geoserver.security.SecureCatalogImpl.save(SecureCatalogImpl.java:1397)
at org.geoserver.catalog.impl.AbstractFilteredCatalog.save(AbstractFilteredCatalog.java:765)
at org.geoserver.catalog.impl.AbstractCatalogDecorator.save(AbstractCatalogDecorator.java:497)
at org.geoserver.wms.web.data.StyleEditPage.onStyleFormSubmit(StyleEditPage.java:123)
at org.geoserver.wms.web.data.AbstractStylePage$1.onSubmit(AbstractStylePage.java:141)
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1315)
at org.apache.wicket.markup.html.form.Form.process(Form.java:976)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
at sun.reflect.GeneratedMethodAccessor694.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.respond(ListenerInterfaceRequestHandler.java:234)
at org.apache.wicket.core.request.handler.RequestSettingRequestHandler.respond(RequestSettingRequestHandler.java:78)
at org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor.respond(RequestCycle.java:895)
at org.apache.wicket.request.RequestHandlerStack.execute(RequestHandlerStack.java:64)
at org.apache.wicket.request.cycle.RequestCycle.execute(RequestCycle.java:265)
at org.apache.wicket.request.cycle.RequestCycle.processRequest(RequestCycle.java:222)
at org.apache.wicket.request.cycle.RequestCycle.processRequestAndDetach(RequestCycle.java:293)
at org.apache.wicket.protocol.http.WicketFilter.processRequestCycle(WicketFilter.java:261)
at org.apache.wicket.protocol.http.WicketFilter.processRequest(WicketFilter.java:203)
at org.apache.wicket.protocol.http.WicketServlet.doPost(WicketServlet.java:159)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:660)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:741)
at org.springframework.web.servlet.mvc.ServletWrappingController.handleRequestInternal(ServletWrappingController.java:157)
at org.springframework.web.servlet.mvc.AbstractController.handleRequest(AbstractController.java:174)
at org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter.handle(SimpleControllerHandlerAdapter.java:50)
at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:963)
at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:897)
at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
The java thread dump shows
“http-nio-8080-exec-37” #393 daemon prio=5 os_prio=0 tid=0x00007f4e940ac800 nid=0x71da waiting for monitor entry [0x00007f4e2faaa000]
java.lang.Thread.State: BLOCKED (on object monitor)
at org.geoserver.catalog.ResourcePool.getCacheableFeatureType(ResourcePool.java:958)
- waiting to lock <0x0000000700a3bec0> (a org.geoserver.catalog.ResourcePool$FeatureTypeCache)
at org.geoserver.catalog.ResourcePool.tryGetFeatureType(ResourcePool.java:949)
at org.geoserver.catalog.ResourcePool.getFeatureType(ResourcePool.java:935)
at org.geoserver.catalog.ResourcePool.getFeatureType(ResourcePool.java:930)
at org.geoserver.catalog.impl.FeatureTypeInfoImpl.getFeatureType(FeatureTypeInfoImpl.java:121)
at sun.reflect.GeneratedMethodAccessor330.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:147)
at com.sun.proxy.$Proxy33.getFeatureType(Unknown Source)
at org.geoserver.web.CatalogIconFactory.getSpecificLayerIcon(CatalogIconFactory.java:121)
at org.geoserver.gwc.web.GWCIconFactory.getSpecificLayerIcon(GWCIconFactory.java:60)
at org.geoserver.gwc.web.layer.CachedLayerProvider$1.getPropertyValue(CachedLayerProvider.java:45)
at org.geoserver.gwc.web.layer.CachedLayerProvider$1.getPropertyValue(CachedLayerProvider.java:39)
at org.geoserver.web.wicket.GeoServerDataProvider.filterByKeywords(GeoServerDataProvider.java:257)
at org.geoserver.web.wicket.GeoServerDataProvider.getFilteredItems(GeoServerDataProvider.java:220)
at org.geoserver.web.wicket.GeoServerDataProvider.size(GeoServerDataProvider.java:234)
at org.geoserver.web.wicket.GeoServerTablePanel$PagerDelegate.updateMatched(GeoServerTablePanel.java:617)
at org.geoserver.web.wicket.GeoServerTablePanel.updateFilter(GeoServerTablePanel.java:542)
at org.geoserver.web.wicket.GeoServerTablePanel.access$000(GeoServerTablePanel.java:54)
at org.geoserver.web.wicket.GeoServerTablePanel$8.onSubmit(GeoServerTablePanel.java:476)
at org.apache.wicket.ajax.markup.html.form.AjaxButton$1.onSubmit(AjaxButton.java:113)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior$AjaxFormSubmitter.onSubmit(AjaxFormSubmitBehavior.java:215)
at org.apache.wicket.markup.html.form.Form.delegateSubmit(Form.java:1309)
at org.apache.wicket.markup.html.form.Form.process(Form.java:976)
at org.apache.wicket.markup.html.form.Form.onFormSubmitted(Form.java:797)
at org.apache.wicket.ajax.form.AjaxFormSubmitBehavior.onEvent(AjaxFormSubmitBehavior.java:171)
at org.apache.wicket.ajax.AjaxEventBehavior.respond(AjaxEventBehavior.java:155)
at org.apache.wicket.ajax.AbstractDefaultAjaxBehavior.onRequest(AbstractDefaultAjaxBehavior.java:601)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.wicket.RequestListenerInterface.internalInvoke(RequestListenerInterface.java:258)
at org.apache.wicket.RequestListenerInterface.invoke(RequestListenerInterface.java:241)
at org.apache.wicket.core.request.handler.ListenerInterfaceRequestHandler.invokeListener(ListenerInterfaceRequestHandler.java:248)
|