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++) {