summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorwangxin <[email protected]>2019-07-22 19:03:42 +0800
committerwangxin <[email protected]>2019-07-22 19:03:42 +0800
commit7afa89951c2753fdd6cc1d6ed6adc524f876a231 (patch)
tree103a45bc24a35749e78632bbd759b21d4b089f06
parent3f952f6a830d2c8335ab48a05671bba28f4a411b (diff)
查询配置不能使用多线程,会导致事务失效
-rw-r--r--src/main/java/com/nis/web/service/BaseService.java126
-rw-r--r--src/main/java/com/nis/web/service/configuration/ObjectGroupService.java4
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())){