Skip to content

Commit ddd0710

Browse files
committed
ZEPPELIN-1420. java.util.ConcurrentModificationException caused by calling remove inside foreach loop
1 parent 6c6097a commit ddd0710

File tree

1 file changed

+10
-9
lines changed

1 file changed

+10
-9
lines changed

zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,15 +1017,16 @@ public List<String> getInterpreters(String noteId) {
10171017
public List<InterpreterSetting> getInterpreterSettings(String noteId) {
10181018
List<String> interpreterSettingIds = getNoteInterpreterSettingBinding(noteId);
10191019
LinkedList<InterpreterSetting> settings = new LinkedList<>();
1020-
synchronized (interpreterSettingIds) {
1021-
for (String id : interpreterSettingIds) {
1022-
InterpreterSetting setting = get(id);
1023-
if (setting == null) {
1024-
// interpreter setting is removed from factory. remove id from here, too
1025-
interpreterSettingIds.remove(id);
1026-
} else {
1027-
settings.add(setting);
1028-
}
1020+
1021+
Iterator<String> iter = interpreterSettingIds.iterator();
1022+
while (iter.hasNext()) {
1023+
String id = iter.next();
1024+
InterpreterSetting setting = get(id);
1025+
if (setting == null) {
1026+
// interpreter setting is removed from factory. remove id from here, too
1027+
iter.remove();
1028+
} else {
1029+
settings.add(setting);
10291030
}
10301031
}
10311032
return settings;

0 commit comments

Comments
 (0)