From 94f48820d553be5aaee4812a4a6f5500a124cb44 Mon Sep 17 00:00:00 2001 From: Jeff Zhang Date: Tue, 13 Mar 2018 14:54:58 +0800 Subject: [PATCH] ZEPPELIN-3322. Update interpreterBind when restarting zeppelin server --- .../InterpreterSettingManager.java | 15 +++++++++++-- .../InterpreterSettingManagerTest.java | 6 ++++++ .../src/test/resources/conf/interpreter.json | 21 +------------------ 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java index c3ec81bbb44..9587a881430 100644 --- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java +++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSettingManager.java @@ -208,6 +208,19 @@ private void loadFromFile() throws IOException { return; } + // update interpreter binding first as we change interpreter setting id in ZEPPELIN-3208. + Map> newBindingMap = new HashMap<>(); + for (Map.Entry> entry : infoSaving.interpreterBindings.entrySet()) { + String noteId = entry.getKey(); + List oldSettingIdList = entry.getValue(); + List newSettingIdList = new ArrayList<>(); + for (String oldId : oldSettingIdList) { + newSettingIdList.add(infoSaving.interpreterSettings.get(oldId).getName()); + } + newBindingMap.put(noteId, newSettingIdList); + } + interpreterBindings.putAll(newBindingMap); + //TODO(zjffdu) still ugly (should move all to InterpreterInfoSaving) for (InterpreterSetting savedInterpreterSetting : infoSaving.interpreterSettings.values()) { savedInterpreterSetting.setProperties(InterpreterSetting.convertInterpreterProperties( @@ -259,8 +272,6 @@ private void loadFromFile() throws IOException { interpreterSettings.put(savedInterpreterSetting.getId(), savedInterpreterSetting); } - interpreterBindings.putAll(infoSaving.interpreterBindings); - if (infoSaving.interpreterRepositories != null) { for (RemoteRepository repo : infoSaving.interpreterRepositories) { if (!dependencyResolver.getRepos().contains(repo)) { diff --git a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java index a52601c40b1..10dfb03b833 100644 --- a/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java +++ b/zeppelin-zengine/src/test/java/org/apache/zeppelin/interpreter/InterpreterSettingManagerTest.java @@ -72,6 +72,12 @@ public void testInitInterpreterSettingManager() throws IOException, RepositoryEx assertEquals(2, repositories.size()); assertEquals("central", repositories.get(0).getId()); + // verify interpreter binding + List interpreterSettingIds = interpreterSettingManager.getInterpreterBinding("2C6793KRV"); + assertEquals(2, interpreterSettingIds.size()); + assertEquals("test", interpreterSettingIds.get(0)); + assertEquals("test2", interpreterSettingIds.get(1)); + // Load it again InterpreterSettingManager interpreterSettingManager2 = new InterpreterSettingManager(conf, mock(AngularObjectRegistryListener.class), mock(RemoteInterpreterProcessListener.class), mock(ApplicationEventListener.class)); diff --git a/zeppelin-zengine/src/test/resources/conf/interpreter.json b/zeppelin-zengine/src/test/resources/conf/interpreter.json index 0c5e829c3cb..528921ca5b4 100644 --- a/zeppelin-zengine/src/test/resources/conf/interpreter.json +++ b/zeppelin-zengine/src/test/resources/conf/interpreter.json @@ -124,27 +124,8 @@ }, "interpreterBindings": { "2C6793KRV": [ - "2C48Y7FSJ", - "2C63XW4XE", - "2C66GE1VB", - "2C5VH924X", - "2C4BJDRRZ", - "2C3SQSB7V", - "2C4HKDCQW", - "2C3DR183X", - "2C66Z9XPQ", - "2C3PTPMUH", - "2C69WE69N", - "2C5SRRXHM", - "2C4ZD49PF", - "2C6V3D44K", - "2C4UB1UZA", - "2C5S1R21W", - "2C5DCRVGM", - "2C686X8ZH", "2C3RWCVAG", - "2C3JKFMJU", - "2C3VECEG2" + "2CKWE7B19" ] }, "interpreterRepositories": [