@Override protected void doExecute(MetadataProvider mdProvider) throws Exception { String dataverseName = actionListener.getEntityId().getDataverse(); String entityName = actionListener.getEntityId().getEntityName(); List<Dataset> datasets = actionListener.getDatasets(); try { lockManager.acquireActiveEntityWriteLock(mdProvider.getLocks(), dataverseName + '.' + entityName); for (Dataset dataset : datasets) { lockManager.acquireDatasetExclusiveModificationLock(mdProvider.getLocks(), DatasetUtil.getFullyQualifiedName(dataset)); } actionListener.suspend(mdProvider); } catch (Exception e) { // only release in case of failure mdProvider.getLocks().reset(); throw e; } } };