[Geoserver-devel] [JIRA] (GEOS-10711) ConcurrentModificationException can happen while modifying data access rules with concurrent WMS traffic

Andrea Aime created an issue

GeoServer / BugGEOS-10711

ConcurrentModificationException can happen while modifying data access rules with concurrent WMS traffic

Issue Type:

BugBug

Assignee:

Andrea Aime

Created:

18/Oct/22 3:34 PM

Priority:

MediumMedium

Reporter:

Andrea Aime

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.

Add Comment

Add Comment

Get Jira notifications on your phone! Download the Jira Cloud app for Android or iOS


This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100209-sha1:597f6a7)

Atlassian logo