From 8af13df3f923f764c902b6cca9c6dd273cb8b8ab Mon Sep 17 00:00:00 2001 From: "Lukas Rieger (Blue)" Date: Fri, 17 Mar 2023 20:29:52 +0100 Subject: [PATCH] Also remove the cached FK for the map-id when we delete it from the db >_> --- .../bluemap/core/storage/sql/SQLStorage.java | 64 +++++++++++-------- 1 file changed, 36 insertions(+), 28 deletions(-) diff --git a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/storage/sql/SQLStorage.java b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/storage/sql/SQLStorage.java index 577a9a2f..d84d52c4 100644 --- a/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/storage/sql/SQLStorage.java +++ b/BlueMapCore/src/main/java/de/bluecolored/bluemap/core/storage/sql/SQLStorage.java @@ -377,35 +377,41 @@ public class SQLStorage extends Storage { @Override public void purgeMap(String mapId, Function onProgress) throws IOException { - try { - recoveringConnection(connection -> { - executeUpdate(connection, - "DELETE t " + - "FROM `bluemap_map_tile` t " + - " INNER JOIN `bluemap_map` m " + - " ON t.`map` = m.`id` " + - "WHERE m.`map_id` = ?", - mapId - ); + synchronized (mapFKs) { + try { + recoveringConnection(connection -> { + executeUpdate(connection, + "DELETE t " + + "FROM `bluemap_map_tile` t " + + " INNER JOIN `bluemap_map` m " + + " ON t.`map` = m.`id` " + + "WHERE m.`map_id` = ?", + mapId + ); - executeUpdate(connection, - "DELETE t " + - "FROM `bluemap_map_meta` t " + - " INNER JOIN `bluemap_map` m " + - " ON t.`map` = m.`id` " + - "WHERE m.`map_id` = ?", - mapId - ); + executeUpdate(connection, + "DELETE t " + + "FROM `bluemap_map_meta` t " + + " INNER JOIN `bluemap_map` m " + + " ON t.`map` = m.`id` " + + "WHERE m.`map_id` = ?", + mapId + ); - executeUpdate(connection, - "DELETE " + - "FROM `bluemap_map` " + - "WHERE `map_id` = ?", - mapId - ); - }, 2); - } catch (SQLException ex) { - throw new IOException(ex); + + executeUpdate(connection, + "DELETE " + + "FROM `bluemap_map` " + + "WHERE `map_id` = ?", + mapId + ); + }, 2); + + mapFKs.invalidate(mapId); + + } catch (SQLException ex) { + throw new IOException(ex); + } } } @@ -670,7 +676,9 @@ public class SQLStorage extends Storage { } private int loadMapFK(String mapId) throws SQLException, IOException { - return lookupFK("bluemap_map", "id", "map_id", mapId); + synchronized (mapFKs) { + return lookupFK("bluemap_map", "id", "map_id", mapId); + } } private int loadMapTileCompressionFK(Compression compression) throws SQLException, IOException {