TransWikia.com

GeoServer Cluster - Malformed uxxxx encoding

Geographic Information Systems Asked on April 5, 2021

I’ve setup a Basic GeoServer cluster with a Load Balancer and a shared volume between the master and slaves with Docker. I’ve also got a Python script listening on changes to the data_dir (using watchdog), which then resets and reloads the slaves on changes on master.

This setup generally works great, but sometimes, from out of the blue, this error occurs for some layers claiming to be caused by some sort of malformed encoding:


Caused by: java.lang.RuntimeException: java.lang.IllegalArgumentException: Malformed uxxxx encoding.
    at org.geowebcache.storage.blobstore.file.FileBlobStore.getLayerMetadata(FileBlobStore.java:691)
    at org.geowebcache.storage.blobstore.file.FileBlobStore.putLayerMetadata(FileBlobStore.java:647)
    at org.geowebcache.storage.blobstore.file.FileBlobStore.persistParameterMap(FileBlobStore.java:572)
    at org.geowebcache.storage.blobstore.file.FileBlobStore.writeFile(FileBlobStore.java:557)
    at org.geowebcache.storage.blobstore.file.FileBlobStore.put(FileBlobStore.java:477)
    at org.geowebcache.storage.CompositeBlobStore.lambda$put$6(CompositeBlobStore.java:182)
    at org.geowebcache.storage.CompositeBlobStore.lambda$readActionUnsafe$20(CompositeBlobStore.java:504)
    at org.geowebcache.storage.CompositeBlobStore.readFunctionUnsafe(CompositeBlobStore.java:486)
    at org.geowebcache.storage.CompositeBlobStore.readActionUnsafe(CompositeBlobStore.java:501)
    at org.geowebcache.storage.CompositeBlobStore.put(CompositeBlobStore.java:182)
    at org.geoserver.gwc.ConfigurableBlobStore.put(ConfigurableBlobStore.java:225)
    at org.geowebcache.storage.DefaultStorageBroker.put(DefaultStorageBroker.java:85)
    at org.geowebcache.layer.TileLayer.saveTiles(TileLayer.java:545)
    at org.geoserver.gwc.layer.GeoServerTileLayer.getMetatilingReponse(GeoServerTileLayer.java:654)
    ... 111 more
Caused by: java.lang.IllegalArgumentException: Malformed uxxxx encoding.
    at java.base/java.util.Properties.loadConvert(Properties.java:654)
    at java.base/java.util.Properties.load0(Properties.java:453)
    at java.base/java.util.Properties.load(Properties.java:404)
    at org.geowebcache.storage.blobstore.file.FileBlobStore.getLayerMetadata(FileBlobStore.java:689)
    ... 124 more

I can see that the metadata.properties-file for the GeoWebCache gets filled with sequences of u0000, and the sequences seems to grow larger and larger, so I’m guessing the GeoServer finally runs out of memory, because after a while I can’t request any tiles from the GeoServer.

I’ve only found one other post about this problem here: https://osgeo-org.atlassian.net/browse/GEOS-9272

Does any one know why this problem occurs and how one could fix it? I’m using GeoServer 2.17

One Answer

According to the documentation the standalone version of GeoWebCache should be used when running multiple GeoServer instances.

"For stability reasons, it is not recommended to use the embedded GeoWebCache with multiple GeoServer instances. If you want to configure GeoWebCache as a front-end for multiple instances of GeoServer, we recommend using the standalone GeoWebCache." https://docs.geoserver.org/stable/en/user/geowebcache/config.html

I encountered the same issue using GeoServer 2.18.1 with the embedded GeoWebCache instance. In my configuration, I have the cache directory set to an AWS EFS mount. I can run a single server under a heavy load without issue. However, when I spread even a light load across two servers, the metadata.properties file is quickly corrupted with a stream of u0000 characters.

Answered by Brian Baublitz on April 5, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP