Repository: incubator-ranger Updated Branches: refs/heads/ranger-0.5 6d4ea47f7 -> 5be2cdba7
RANGER-733 : Implement best coding practices to resolve issues found during code scan Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/5be2cdba Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/5be2cdba Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/5be2cdba Branch: refs/heads/ranger-0.5 Commit: 5be2cdba7f9246625b12505070ea7764d4dba5dd Parents: 6d4ea47 Author: Gautam Borad <[email protected]> Authored: Sun Dec 6 02:04:32 2015 +0530 Committer: Gautam Borad <[email protected]> Committed: Mon Dec 7 10:59:25 2015 +0530 ---------------------------------------------------------------------- .../java/org/apache/ranger/db/XXTrxLogDao.java | 36 +++++++ .../patch/cliutil/XXTrxLogUpdateUtil.java | 102 +++++++++++++++++++ .../ranger/service/RangerPolicyService.java | 14 +-- .../resources/META-INF/jpa_named_queries.xml | 11 ++ 4 files changed, 150 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5be2cdba/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java index 63e0d63..5344368 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTrxLogDao.java @@ -63,5 +63,41 @@ public class XXTrxLogDao extends BaseDao<XXTrxLog> { return null; } } + public Long getMaxIdOfXXTrxLog(){ + Long maxXTrxLogID=new Long(0); + try { + maxXTrxLogID = (Long) getEntityManager() + .createNamedQuery("XXTrxLog.getMaxIdOfXXTrxLog", Long.class) + .getSingleResult(); + } catch (NoResultException e) { + logger.debug(e.getMessage()); + }finally{ + if(maxXTrxLogID==null){ + maxXTrxLogID=new Long(0); + } + } + return maxXTrxLogID; + } + + public int updateXTrxLog(long idFrom,long idTo,int objClassType,String attrName,String newValue){ + int rowAffected=-1; + if(objClassType == 0 ||attrName==null || newValue==null){ + return rowAffected; + } + try { + //idFrom and idTo both exclusive + rowAffected=getEntityManager().createNamedQuery("XXTrxLog.updateLogAttr", tClass) + .setParameter("idFrom", idFrom) + .setParameter("idTo", idTo) + .setParameter("objClassType", objClassType) + .setParameter("attrName", attrName) + .setParameter("newValue", newValue) + .executeUpdate(); + }catch (NoResultException e) { + logger.debug(e.getMessage()); + } + return rowAffected; + } + } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5be2cdba/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java new file mode 100644 index 0000000..beafd1c --- /dev/null +++ b/security-admin/src/main/java/org/apache/ranger/patch/cliutil/XXTrxLogUpdateUtil.java @@ -0,0 +1,102 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.ranger.patch.cliutil; + +import org.apache.log4j.Logger; +import org.apache.ranger.common.AppConstants; +import org.apache.ranger.db.RangerDaoManager; +import org.apache.ranger.patch.BaseLoader; +import org.apache.ranger.service.XPortalUserService; +import org.apache.ranger.biz.XUserMgr; +import org.apache.ranger.util.CLIUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +@Component +public class XXTrxLogUpdateUtil extends BaseLoader { + private static Logger logger = Logger + .getLogger(XXTrxLogUpdateUtil.class); + + @Autowired + XUserMgr xUserMgr; + + @Autowired + XPortalUserService xPortalUserService; + + @Autowired + RangerDaoManager daoManager; + + public static void main(String[] args) { + logger.info("main()"); + try { + XXTrxLogUpdateUtil loader = (XXTrxLogUpdateUtil) CLIUtil + .getBean(XXTrxLogUpdateUtil.class); + + loader.init(); + while (loader.isMoreToProcess()) { + loader.load(); + } + logger.info("Load complete. Exiting!!!"); + System.exit(0); + } catch (Exception e) { + logger.error("Error loading", e); + System.exit(1); + } + } + + @Override + public void init() throws Exception { + // Do Nothing + } + + @Override + public void execLoad() { + logger.info("==> XTrxLogUpdate.execLoad() Start."); + updateXTrxLog(); + logger.info("<== XTrxLogUpdate.execLoad() End."); + } + + public void updateXTrxLog() { + long maxXTrxLogID = daoManager.getXXTrxLog().getMaxIdOfXXTrxLog(); + if(maxXTrxLogID==0){ + return; + } + long maxRowsPerBatch=10000; + //To ceil the actual division result i.e noOfBatches=maxXTrxLogID/maxRowsPerBatch + long noOfBatches=(maxXTrxLogID+maxRowsPerBatch-1)/maxRowsPerBatch; + long minRange=0; + long maxRange=maxXTrxLogID<=maxRowsPerBatch ? maxXTrxLogID : maxRowsPerBatch; + long startTimeInMS=0; + long timeTaken=0; + for(long index=1;index<=noOfBatches;index++){ + logger.info("Batch "+ index+" of total "+noOfBatches); + startTimeInMS=System.currentTimeMillis(); + //minRange and maxRange both exclusive, if we add +1 in maxRange + int rowsAffected=daoManager.getXXTrxLog().updateXTrxLog(minRange,maxRange+1,AppConstants.CLASS_TYPE_XA_USER,"Password",AppConstants.Masked_String); + timeTaken=(System.currentTimeMillis()-startTimeInMS); + logger.info(rowsAffected +" rows affected ("+timeTaken+" ms)"); + minRange=maxRange; + maxRange=maxRange+maxRowsPerBatch; + } + } + + @Override + public void printStats() { + } + +} http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5be2cdba/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java index aaadea7..4a14ab9 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java @@ -381,19 +381,7 @@ public class RangerPolicyService extends RangerPolicyServiceBase<XXPolicy, Range } private boolean compareTwoPolicyName(String value, String oldValue) { - if (value==null && oldValue==null) { - return org.apache.commons.lang.StringUtils.equals(value, oldValue); - } - if (value!=null && oldValue!=null && value.trim().isEmpty() && oldValue.trim().isEmpty()) { - return true; - } - if (stringUtil.isEmpty(value) || stringUtil.isEmpty(oldValue)) { - return false; - } - if(!value.equals(oldValue)) { - return false; - } - return true; + return org.apache.commons.lang.StringUtils.equals(value, oldValue); } private String processPolicyNameForTrxLog(Object value) { http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/5be2cdba/security-admin/src/main/resources/META-INF/jpa_named_queries.xml ---------------------------------------------------------------------- diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index 65dd17f..55c4f1c 100644 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -656,4 +656,15 @@ xpu.id=:userId and gmp.isAllowed=:isAllowed </query> </named-query> + <named-query name="XXTrxLog.getMaxIdOfXXTrxLog"> + <query>select max(obj.id) from XXTrxLog obj</query> + </named-query> + <named-query name="XXTrxLog.updateLogAttr"> + <query>UPDATE XXTrxLog obj SET obj.newValue = :newValue + WHERE obj.id > :idFrom + AND obj.id < :idTo + AND obj.objectClassType = :objClassType + AND obj.attributeName = :attrName + </query> + </named-query> </entity-mappings>
