diff options
| author | wangxin <[email protected]> | 2019-07-22 19:03:42 +0800 |
|---|---|---|
| committer | wangxin <[email protected]> | 2019-07-22 19:03:42 +0800 |
| commit | 7afa89951c2753fdd6cc1d6ed6adc524f876a231 (patch) | |
| tree | 103a45bc24a35749e78632bbd759b21d4b089f06 | |
| parent | 3f952f6a830d2c8335ab48a05671bba28f4a411b (diff) | |
查询配置不能使用多线程,会导致事务失效
| -rw-r--r-- | src/main/java/com/nis/web/service/BaseService.java | 126 | ||||
| -rw-r--r-- | src/main/java/com/nis/web/service/configuration/ObjectGroupService.java | 4 |
2 files changed, 39 insertions, 91 deletions
diff --git a/src/main/java/com/nis/web/service/BaseService.java b/src/main/java/com/nis/web/service/BaseService.java index 8a4662d17..879311c96 100644 --- a/src/main/java/com/nis/web/service/BaseService.java +++ b/src/main/java/com/nis/web/service/BaseService.java @@ -3387,43 +3387,10 @@ public abstract class BaseService { cfgIndexInfo.setUserRegion(userRgionMap); String oldCommonGroupIds=cfgIndexInfo.getCommonGroupIds(); //将所有要从配置中删除的组从配置中删除 - IpCommCfg ipCommCfg=(IpCommCfg)this.processUserRegionMap(userRgionMap,"ipGroup",ipDeletedGroups,cfgIndexInfo,ipCommGroupCfgDao,IpCommCfg.class); - UrlCommCfg urlCommCfg=(UrlCommCfg)this.processUserRegionMap(userRgionMap,"urlGroup",urlDeletedGroups,cfgIndexInfo,urlCommGroupCfgDao,UrlCommCfg.class); - ScriberIdCommCfg scriberIdCommCfg=(ScriberIdCommCfg)this.processUserRegionMap(userRgionMap,"subscribeIdGroup",subIdDeletedGroups,cfgIndexInfo,scriberIdCommGroupDao,ScriberIdCommCfg.class); - DomainCommCfg domainCommCfg=(DomainCommCfg)this.processUserRegionMap(userRgionMap,"domainGroup",domainDeletedGroups,cfgIndexInfo,domainCommGroupDao,DomainCommCfg.class); - ExecutorService executorService= Executors.newFixedThreadPool(4); - Future<List<IpCommCfg>> ipCommCfgF= executorService.submit(new ProcessUserRegionMapThread<IpCommCfg>(ipCommCfg,ipCommGroupCfgDao)); - Future<List<UrlCommCfg>> urlCommCfgF=executorService.submit(new ProcessUserRegionMapThread<UrlCommCfg>(urlCommCfg,urlCommGroupCfgDao)); - Future<List<ScriberIdCommCfg>> scriberIdCommCfgF=executorService.submit(new ProcessUserRegionMapThread<ScriberIdCommCfg>(scriberIdCommCfg,scriberIdCommGroupDao)); - Future<List<DomainCommCfg>> domainCommCfgF=executorService.submit(new ProcessUserRegionMapThread<DomainCommCfg>(domainCommCfg,domainCommGroupDao)); - executorService.shutdown(); - while(!executorService.isTerminated()){ - try { - TimeUnit.SECONDS.sleep(1); - } catch (InterruptedException e) { - logger.error("error occured while sleeping",e); - } - } - try { - List<IpCommCfg> ipCommCfgList=ipCommCfgF.get(); - if(CollectionUtils.isNotEmpty(ipCommCfgList)){ - cfgIndexInfo.setIpCommGroupCfgList(ipCommCfgList); - } - List<UrlCommCfg> urlCommCfgList=urlCommCfgF.get(); - if(CollectionUtils.isNotEmpty(urlCommCfgList)){ - cfgIndexInfo.setUrlCommGroupList(urlCommCfgList); - } - List<ScriberIdCommCfg> scriberIdCommCfgList=scriberIdCommCfgF.get(); - if(CollectionUtils.isNotEmpty(scriberIdCommCfgList)){ - cfgIndexInfo.setScriberIdCommGroupList(scriberIdCommCfgList); - } - List<DomainCommCfg> domainCommCfgList=domainCommCfgF.get(); - if(CollectionUtils.isNotEmpty(domainCommCfgList)){ - cfgIndexInfo.setDomainCommGroupList(domainCommCfgList); - } - } catch (InterruptedException |ExecutionException e) { - logger.error("error occured while future get",e); - } + this.processUserRegionMap(userRgionMap,"ipGroup",ipDeletedGroups,cfgIndexInfo,ipCommGroupCfgDao,IpCommCfg.class); + this.processUserRegionMap(userRgionMap,"urlGroup",urlDeletedGroups,cfgIndexInfo,urlCommGroupCfgDao,UrlCommCfg.class); + this.processUserRegionMap(userRgionMap,"subscribeIdGroup",subIdDeletedGroups,cfgIndexInfo,scriberIdCommGroupDao,ScriberIdCommCfg.class); + this.processUserRegionMap(userRgionMap,"domainGroup",domainDeletedGroups,cfgIndexInfo,domainCommGroupDao,DomainCommCfg.class); //需要更新的组,组可能增加了,可能减少了,也有可能清空了(所有的域全删了) cfgIndexInfo.setCommonGroupIds(gsonToJson(userRgionMap)); @@ -3672,7 +3639,7 @@ public abstract class BaseService { //commonPolicyDao.auditCfgBatch(CfgIndexInfo.getTablename(),auditCfg,compileIds,null); return true; } - private BaseCfg processUserRegionMap(Map<String,Object> userRgionMap, String key, Set deletedGroups, CfgIndexInfo cfgIndexInfo, CrudDao dao,Class clazz) { + private void processUserRegionMap(Map<String,Object> userRgionMap, String key, Set deletedGroups, CfgIndexInfo cfgIndexInfo, CrudDao dao,Class clazz) { if(userRgionMap.containsKey(key)){ //排除删除的组,添加新的组 for(String urlGroup:((String)userRgionMap.get(key)).split(",")){ @@ -3687,59 +3654,40 @@ public abstract class BaseService { contains=false; } if(contains&&cfgIndexInfo.getIsValid()==Constants.VALID_YES){ - if("IpCommCfg".equals(clazz.getSimpleName())){ - IpCommCfg searchCfg=new IpCommCfg(); - searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1)); - //searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r")); - return searchCfg; -// List commCfgs=dao.findAllList(searchCfg); -// if(CollectionUtils.isNotEmpty(commCfgs)){ -// cfgIndexInfo.setIpCommGroupCfgList(commCfgs); -// } - }else if("ScriberIdCommCfg".equals(clazz.getSimpleName()) ){ - ScriberIdCommCfg searchCfg=new ScriberIdCommCfg(); - searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1)); - //searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r")); - return searchCfg; -// List commCfgs=dao.findAllList(searchCfg); -// if(CollectionUtils.isNotEmpty(commCfgs)){ -// cfgIndexInfo.setScriberIdCommGroupList(commCfgs); -// } - }else if("UrlCommCfg".equals(clazz.getSimpleName())){ - UrlCommCfg searchCfg=new UrlCommCfg(); - searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1)); - //searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r")); - return searchCfg; -// List commCfgs=dao.findAllList(searchCfg); -// if(CollectionUtils.isNotEmpty(commCfgs)){ -// cfgIndexInfo.setUrlCommGroupList(commCfgs); -// } - }else if("DomainCommCfg".equals(clazz.getSimpleName())){ - DomainCommCfg searchCfg=new DomainCommCfg(); - searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1)); - //searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r")); - return searchCfg; -// List commCfgs=dao.findAllList(searchCfg); -// if(CollectionUtils.isNotEmpty(commCfgs)){ -// cfgIndexInfo.setDomainCommGroupList(commCfgs); -// } + String commonGroupIds=userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1); + if(StringUtils.isNotBlank(commonGroupIds)){ + if("IpCommCfg".equals(clazz.getSimpleName())){ + IpCommCfg searchCfg=new IpCommCfg(); + searchCfg.setCommonGroupIds(commonGroupIds); + List commCfgs=dao.findAllList(searchCfg); + if(CollectionUtils.isNotEmpty(commCfgs)){ + cfgIndexInfo.setIpCommGroupCfgList(commCfgs); + } + }else if("ScriberIdCommCfg".equals(clazz.getSimpleName()) ){ + ScriberIdCommCfg searchCfg=new ScriberIdCommCfg(); + searchCfg.setCommonGroupIds(commonGroupIds); + List commCfgs=dao.findAllList(searchCfg); + if(CollectionUtils.isNotEmpty(commCfgs)){ + cfgIndexInfo.setScriberIdCommGroupList(commCfgs); + } + }else if("UrlCommCfg".equals(clazz.getSimpleName())){ + UrlCommCfg searchCfg=new UrlCommCfg(); + searchCfg.setCommonGroupIds(commonGroupIds); + List commCfgs=dao.findAllList(searchCfg); + if(CollectionUtils.isNotEmpty(commCfgs)){ + cfgIndexInfo.setUrlCommGroupList(commCfgs); + } + }else if("DomainCommCfg".equals(clazz.getSimpleName())){ + DomainCommCfg searchCfg=new DomainCommCfg(); + searchCfg.setCommonGroupIds(commonGroupIds); + List commCfgs=dao.findAllList(searchCfg); + if(CollectionUtils.isNotEmpty(commCfgs)){ + cfgIndexInfo.setDomainCommGroupList(commCfgs); + } + } } - } } - return null; - } -} -class ProcessUserRegionMapThread<T extends BaseCfg> implements Callable<List<T>> { - private T searchCfg; - private CrudDao dao; - public ProcessUserRegionMapThread(T searchCfg, CrudDao dao){ - this.searchCfg=searchCfg; - this.dao=dao; - } - @Override - public List<T> call() throws Exception { - List<T> commCfgs=dao.findAllList(searchCfg); - return commCfgs; } } + diff --git a/src/main/java/com/nis/web/service/configuration/ObjectGroupService.java b/src/main/java/com/nis/web/service/configuration/ObjectGroupService.java index b4bf27a32..98ea53c03 100644 --- a/src/main/java/com/nis/web/service/configuration/ObjectGroupService.java +++ b/src/main/java/com/nis/web/service/configuration/ObjectGroupService.java @@ -391,9 +391,9 @@ public class ObjectGroupService extends BaseService { List<MaatCfg.IpCfg> areaIpRegionList = new ArrayList(); //查询子配置 -// entity = this.getObjGroupPolicy(entity.getCfgId()); + entity = this.getObjGroupPolicy(entity.getCfgId()); //多线程查询 - entity = this.getObjGroupPolicyMultyThread(entity.getCfgId()); +// entity = this.getObjGroupPolicyMultyThread(entity.getCfgId()); end=System.currentTimeMillis(); logger.info("查询子配置完成,耗时"+(end-start)+"ms"); // if(StringUtils.isBlank(entity.getCommonGroupIds())){ |
