You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by bz...@apache.org on 2016/09/19 07:07:44 UTC

zeppelin git commit: ZEPPELIN-1420. java.util.ConcurrentModificationException caused by calling remove inside foreach loop

Repository: zeppelin
Updated Branches:
  refs/heads/master 8f344db93 -> b8755ebb2


ZEPPELIN-1420. java.util.ConcurrentModificationException caused by calling remove inside foreach loop

### What is this PR for?
We should use Iterator to iterate the list when we want to remove items in the middle of iteration, Otherwise will get the ConcurrentModificationException

### What type of PR is it?
[Bug Fix]

### Todos
* [ ] - Task

### What is the Jira issue?
* https://issues.apache.org/jira/browse/ZEPPELIN-1420

### How should this be tested?
No test added

### Questions:
* Does the licenses files need update? No
* Is there breaking changes for older versions? No
* Does this needs documentation? No

Author: Jeff Zhang <zj...@apache.org>

Closes #1419 from zjffdu/ZEPPELIN-1420 and squashes the following commits:

ddd0710 [Jeff Zhang] ZEPPELIN-1420. java.util.ConcurrentModificationException caused by calling remove inside foreach loop


Project: http://git-wip-us.apache.org/repos/asf/zeppelin/repo
Commit: http://git-wip-us.apache.org/repos/asf/zeppelin/commit/b8755ebb
Tree: http://git-wip-us.apache.org/repos/asf/zeppelin/tree/b8755ebb
Diff: http://git-wip-us.apache.org/repos/asf/zeppelin/diff/b8755ebb

Branch: refs/heads/master
Commit: b8755ebb25ad793daa6873acc2e00b8d69588188
Parents: 8f344db
Author: Jeff Zhang <zj...@apache.org>
Authored: Fri Sep 9 14:41:26 2016 +0800
Committer: Alexander Bezzubov <bz...@apache.org>
Committed: Mon Sep 19 16:07:37 2016 +0900

----------------------------------------------------------------------
 .../zeppelin/interpreter/InterpreterFactory.java | 19 ++++++++++---------
 1 file changed, 10 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zeppelin/blob/b8755ebb/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
----------------------------------------------------------------------
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
index 362f76c..7732a45 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterFactory.java
@@ -1017,15 +1017,16 @@ public class InterpreterFactory implements InterpreterGroupFactory {
   public List<InterpreterSetting> getInterpreterSettings(String noteId) {
     List<String> interpreterSettingIds = getNoteInterpreterSettingBinding(noteId);
     LinkedList<InterpreterSetting> settings = new LinkedList<>();
-    synchronized (interpreterSettingIds) {
-      for (String id : interpreterSettingIds) {
-        InterpreterSetting setting = get(id);
-        if (setting == null) {
-          // interpreter setting is removed from factory. remove id from here, too
-          interpreterSettingIds.remove(id);
-        } else {
-          settings.add(setting);
-        }
+
+    Iterator<String> iter = interpreterSettingIds.iterator();
+    while (iter.hasNext()) {
+      String id = iter.next();
+      InterpreterSetting setting = get(id);
+      if (setting == null) {
+        // interpreter setting is removed from factory. remove id from here, too
+        iter.remove();
+      } else {
+        settings.add(setting);
       }
     }
     return settings;