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

ab pushed a commit to branch jira/solr-15232
in repository https://gitbox.apache.org/repos/asf/solr.git

commit 0ea9fb8e596e37851e59ea1a8d04118275dedfcb
Author: Andrzej Bialecki <[email protected]>
AuthorDate: Tue Apr 6 17:31:39 2021 +0200

    SOLR-15232: Fix precommit errors.
---
 .../java/org/apache/solr/core/CoreContainer.java   | 12 +++-
 .../org/apache/solr/util/scripting/Script.java     | 66 +++++++++++++---------
 .../apache/solr/util/scripting/package-info.java   | 24 ++++++++
 .../apache/solr/util/scripting/ScriptingTest.java  | 17 ++++++
 4 files changed, 90 insertions(+), 29 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java 
b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 3c21593..adc52d1 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -952,7 +952,9 @@ public class CoreContainer {
     try {
       script = Script.parseResource(loader, solrClient, nodeName, 
resourceName);
     } catch (Exception e) {
-      log.warn("Error loading script, ignoring " + resourceName, e);
+      if (log.isWarnEnabled()) {
+        log.warn("Error loading script, ignoring {}: {}", resourceName, e);
+      }
       script = null;
     }
     final Script finalScript = script;
@@ -960,9 +962,13 @@ public class CoreContainer {
       try {
         finalScript.run();
       } catch (Exception e) {
-        log.warn("Error running script " + resourceName, e);
+        if (log.isWarnEnabled()) {
+          log.warn("Error running script {}: {}", resourceName, e);
+        }
         if (!inShutdown && finalScript.getErrorHandling() == 
Script.ErrorHandling.FATAL) {
-          log.warn("Script error handling set to FATAL - shutting down.");
+          if (log.isWarnEnabled()) {
+            log.warn("Script error handling set to FATAL - shutting down.");
+          }
           shutdown();
         }
       }
diff --git a/solr/core/src/java/org/apache/solr/util/scripting/Script.java 
b/solr/core/src/java/org/apache/solr/util/scripting/Script.java
index ab8d167..48884e1 100644
--- a/solr/core/src/java/org/apache/solr/util/scripting/Script.java
+++ b/solr/core/src/java/org/apache/solr/util/scripting/Script.java
@@ -46,7 +46,6 @@ import org.slf4j.LoggerFactory;
 import java.io.Closeable;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.PrintStream;
 import java.lang.invoke.MethodHandles;
 import java.net.URLDecoder;
 import java.util.ArrayList;
@@ -122,7 +121,6 @@ public class Script implements Closeable {
   public final List<OpResult> opResults = new ArrayList<>();
   private ExecutorService executorService;
   private final boolean shouldCloseExecutor;
-  public PrintStream console = System.err;
   public boolean verbose;
   public boolean abortLoop;
   public boolean abortScript;
@@ -374,18 +372,25 @@ public class Script implements Closeable {
       }
       for (int i = 0; i < iterations; i++) {
         if (script.abortLoop) {
-          log.info("        -- abortLoop requested, aborting after {} 
iterations.", i);
+          if (log.isDebugEnabled()) {
+            log.debug("        -- abortLoop requested, aborting after {} 
iterations.", i);
+          }
           return Map.of("iterations", i, "state", "aborted");
         }
         script.context.put(LOOP_ITER_PROP, String.valueOf(i));
-        log.debug("   * iter {} :", i + 1); // logOK
+        int k = i + 1; // can't use a plus in a logging stmt :)
+        if (log.isDebugEnabled()) {
+          log.debug("   * iter {} :", k);
+        }
         for (ScriptOp op : ops) {
           if (log.isInfoEnabled()) {
             log.info("     - {}\t{})", op.getClass().getSimpleName(), 
op.params);
           }
           script.execOp(op);
           if (script.abortLoop) {
-            log.info("        -- abortLoop requested, aborting after {} 
iterations.", i);
+            if (log.isDebugEnabled()) {
+              log.debug("        -- abortLoop requested, aborting after {} 
iterations.", i);
+            }
             return Map.of("iterations", i, "state", "aborted");
           }
         }
@@ -473,44 +478,50 @@ public class Script implements Closeable {
    */
   public static class DumpOp extends ScriptOp {
 
+    private void logLine(String format, Object... params) {
+      if (log.isInfoEnabled()) {
+        log.info(format, params);
+      }
+    }
+
     @Override
     public Object execute(Script script) throws Exception {
-      log.info("========= START script dump ==========");
-      log.info("------    Script Operations    --------");
+      logLine("========= START script dump ==========");
+      logLine("------    Script Operations    --------");
       for (int i = 0; i < script.ops.size(); i++) {
-        log.info("{}.\t{}", i + 1, script.ops.get(i));
+        logLine("{}.\t{}", i + 1, script.ops.get(i));
       }
-      log.info("------    Script Execution     --------");
+      logLine("------    Script Execution     --------");
       for (int i = 0; i < script.opResults.size(); i++) {
         OpResult res = script.opResults.get(i);
         dumpResult(res, i + 1, 0);
       }
-      log.info("------  Final Script Context   --------");
+      logLine("------  Final Script Context   --------");
       TreeMap<String, Object> map = new TreeMap<>(script.context);
       map.forEach((key, value) -> {
         if (value instanceof Collection) {
           @SuppressWarnings("unchecked")
           Collection<Object> collection = (Collection<Object>) value;
-          log.info("{} size={}", key, collection.size());
+          logLine("{} size={}", key, collection.size());
           int i = 1;
           for (Object o : collection) {
-            log.info("\t{}.\t{}", i, o);
+            logLine("\t{}.\t{}", i, o);
             i++;
           }
         } else if (value instanceof Map) {
           @SuppressWarnings("unchecked")
           Map<String, Object> m = (Map<String, Object>) value;
-          log.info("{} size={}", key, m.size());
-          m.forEach((k, v) -> log.info("\t{}\t{}", k, v));
+          logLine("{} size={}", key, m.size());
+          m.forEach((k, v) -> logLine("\t{}\t{}", k, v));
         } else {
           if (value instanceof OpResult) {
             dumpResult((OpResult) value, 0, 0);
           } else {
-            log.info("{}\t{}", key, value);
+            logLine("{}\t{}", key, value);
           }
         }
       });
-      log.info("=========  END script dump  ==========");
+      logLine("=========  END script dump  ==========");
       return null;
     }
 
@@ -520,35 +531,35 @@ public class Script implements Closeable {
         indentSb.append('\t');
       }
       String indentStr = indentSb.toString();
-      log.info("{}{}.\t{}", indentStr, index, res.op);
+      logLine("{}{}.\t{}", indentStr, index, res.op);
       if (res.result == null) {
         return;
       }
       if (res.result instanceof Collection) {
         @SuppressWarnings("unchecked")
         Collection<Object> col = (Collection<Object>) res.result;
-        log.info("{}\tRes: size={}", indentStr, col.size());
+        logLine("{}\tRes: size={}", indentStr, col.size());
         int k = 1;
         for (Object o : col) {
           if (o instanceof OpResult) { // LOOP op results
             dumpResult((OpResult) o, k, indent + 1);
           } else {
-            log.info("{}\t-\t{}. {}", indentStr, k, o);
+            logLine("{}\t-\t{}. {}", indentStr, k, o);
           }
           k++;
         }
       } else if (res.result instanceof Map) {
         @SuppressWarnings("unchecked")
         Map<String, Object> map = (Map<String, Object>) res.result;
-        log.info("{}\tRes: size={}", indentStr, map.size());
-        map.forEach((k, v) -> log.info("{}\t-\t{}\t{}", indentStr, k, v));
+        logLine("{}\tRes: size={}", indentStr, map.size());
+        map.forEach((k, v) -> logLine("{}\t-\t{}\t{}", indentStr, k, v));
       } else if (res.result instanceof MapWriter) {
         @SuppressWarnings("unchecked")
         MapWriter mw = (MapWriter) res.result;
-        log.info("{}\tRes: size={}", indentStr, mw._size());
-        log.info("{}\t{}", indentStr, mw.jsonStr());
+        logLine("{}\tRes: size={}", indentStr, mw._size());
+        logLine("{}\t{}", indentStr, mw.jsonStr());
       } else {
-        log.info("{}\tRes: {}", indentStr, res.result);
+        logLine("{}\tRes: {}", indentStr, res.result);
       }
     }
   }
@@ -885,12 +896,15 @@ public class Script implements Closeable {
     try {
       for (int i = 0; i < ops.size(); i++) {
         if (abortScript) {
-          log.info("-- abortScript requested, aborting after {} ops.", i);
+          if (log.isInfoEnabled()) {
+            log.info("-- abortScript requested, aborting after {} ops.", i);
+          }
           return;
         }
         ScriptOp op = ops.get(i);
+        int k = i + 1; // can't use a plus in a logging stmt
         if (log.isInfoEnabled()) {
-          log.info("{}.\t{}\t{}", i + 1, op.getClass().getSimpleName(), 
op.initParams); // logOk
+          log.info("{}.\t{}\t{}", k, op.getClass().getSimpleName(), 
op.initParams);
         }
         execOp(op);
       }
diff --git 
a/solr/core/src/java/org/apache/solr/util/scripting/package-info.java 
b/solr/core/src/java/org/apache/solr/util/scripting/package-info.java
new file mode 100644
index 0000000..7512d87
--- /dev/null
+++ b/solr/core/src/java/org/apache/solr/util/scripting/package-info.java
@@ -0,0 +1,24 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+ 
+/** 
+ * A simple scripting language to execute a series of common 
collection-specific
+ * commands. This is used to support Solr node init / shutdown scripts.
+ */
+package org.apache.solr.util.scripting;
+
+
diff --git 
a/solr/core/src/test/org/apache/solr/util/scripting/ScriptingTest.java 
b/solr/core/src/test/org/apache/solr/util/scripting/ScriptingTest.java
index 161ed1d..34f0f5b 100644
--- a/solr/core/src/test/org/apache/solr/util/scripting/ScriptingTest.java
+++ b/solr/core/src/test/org/apache/solr/util/scripting/ScriptingTest.java
@@ -1,3 +1,20 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
 package org.apache.solr.util.scripting;
 
 import org.apache.solr.client.solrj.cloud.SolrCloudManager;

Reply via email to