You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zeppelin.apache.org by zj...@apache.org on 2020/03/07 04:19:56 UTC

[zeppelin] branch master updated: ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json

This is an automated email from the ASF dual-hosted git repository.

zjffdu pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/zeppelin.git


The following commit(s) were added to refs/heads/master by this push:
     new 5d012ec  ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json
5d012ec is described below

commit 5d012ec2eba21e0dcd4ef2dba6979e7419aefa09
Author: Jeff Zhang <zj...@apache.org>
AuthorDate: Wed Dec 4 15:58:36 2019 +0800

    ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json
    
    ### What is this PR for?
    
    This is only the backend work for revering the order of  interpreter properties defined in `interpreter-setting.json`. We also need to do changes in frontend as well.
    
    ### What type of PR is it?
    [ Improvement]
    
    ### Todos
    * [ ] - Task
    
    ### What is the Jira issue?
    * https://issues.apache.org/jira/browse/ZEPPELIN-4467
    
    ### How should this be tested?
    * Ci pass
    
    ### Screenshots (if appropriate)
    
    ### 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 #3535 from zjffdu/ZEPPELIN-4467 and squashes the following commits:
    
    174bc5dac [Jeff Zhang] ZEPPELIN-4467. Reserve the order of interpreter properties defined in interpreter-setting.json
---
 .../src/main/resources/interpreter-setting.json    |  6 ++--
 zeppelin-web/src/app/interpreter/interpreter.html  | 40 +++++++++++-----------
 .../zeppelin/interpreter/InterpreterSetting.java   |  5 +--
 .../interpreter/InterpreterSettingManager.java     |  3 +-
 4 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/spark/interpreter/src/main/resources/interpreter-setting.json b/spark/interpreter/src/main/resources/interpreter-setting.json
index d8549b3..33d8e8e 100644
--- a/spark/interpreter/src/main/resources/interpreter-setting.json
+++ b/spark/interpreter/src/main/resources/interpreter-setting.json
@@ -31,7 +31,7 @@
         "propertyName": "spark.driver.cores",
         "defaultValue": "1",
         "description": "Number of cores to use for the driver process, only in cluster mode.",
-        "type": "int"
+        "type": "number"
       },
       "spark.driver.memory": {
         "envName": "",
@@ -45,7 +45,7 @@
         "propertyName": "spark.executor.cores",
         "defaultValue": "1",
         "description": "The number of cores to use on each executor",
-        "type": "int"
+        "type": "number"
       },
       "spark.executor.memory": {
         "envName": null,
@@ -156,7 +156,7 @@
       "zeppelin.spark.concurrentSQL.max": {
         "envName": null,
         "propertyName": "zeppelin.spark.concurrentSQL.max",
-        "defaultValue": 10,
+        "defaultValue": "10",
         "description": "Max number of SQL concurrently executed",
         "type": "number"
       },
diff --git a/zeppelin-web/src/app/interpreter/interpreter.html b/zeppelin-web/src/app/interpreter/interpreter.html
index 1dc1357..30f6f99 100644
--- a/zeppelin-web/src/app/interpreter/interpreter.html
+++ b/zeppelin-web/src/app/interpreter/interpreter.html
@@ -398,32 +398,32 @@ limitations under the License.
               <th style="width:20%" ng-if="valueform.$visible">action</th>
             </tr>
           </thead>
-          <tr ng-repeat="key in setting.properties | sortByKey" >
-            <td style="vertical-align: middle;">{{key}}</td>
+          <tr ng-repeat="property in setting.properties" >
+            <td style="vertical-align: middle;">{{property.name}}</td>
             <td style="vertical-align: middle;">
-              <span ng-if="setting.properties[key].type === 'textarea'"
-                    editable-textarea="setting.properties[key].value" e-form="valueform" e-msd-elastic>
-                 {{setting.properties[key].value | breakFilter}}
+              <span ng-if="property.type === 'textarea'"
+                    editable-textarea="property.value" e-form="valueform" e-msd-elastic>
+                 {{property.value | breakFilter}}
               </span>
-              <span ng-if="setting.properties[key].type === 'string'"
-                    editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic>
-                {{setting.properties[key].value}}
+              <span ng-if="property.type === 'string'"
+                    editable-text="property.value" e-form="valueform" e-msd-elastic>
+                {{property.value}}
               </span>
-              <span ng-if="setting.properties[key].type === 'number'"
-                    editable-text="setting.properties[key].value" e-widget-number e-form="valueform" e-msd-elastic>
-                {{setting.properties[key].value}}
+              <span ng-if="property.type === 'number'"
+                    editable-text="property.value" e-widget-number e-form="valueform" e-msd-elastic>
+                {{property.value}}
               </span>
-              <span ng-if="setting.properties[key].type === 'url'"
-                    editable-text="setting.properties[key].value" e-form="valueform" e-msd-elastic>
-                <a ng-href="{{setting.properties[key].value}}">{{setting.properties[key].value}}</a>
+              <span ng-if="property.type === 'url'"
+                    editable-text="property.value" e-form="valueform" e-msd-elastic>
+                <a ng-href="{{property.value}}">{{property.value}}</a>
               </span>
-              <span ng-if="setting.properties[key].type === 'password'"
-                    editable-password="setting.properties[key].value" e-form="valueform" e-msd-elastic>
-                {{setting.properties[key].value ? '***' : ''}}
+              <span ng-if="property.type === 'password'"
+                    editable-password="property.value" e-form="valueform" e-msd-elastic>
+                {{property.value ? '***' : ''}}
               </span>
-              <span ng-if="setting.properties[key].type === 'checkbox'"
-                    editable-checkbox="setting.properties[key].value" e-form="valueform" e-msd-elastic>
-                {{setting.properties[key].value}}
+              <span ng-if="property.type === 'checkbox'"
+                    editable-checkbox="property.value" e-form="valueform" e-msd-elastic>
+                {{property.value}}
               </span>
             </td>
             <td style="vertical-align: middle;" ng-if="valueform.$visible">
diff --git a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java
index 632937d..9d898a3 100644
--- a/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java
+++ b/zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/InterpreterSetting.java
@@ -60,6 +60,7 @@ import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
@@ -939,7 +940,7 @@ public class InterpreterSetting {
   // For backward compatibility of interpreter.json format after ZEPPELIN-2403
   static Map<String, InterpreterProperty> convertInterpreterProperties(Object properties) {
     if (properties != null && properties instanceof StringMap) {
-      Map<String, InterpreterProperty> newProperties = new HashMap<>();
+      Map<String, InterpreterProperty> newProperties = new LinkedHashMap<>();
       StringMap p = (StringMap) properties;
       for (Object o : p.entrySet()) {
         Map.Entry entry = (Map.Entry) o;
@@ -963,7 +964,7 @@ public class InterpreterSetting {
     } else if (properties instanceof Map) {
       Map<String, Object> dProperties =
           (Map<String, Object>) properties;
-      Map<String, InterpreterProperty> newProperties = new HashMap<>();
+      Map<String, InterpreterProperty> newProperties = new LinkedHashMap<>();
       for (String key : dProperties.keySet()) {
         Object value = dProperties.get(key);
         if (value instanceof InterpreterProperty) {
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 1202315..69051cd 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
@@ -27,6 +27,7 @@ import com.google.gson.GsonBuilder;
 import com.google.gson.reflect.TypeToken;
 
 import java.util.Properties;
+import java.util.LinkedHashMap;
 import java.util.Set;
 import javax.inject.Inject;
 import org.apache.commons.io.FileUtils;
@@ -419,7 +420,7 @@ public class InterpreterSettingManager implements NoteEventListener, ClusterEven
   private void registerInterpreterSetting(List<RegisteredInterpreter> registeredInterpreters,
       String interpreterDir, boolean override) {
 
-    Map<String, DefaultInterpreterProperty> properties = new HashMap<>();
+    Map<String, DefaultInterpreterProperty> properties = new LinkedHashMap<>();
     List<InterpreterInfo> interpreterInfos = new ArrayList<>();
     InterpreterOption option = defaultOption;
     String group = null;