@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) { MetadataLockUtil.modifyDatasetBegin(lockManager, mdProvider.getLocks(), dataverseName, DatasetUtil.getFullyQualifiedName(dataset)); } actionListener.stop(mdProvider); } finally { mdProvider.getLocks().reset(); } } };
@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) { MetadataLockUtil.modifyDatasetBegin(lockManager, mdProvider.getLocks(), dataverseName, DatasetUtil.getFullyQualifiedName(dataset)); } actionListener.start(mdProvider); } finally { mdProvider.getLocks().reset(); } } };
@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; } } };
@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(); } } };