You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/08/01 15:17:52 UTC

[lucene-solr] 02/02: @481 Start working out real life just a bit.

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

markrmiller pushed a commit to branch reference_impl_dev
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git

commit c316d5fd39f4070ec7b99f73b094da49a0c9ec19
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Sat Aug 1 10:17:11 2020 -0500

    @481 Start working out real life just a bit.
---
 .../org/apache/solr/cloud/ElectionContext.java     |  4 ++--
 .../solr/cloud/ShardLeaderElectionContextBase.java |  7 -------
 .../org/apache/solr/servlet/SolrQoSFilter.java     | 23 +++++++++++-----------
 .../java/org/apache/solr/common/util/SysStats.java |  9 +++++----
 4 files changed, 19 insertions(+), 24 deletions(-)

diff --git a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
index f6804e0..4e690eb 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ElectionContext.java
@@ -40,11 +40,11 @@ public abstract class ElectionContext implements Closeable {
     this.leaderPath = leaderPath;
     this.leaderProps = leaderProps;
 
-    ObjectReleaseTracker.track(this);
+    assert ObjectReleaseTracker.track(this);
   }
 
   public void close() {
-    ObjectReleaseTracker.release(this);
+    assert ObjectReleaseTracker.release(this);
   }
 
   public void cancelElection() throws InterruptedException, KeeperException {
diff --git a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
index ee018e3..0fbc408 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ShardLeaderElectionContextBase.java
@@ -159,13 +159,6 @@ class ShardLeaderElectionContextBase extends ElectionContext {
           leaderZkNodeParentVersion = stat.getVersion();
           log.info("Got leaderZkNodeParentVersion {}", leaderZkNodeParentVersion);
         }
-        if (result.getType() == ZooDefs.OpCode.error) {
-          OpResult.ErrorResult dresult = (OpResult.ErrorResult) result;
-          if (dresult.getErr() > 0) {
-            errors.add(it.next().getPath());
-          }
-        }
-
       }
     // assert leaderZkNodeParentVersion != null;
 
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
index e7e3e9b..88ddcd2 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrQoSFilter.java
@@ -40,7 +40,7 @@ public class SolrQoSFilter extends QoSFilter {
   static final String MAX_REQUESTS_INIT_PARAM = "maxRequests";
   static final String SUSPEND_INIT_PARAM = "suspendMs";
   static final int PROC_COUNT = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
-  public static final int OUR_LOAD_HIGH = 5;
+  public static final int OUR_LOAD_HIGH = 99;
   protected int _origMaxRequests;
 
 
@@ -61,32 +61,33 @@ public class SolrQoSFilter extends QoSFilter {
     HttpServletRequest req = (HttpServletRequest) request;
     String source = req.getHeader(QoSParams.REQUEST_SOURCE);
     if (source == null || !source.equals(QoSParams.INTERNAL)) {
-      // nocommit - deal with no supported, use this as a fail safe with high and low watermark?
-      double load =  ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
-      if (load < 0) {
-        log.warn("SystemLoadAverage not supported on this JVM");
-        load = 0;
-      }
+
 
       double ourLoad = sysStats.getAvarageUsagePerCPU();
       if (ourLoad > OUR_LOAD_HIGH) {
         log.info("Our individual load is {}", ourLoad);
         int cMax = getMaxRequests();
         if (cMax > 2) {
-          int max = Math.max(1, (int) ((double)cMax * 0.60D));
+          int max = Math.max(2, (int) ((double)cMax * 0.60D));
           log.info("set max concurrent requests to {}", max);
           setMaxRequests(max);
         }
       } else {
+        // nocommit - deal with no supported, use this as a fail safe with high and low watermark?
+        double load =  ManagementFactory.getOperatingSystemMXBean().getSystemLoadAverage();
+        if (load < 0) {
+          log.warn("SystemLoadAverage not supported on this JVM");
+          load = 0;
+        }
         double sLoad = load / (double) PROC_COUNT;
-        if (sLoad > 1.0D) {
+        if (sLoad > PROC_COUNT) {
           int cMax = getMaxRequests();
           if (cMax > 2) {
-            int max = Math.max(1, (int) ((double) cMax * 0.60D));
+            int max = Math.max(2, (int) ((double) cMax * 0.60D));
             log.info("set max concurrent requests to {}", max);
             setMaxRequests(max);
           }
-        } else if (sLoad < 0.9D && _origMaxRequests != getMaxRequests()) {
+        } else if (sLoad < PROC_COUNT && _origMaxRequests != getMaxRequests()) {
 
           log.info("set max concurrent requests to orig value {}", _origMaxRequests);
           setMaxRequests(_origMaxRequests);
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java b/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
index 241ebad..16d2231 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/SysStats.java
@@ -14,6 +14,7 @@ import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicLong;
 
 public class SysStats extends Thread {
+    public static final int REFRESH_INTERVAL = 10000;
     static final int PROC_COUNT = ManagementFactory.getOperatingSystemMXBean().getAvailableProcessors();
 
     private long refreshInterval;
@@ -27,7 +28,7 @@ public class SysStats extends Thread {
 
     public static synchronized SysStats getSysStats() {
         if (sysStats == null) {
-            sysStats = new SysStats(10000);
+            sysStats = new SysStats(REFRESH_INTERVAL);
         }
         return  sysStats;
     }
@@ -43,7 +44,7 @@ public class SysStats extends Thread {
         if (sysStats != null) {
             sysStats.stopMonitor();
         }
-        sysStats = new SysStats(10000);
+        sysStats = new SysStats(REFRESH_INTERVAL);
     }
 
     public void doStop() {
@@ -135,7 +136,7 @@ public class SysStats extends Thread {
         double usage = 0D;
         for (ThreadTime threadTime : values) {
             synchronized (threadTime) {
-                usage += (threadTime.getCurrent() - threadTime.getLast()) / (refreshInterval * 10000);
+                usage += (threadTime.getCurrent() - threadTime.getLast()) / (refreshInterval * REFRESH_INTERVAL);
             }
         }
         return usage;
@@ -154,7 +155,7 @@ public class SysStats extends Thread {
         double usage = 0D;
         if(info != null) {
             synchronized (info) {
-                usage = (info.getCurrent() - info.getLast()) / (refreshInterval * 10000);
+                usage = (info.getCurrent() - info.getLast()) / (TimeUnit.MILLISECONDS.toNanos(refreshInterval));
             }
         }
         return usage;