See the stack trace:
java.util.ConcurrentModificationException
at java.base/java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1486)
at java.base/java.util.TreeMap$KeyIterator.next(TreeMap.java:1540)
at java.base/java.util.AbstractCollection.toArray(AbstractCollection.java:146)
at java.base/java.util.ArrayList.<init>(ArrayList.java:181)
at org.geoserver.security.impl.AbstractAccessRuleDAO.getRules(AbstractAccessRuleDAO.java:92)
at org.geoserver.security.impl.DefaultResourceAccessManager.buildAuthorizationTree(DefaultResourceAccessManager.java:341)
at org.geoserver.security.impl.DefaultResourceAccessManager.rebuildAuthorizationTree(DefaultResourceAccessManager.java:333)
at org.geoserver.security.impl.DefaultResourceAccessManager.checkPropertyFile(DefaultResourceAccessManager.java:327)
at org.geoserver.security.impl.DefaultResourceAccessManager.canAccess(DefaultResourceAccessManager.java:176)
at org.geoserver.security.impl.DefaultResourceAccessManager.getAccessLimits(DefaultResourceAccessManager.java:393)
at org.geoserver.security.ResourceAccessManagerWrapper.getAccessLimits(ResourceAccessManagerWrapper.java:227)
at org.geoserver.security.CatalogFilterAccessManager.getAccessLimits(CatalogFilterAccessManager.java:63)
at org.geoserver.security.SecureCatalogImpl.buildWrapperPolicy(SecureCatalogImpl.java:977)
at org.geoserver.security.SecureCatalogImpl.buildWrapperPolicy(SecureCatalogImpl.java:921)
at org.geoserver.security.SecureCatalogImpl.checkAccess(SecureCatalogImpl.java:711)
at org.geoserver.security.SecureCatalogImpl.checkAccess(SecureCatalogImpl.java:599)
at org.geoserver.security.SecureCatalogImpl.getLayerByName(SecureCatalogImpl.java:357)
at org.geoserver.catalog.impl.AbstractFilteredCatalog.getLayerByName(AbstractFilteredCatalog.java:265)
at org.geoserver.catalog.impl.AbstractCatalogDecorator.getLayerByName(AbstractCatalogDecorator.java:466)
at org.geoserver.catalog.impl.LocalWorkspaceCatalog.getLayerByName(LocalWorkspaceCatalog.java:257)
at org.geoserver.wms.WMS.getLayerByName(WMS.java:258)
at org.geoserver.wms.map.GetMapKvpRequestReader.parseLayers(GetMapKvpRequestReader.java:1504)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:357)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:103)
at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1497)
at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:670)
A workload that makes this happen is modifying the access rules via the REST API while the server is also receiving GetMap requests on secured layers.
|