[Geoserver-devel] [JIRA] (GEOS-10480) Improve scalability on GetFeature encodeQueryAsKVP

Andrea Aime created an issue

GeoServer / BugGEOS-10480

Improve scalability on GetFeature encodeQueryAsKVP

Issue Type:

BugBug

Assignee:

Unassigned

Created:

02/May/22 11:29 AM

Priority:

MediumMedium

Reporter:

Andrea Aime

This happens while building paging backlinks for GetFeature responses:

   java.lang.Thread.State: BLOCKED (on object monitor)
        at java.util.zip.ZipFile.getEntry(java.base@anonymised.com/ZipFile.java:347)
        - waiting to lock <0x00000000c45e3038> (a java.util.jar.JarFile)
        at java.util.zip.ZipFile$1.getEntry(java.base@anonymised.com/ZipFile.java:1143)
        at java.util.jar.JarFile.getEntry0(java.base@anonymised.com/JarFile.java:586)
        at java.util.jar.JarFile.getEntry(java.base@anonymised.com/JarFile.java:516)
        at java.util.jar.JarFile.getJarEntry(java.base@anonymised.com/JarFile.java:478)
        at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.getArchiveEntry(AbstractSingleArchiveResourceSet.java:98)
        at org.apache.catalina.webresources.AbstractArchiveResourceSet.getResource(AbstractArchiveResourceSet.java:263)
        at org.apache.catalina.webresources.StandardRoot.getResourceInternal(StandardRoot.java:281)
        at org.apache.catalina.webresources.CachedResource.validateResource(CachedResource.java:128)
        at org.apache.catalina.webresources.Cache.getResource(Cache.java:78)
        at org.apache.catalina.webresources.StandardRoot.getResource(StandardRoot.java:216)
        at org.apache.catalina.webresources.StandardRoot.getClassLoaderResource(StandardRoot.java:225)
        at org.apache.catalina.loader.WebappClassLoaderBase.getResourceAsStream(WebappClassLoaderBase.java:1165)
        at org.apache.xerces.parsers.SecuritySupport$6.run(Unknown Source)
        at java.security.AccessController.doPrivileged(java.base@anonymised.com/Native Method)
        at org.apache.xerces.parsers.SecuritySupport.getResourceAsStream(Unknown Source)
        at org.apache.xerces.parsers.ObjectFactory.findJarServiceProvider(Unknown Source)
        at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
        at org.apache.xerces.parsers.ObjectFactory.createObject(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
        at org.apache.xerces.parsers.DOMParser.<init>(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderImpl.<init>(Unknown Source)
        at org.apache.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown Source)
        at org.geotools.xsd.Encoder.encode(Encoder.java:633)
        at org.geotools.xsd.Encoder.encode(Encoder.java:551)
        at org.geotools.xsd.Encoder.encodeAsString(Encoder.java:1163)
        at org.geoserver.wfs.GetFeature.encodeQueryAsKvp(GetFeature.java:1236)
        at org.geoserver.wfs.GetFeature.buildKvpFromRequest(GetFeature.java:1152)

Notice the scalability issue… wondering what is causing it.

I see a new FESConfiguration is created for each encode, but in turn that uses singleton XSD objects so that should not really be the cause… From the trace it seems it’s Xerces doing some initialization.

See also here: https://help.mulesoft.com/s/article/Blocked-thread-on-finding-org-apache-xerces-parsers-DOMParser-service-provider

To be noted, Xerces is not part of the normal WAR file, must have been added by an extension. Looking at the packaging instructions, looks like it’s the printing one.

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#100198-sha1:27a8cf1)

Atlassian logo