查询配置不能使用多线程,会导致事务失效
This commit is contained in:
@@ -3387,43 +3387,10 @@ public abstract class BaseService {
|
|||||||
cfgIndexInfo.setUserRegion(userRgionMap);
|
cfgIndexInfo.setUserRegion(userRgionMap);
|
||||||
String oldCommonGroupIds=cfgIndexInfo.getCommonGroupIds();
|
String oldCommonGroupIds=cfgIndexInfo.getCommonGroupIds();
|
||||||
//将所有要从配置中删除的组从配置中删除
|
//将所有要从配置中删除的组从配置中删除
|
||||||
IpCommCfg ipCommCfg=(IpCommCfg)this.processUserRegionMap(userRgionMap,"ipGroup",ipDeletedGroups,cfgIndexInfo,ipCommGroupCfgDao,IpCommCfg.class);
|
this.processUserRegionMap(userRgionMap,"ipGroup",ipDeletedGroups,cfgIndexInfo,ipCommGroupCfgDao,IpCommCfg.class);
|
||||||
UrlCommCfg urlCommCfg=(UrlCommCfg)this.processUserRegionMap(userRgionMap,"urlGroup",urlDeletedGroups,cfgIndexInfo,urlCommGroupCfgDao,UrlCommCfg.class);
|
this.processUserRegionMap(userRgionMap,"urlGroup",urlDeletedGroups,cfgIndexInfo,urlCommGroupCfgDao,UrlCommCfg.class);
|
||||||
ScriberIdCommCfg scriberIdCommCfg=(ScriberIdCommCfg)this.processUserRegionMap(userRgionMap,"subscribeIdGroup",subIdDeletedGroups,cfgIndexInfo,scriberIdCommGroupDao,ScriberIdCommCfg.class);
|
this.processUserRegionMap(userRgionMap,"subscribeIdGroup",subIdDeletedGroups,cfgIndexInfo,scriberIdCommGroupDao,ScriberIdCommCfg.class);
|
||||||
DomainCommCfg domainCommCfg=(DomainCommCfg)this.processUserRegionMap(userRgionMap,"domainGroup",domainDeletedGroups,cfgIndexInfo,domainCommGroupDao,DomainCommCfg.class);
|
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
//需要更新的组,组可能增加了,可能减少了,也有可能清空了(所有的域全删了)
|
//需要更新的组,组可能增加了,可能减少了,也有可能清空了(所有的域全删了)
|
||||||
cfgIndexInfo.setCommonGroupIds(gsonToJson(userRgionMap));
|
cfgIndexInfo.setCommonGroupIds(gsonToJson(userRgionMap));
|
||||||
@@ -3672,7 +3639,7 @@ public abstract class BaseService {
|
|||||||
//commonPolicyDao.auditCfgBatch(CfgIndexInfo.getTablename(),auditCfg,compileIds,null);
|
//commonPolicyDao.auditCfgBatch(CfgIndexInfo.getTablename(),auditCfg,compileIds,null);
|
||||||
return true;
|
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)){
|
if(userRgionMap.containsKey(key)){
|
||||||
//排除删除的组,添加新的组
|
//排除删除的组,添加新的组
|
||||||
for(String urlGroup:((String)userRgionMap.get(key)).split(",")){
|
for(String urlGroup:((String)userRgionMap.get(key)).split(",")){
|
||||||
@@ -3687,59 +3654,40 @@ public abstract class BaseService {
|
|||||||
contains=false;
|
contains=false;
|
||||||
}
|
}
|
||||||
if(contains&&cfgIndexInfo.getIsValid()==Constants.VALID_YES){
|
if(contains&&cfgIndexInfo.getIsValid()==Constants.VALID_YES){
|
||||||
if("IpCommCfg".equals(clazz.getSimpleName())){
|
String commonGroupIds=userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1);
|
||||||
IpCommCfg searchCfg=new IpCommCfg();
|
if(StringUtils.isNotBlank(commonGroupIds)){
|
||||||
searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1));
|
if("IpCommCfg".equals(clazz.getSimpleName())){
|
||||||
//searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r"));
|
IpCommCfg searchCfg=new IpCommCfg();
|
||||||
return searchCfg;
|
searchCfg.setCommonGroupIds(commonGroupIds);
|
||||||
// List commCfgs=dao.findAllList(searchCfg);
|
List commCfgs=dao.findAllList(searchCfg);
|
||||||
// if(CollectionUtils.isNotEmpty(commCfgs)){
|
if(CollectionUtils.isNotEmpty(commCfgs)){
|
||||||
// cfgIndexInfo.setIpCommGroupCfgList(commCfgs);
|
cfgIndexInfo.setIpCommGroupCfgList(commCfgs);
|
||||||
// }
|
}
|
||||||
}else if("ScriberIdCommCfg".equals(clazz.getSimpleName()) ){
|
}else if("ScriberIdCommCfg".equals(clazz.getSimpleName()) ){
|
||||||
ScriberIdCommCfg searchCfg=new ScriberIdCommCfg();
|
ScriberIdCommCfg searchCfg=new ScriberIdCommCfg();
|
||||||
searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1));
|
searchCfg.setCommonGroupIds(commonGroupIds);
|
||||||
//searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r"));
|
List commCfgs=dao.findAllList(searchCfg);
|
||||||
return searchCfg;
|
if(CollectionUtils.isNotEmpty(commCfgs)){
|
||||||
// List commCfgs=dao.findAllList(searchCfg);
|
cfgIndexInfo.setScriberIdCommGroupList(commCfgs);
|
||||||
// if(CollectionUtils.isNotEmpty(commCfgs)){
|
}
|
||||||
// cfgIndexInfo.setScriberIdCommGroupList(commCfgs);
|
}else if("UrlCommCfg".equals(clazz.getSimpleName())){
|
||||||
// }
|
UrlCommCfg searchCfg=new UrlCommCfg();
|
||||||
}else if("UrlCommCfg".equals(clazz.getSimpleName())){
|
searchCfg.setCommonGroupIds(commonGroupIds);
|
||||||
UrlCommCfg searchCfg=new UrlCommCfg();
|
List commCfgs=dao.findAllList(searchCfg);
|
||||||
searchCfg.setCommonGroupIds(userRgionMap.get(key).toString().substring(1,userRgionMap.get(key).toString().length()-1));
|
if(CollectionUtils.isNotEmpty(commCfgs)){
|
||||||
//searchCfg.getSqlMap().put("dsf", configScopeFilter(UserUtils.getUser(),"r"));
|
cfgIndexInfo.setUrlCommGroupList(commCfgs);
|
||||||
return searchCfg;
|
}
|
||||||
// List commCfgs=dao.findAllList(searchCfg);
|
}else if("DomainCommCfg".equals(clazz.getSimpleName())){
|
||||||
// if(CollectionUtils.isNotEmpty(commCfgs)){
|
DomainCommCfg searchCfg=new DomainCommCfg();
|
||||||
// cfgIndexInfo.setUrlCommGroupList(commCfgs);
|
searchCfg.setCommonGroupIds(commonGroupIds);
|
||||||
// }
|
List commCfgs=dao.findAllList(searchCfg);
|
||||||
}else if("DomainCommCfg".equals(clazz.getSimpleName())){
|
if(CollectionUtils.isNotEmpty(commCfgs)){
|
||||||
DomainCommCfg searchCfg=new DomainCommCfg();
|
cfgIndexInfo.setDomainCommGroupList(commCfgs);
|
||||||
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);
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -391,9 +391,9 @@ public class ObjectGroupService extends BaseService {
|
|||||||
List<MaatCfg.IpCfg> areaIpRegionList = new ArrayList();
|
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();
|
end=System.currentTimeMillis();
|
||||||
logger.info("查询子配置完成,耗时"+(end-start)+"ms");
|
logger.info("查询子配置完成,耗时"+(end-start)+"ms");
|
||||||
// if(StringUtils.isBlank(entity.getCommonGroupIds())){
|
// if(StringUtils.isBlank(entity.getCommonGroupIds())){
|
||||||
|
|||||||
Reference in New Issue
Block a user