@Override protected void doExecute(MetadataProvider mdProvider) throws Exception { String dataverseName = actionListener.getEntityId().getDataverse(); String entityName = actionListener.getEntityId().getEntityName(); try { lockManager.acquireActiveEntityWriteLock(mdProvider.getLocks(), dataverseName + '.' + entityName); List<Dataset> datasets = actionListener.getDatasets(); for (Dataset dataset : datasets) { lockManager.upgradeDatasetLockToWrite(mdProvider.getLocks(), DatasetUtil.getFullyQualifiedName(dataset)); lockManager.downgradeDatasetLockToExclusiveModify(mdProvider.getLocks(), DatasetUtil.getFullyQualifiedName(dataset)); } actionListener.resume(mdProvider); } finally { mdProvider.getLocks().reset(); } } };