You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2015/04/14 23:12:22 UTC

incubator-ranger git commit: RANGER-396: fix for failure in updating service.policyVersion

Repository: incubator-ranger
Updated Branches:
  refs/heads/master acfccc4a8 -> 60ec33789


RANGER-396: fix for failure in updating service.policyVersion


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/60ec3378
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/60ec3378
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/60ec3378

Branch: refs/heads/master
Commit: 60ec3378913308825f428f73f3b56db5e363d2fd
Parents: acfccc4
Author: Madhan Neethiraj <ma...@apache.org>
Authored: Tue Apr 14 13:45:04 2015 -0700
Committer: Madhan Neethiraj <ma...@apache.org>
Committed: Tue Apr 14 13:45:04 2015 -0700

----------------------------------------------------------------------
 .../org/apache/ranger/biz/ServiceDBStore.java   | 57 +++++++++++++-------
 1 file changed, 37 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/60ec3378/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 239723a..59295d3 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -1514,29 +1514,27 @@ public class ServiceDBStore extends AbstractServiceStore {
 
 		ServicePolicies ret = null;
 
-		RangerService service = getServiceByName(serviceName);
+		XXService serviceDbObj = daoMgr.getXXService().findByName(serviceName);
 
-		if(service == null) {
-			throw new Exception("service does not exist - name=" + serviceName);
+		if(serviceDbObj == null) {
+			throw new Exception("service does not exist. name=" + serviceName);
 		}
 
-		RangerServiceDef serviceDef = getServiceDefByName(service.getType());
-
-		if(serviceDef == null) {
-			throw new Exception(service.getType() + ": unknown service-def)");
-		}
+		if(lastKnownVersion == null || serviceDbObj.getPolicyVersion() == null || !lastKnownVersion.equals(serviceDbObj.getPolicyVersion())) {
+			RangerServiceDef serviceDef = getServiceDef(serviceDbObj.getType());
 
-		if(lastKnownVersion == null || service.getPolicyVersion() == null || lastKnownVersion.longValue() != service.getPolicyVersion().longValue()) {
-			SearchFilter filter = new SearchFilter(SearchFilter.SERVICE_NAME, serviceName);
+			if(serviceDef == null) {
+				throw new Exception("service-def does not exist. id=" + serviceDbObj.getType());
+			}
 
-			List<RangerPolicy> policies = getServicePolicies(serviceName, filter);
+			List<RangerPolicy> policies = getServicePolicies(serviceName, null);
 
 			ret = new ServicePolicies();
 
-			ret.setServiceId(service.getId());
-			ret.setServiceName(service.getName());
-			ret.setPolicyVersion(service.getPolicyVersion());
-			ret.setPolicyUpdateTime(service.getPolicyUpdateTime());
+			ret.setServiceId(serviceDbObj.getId());
+			ret.setServiceName(serviceDbObj.getName());
+			ret.setPolicyVersion(serviceDbObj.getPolicyVersion());
+			ret.setPolicyUpdateTime(serviceDbObj.getPolicyUpdateTime());
 			ret.setPolicies(policies);
 			ret.setServiceDef(serviceDef);
 		}
@@ -1544,6 +1542,7 @@ public class ServiceDBStore extends AbstractServiceStore {
 		if(LOG.isDebugEnabled()) {
 			LOG.debug("<== ServiceDBStore.getServicePoliciesIfUpdated(" + serviceName + ", " + lastKnownVersion + "): count=" + ((ret == null || ret.getPolicies() == null) ? 0 : ret.getPolicies().size()));
 		}
+
 		return ret;
 	}
 	
@@ -1635,10 +1634,24 @@ public class ServiceDBStore extends AbstractServiceStore {
 	}
 	
 	private void handlePolicyUpdate(RangerService service) throws Exception {
-		if(service == null) {
+		updatePolicyVersion(service);
+	}
+
+	private void updatePolicyVersion(RangerService service) throws Exception {
+		if(service == null || service.getId() == null) {
 			return;
 		}
-		
+
+		XXServiceDao serviceDao = daoMgr.getXXService();
+
+		XXService serviceDbObj = serviceDao.getById(service.getId());
+
+		if(serviceDbObj == null) {
+			LOG.warn("updatePolicyVersion(serviceId=" + service.getId() + "): service not found");
+
+			return;
+		}
+
 		Long policyVersion = service.getPolicyVersion();
 
 		if(policyVersion == null) {
@@ -1646,12 +1659,16 @@ public class ServiceDBStore extends AbstractServiceStore {
 		} else {
 			policyVersion = new Long(policyVersion.longValue() + 1);
 		}
-		
+
 		service.setPolicyVersion(policyVersion);
 		service.setPolicyUpdateTime(new Date());
-		service = updateService(service);
+
+		serviceDbObj.setPolicyVersion(service.getPolicyVersion());
+		serviceDbObj.setPolicyUpdateTime(service.getPolicyUpdateTime());
+
+		serviceDao.update(serviceDbObj);
 	}
-	
+
 	private void createNewPolicyItemsForPolicy(RangerPolicy policy, XXPolicy xPolicy, List<RangerPolicyItem> policyItems, XXServiceDef xServiceDef) {
 		
 		for (int itemOrder = 0; itemOrder < policyItems.size(); itemOrder++) {