From 7df98cb40ef9d106a27de28f38919be3a530b685 Mon Sep 17 00:00:00 2001 From: Fabio Sinibaldi Date: Tue, 31 May 2022 16:24:23 +0200 Subject: [PATCH] Unlock only if not deleted --- .../service/engine/mongo/ProfiledMongoManager.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java index 38c7368..7ac71ee 100644 --- a/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java +++ b/geoportal-service/src/main/java/org/gcube/application/geoportal/service/engine/mongo/ProfiledMongoManager.java @@ -366,6 +366,7 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< public void delete(String id,boolean force) throws DeletionException, InvalidUserRoleException, ProjectLockedException, ProjectNotFoundException, UnauthorizedAccess, JsonProcessingException, InvalidLockException { log.info("Deleting by ID {}, force {}",id,force); Project doc =lock(id,"Deletion { force : "+force+"}"); + boolean deleted = false; try { User u = UserUtils.getCurrent().asInfo().getUser(); final DataAccessPolicy policy = useCaseDescriptor.getMatching(u); @@ -387,14 +388,15 @@ public class ProfiledMongoManager extends MongoManager implements MongoManagerI< ws.deleteItem(folderId); } }finally { - if(force) super.deleteDoc(asId(id)); + super.deleteDoc(asId(id)); + deleted = true; } } } catch (ConfigurationException | StorageHubException e) { log.error("Exception while trying to delete {} [UCID {}]",id,useCaseDescriptor.getId()); throw new DeletionException("Unable to contact Storage ",e); } finally{ - if(doc!=null) unlockAndUpdate(doc); + if(doc!=null && !deleted) unlockAndUpdate(doc); } }