Skip to content

Commit 92b5bb3

Browse files
committed
fix CopyOnWriteArrayList remove bug
1 parent 0c43a91 commit 92b5bb3

File tree

1 file changed

+4
-6
lines changed

1 file changed

+4
-6
lines changed

springboot-starter/src/main/java/com/codingapi/springboot/framework/trigger/TriggerContext.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
import lombok.extern.slf4j.Slf4j;
44

55
import java.lang.reflect.ParameterizedType;
6-
import java.util.Iterator;
76
import java.util.List;
87
import java.util.Map;
98
import java.util.concurrent.ConcurrentHashMap;
@@ -66,20 +65,19 @@ private Class<? extends Trigger> getTriggerClass(TriggerHandler handler){
6665
*/
6766
public void trigger(Trigger trigger){
6867
Class<? extends Trigger> clazz = trigger.getClass();
69-
Iterator<TriggerHandler> iterator = triggers.get(clazz).iterator();
70-
while (iterator.hasNext()){
71-
TriggerHandler handler = iterator.next();
68+
List<TriggerHandler> triggerHandlerList = triggers.get(clazz);
69+
for(TriggerHandler handler:triggerHandlerList){
7270
Class<? extends Trigger> triggerClass = getTriggerClass(handler);
7371
if(triggerClass.equals(clazz)) {
7472
try {
7573
if (handler.preTrigger(trigger)) {
7674
handler.trigger(trigger);
7775
if (handler.remove()) {
78-
iterator.remove();
76+
triggerHandlerList.remove(handler);
7977
}
8078
}
8179
}catch (Exception e){
82-
log.warn("trigger error:{}",e.getLocalizedMessage());
80+
log.warn("trigger error:{}",e);
8381
}
8482
}
8583
}

0 commit comments

Comments
 (0)