From 12ba882ddd520fe18eee9683e1ced6d6ea8e23fd Mon Sep 17 00:00:00 2001 From: Andreas Zahnen Date: Fri, 23 Jan 2026 14:43:45 +0000 Subject: [PATCH] add option to disable mutex --- .../xtraplatform/tiles/app/TileProviderFeatures.java | 2 +- .../ii/xtraplatform/tiles/app/TileStoreMbTiles.java | 10 +++++----- .../java/de/ii/xtraplatform/tiles/domain/Cache.java | 11 +++++++++++ .../ii/xtraplatform/tiles/domain/MbtilesTileset.java | 4 ++-- 4 files changed, 19 insertions(+), 8 deletions(-) diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeatures.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeatures.java index 972135a06..329ff3f32 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeatures.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileProviderFeatures.java @@ -362,7 +362,7 @@ private TileStore getTileStore( tileMatrixSets, tileMatrixSetRepository, partitions, - cache.getSeeded()) + cache.getSeeded() && cache.getSeededOnly()) : new TileStorePlain(cacheStore); }); } diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileStoreMbTiles.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileStoreMbTiles.java index 2d5a0643f..c5f841c3b 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileStoreMbTiles.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/app/TileStoreMbTiles.java @@ -66,7 +66,7 @@ static TileStore readWrite( Map> tileMatrixSets, Optional tileMatrixSetRepository, Optional partitions, - boolean seeded) { + boolean strictlySeeded) { Map tileSets = new ConcurrentHashMap<>(); try { for (String tileset : tileSchemas.keySet()) { @@ -81,7 +81,7 @@ static TileStore readWrite( getVectorLayers(tileSchemas, tileset), partitions, tileSchemas.get(tileset).isEmpty(), - seeded)); + strictlySeeded)); } } } catch (IOException e) { @@ -436,7 +436,7 @@ private static MbtilesTileset createTileSet( List vectorLayers, Optional partitions, boolean isRaster, - boolean seeded) + boolean strictlySeeded) throws IOException { Path relPath = Path.of(tileset).resolve(tileMatrixSet + (partitions.isEmpty() ? MBTILES_SUFFIX : "")); @@ -461,7 +461,7 @@ private static MbtilesTileset createTileSet( .build(); if (partitions.isPresent()) { - return new MbtilesTileset(filePath.get(), md, partitions, isRaster, seeded); + return new MbtilesTileset(filePath.get(), md, partitions, isRaster, strictlySeeded); } if (rootStore.has(relPath)) { @@ -469,7 +469,7 @@ private static MbtilesTileset createTileSet( } try { - return new MbtilesTileset(filePath.get(), md, Optional.empty(), isRaster, seeded); + return new MbtilesTileset(filePath.get(), md, Optional.empty(), isRaster, strictlySeeded); } catch (FileAlreadyExistsException e) { throw new IllegalStateException( "A MBTiles file already exists. It must have been created by a parallel thread, which should not occur. MBTiles file creation must be synchronized."); diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/Cache.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/Cache.java index 1747f15ff..d7aadd018 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/Cache.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/Cache.java @@ -98,6 +98,17 @@ default boolean getSeeded() { return true; } + /** + * @langEn Should this cache be exclusively used by the [Seeding](#seeding)? + * @langDe Soll dieser Cache ausschließlich beim [Seeding](#seeding) verwendet werden? + * @default false + * @since v4.6 + */ + @Value.Default + default boolean getSeededOnly() { + return false; + } + /** * @langEn Tiling schemes and zoom levels that should be stored in the cache. Applies to all * tilesets that are not specified in `tilesetLevels`. diff --git a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/MbtilesTileset.java b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/MbtilesTileset.java index dbe5eb937..75ccfb56e 100644 --- a/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/MbtilesTileset.java +++ b/xtraplatform-tiles/src/main/java/de/ii/xtraplatform/tiles/domain/MbtilesTileset.java @@ -104,7 +104,7 @@ public MbtilesTileset( MbtilesMetadata metadata, Optional partitions, boolean isRaster, - boolean seeded) + boolean strictlySeeded) throws IOException { this( tilesetPath, @@ -112,7 +112,7 @@ public MbtilesTileset( partitions, isRaster, false, - partitions.isPresent() && seeded && isRaster ? Mutex.createNoOp() : Mutex.create()); + partitions.isPresent() && strictlySeeded ? Mutex.createNoOp() : Mutex.create()); } private MbtilesTileset(