Commit 2d6c2bb6 by 李根

修改控制台重启导致的异常现象

parent d0bbf8ad
...@@ -39,19 +39,35 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem ...@@ -39,19 +39,35 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem
private static final int MAX_RULES_SIZE = 10000; private static final int MAX_RULES_SIZE = 10000;
private static long MAX_ID = 0l;
@Override @Override
public T save(T entity) { public T save(T entity) {
if (entity.getId() == null) { if (entity.getId() == null) {
entity.setId(nextId()); long nextId = nextId();
if (nextId <= MAX_ID) {
setId(MAX_ID);
entity.setId(nextId());
} else {
entity.setId(nextId);
}
} else {
nextId();
MAX_ID = entity.getId();
} }
T processedEntity = preProcess(entity); T processedEntity = preProcess(entity);
if (processedEntity != null) { if (processedEntity != null) {
allRules.put(processedEntity.getId(), processedEntity); allRules.put(processedEntity.getId(), processedEntity);
machineRules.computeIfAbsent(MachineInfo.of(processedEntity.getApp(), processedEntity.getIp(), machineRules.computeIfAbsent(MachineInfo.of(processedEntity.getApp(), processedEntity.getIp(),
processedEntity.getPort()), e -> new ConcurrentHashMap<>(32)) processedEntity.getPort()), e -> {
.put(processedEntity.getId(), processedEntity); return new ConcurrentHashMap<>(32);
appRules.computeIfAbsent(processedEntity.getApp(), v -> new ConcurrentHashMap<>(32)) })
.put(processedEntity.getId(), processedEntity); .put(processedEntity.getId(), processedEntity);
appRules.computeIfAbsent(processedEntity.getApp(), v -> {
return new ConcurrentHashMap<>(32);
})
.put(processedEntity.getId(), processedEntity);
} }
return processedEntity; return processedEntity;
...@@ -60,6 +76,7 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem ...@@ -60,6 +76,7 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem
@Override @Override
public List<T> saveAll(List<T> rules) { public List<T> saveAll(List<T> rules) {
// TODO: check here. // TODO: check here.
clearId();
allRules.clear(); allRules.clear();
machineRules.clear(); machineRules.clear();
appRules.clear(); appRules.clear();
...@@ -111,6 +128,7 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem ...@@ -111,6 +128,7 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem
} }
public void clearAll() { public void clearAll() {
clearId();
allRules.clear(); allRules.clear();
machineRules.clear(); machineRules.clear();
appRules.clear(); appRules.clear();
...@@ -126,4 +144,23 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem ...@@ -126,4 +144,23 @@ public abstract class InMemoryRuleRepositoryAdapter<T extends RuleEntity> implem
* @return next unused id * @return next unused id
*/ */
abstract protected long nextId(); abstract protected long nextId();
/**
* @ desc : clearId
* @ params
* @ return
* @ date 2020/4/3
* @ author ligen
*/
abstract protected void clearId();
/**
* @ desc : setId
* @ params
* @ return
* @ date 2020/4/3
* @ author ligen
*/
abstract protected void setId(long id);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment