You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@solr.apache.org by is...@apache.org on 2023/09/29 17:27:56 UTC

[solr] 02/03: SOLR-16644: Updating the check based on ratio

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

ishan pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git

commit df3ff50085b18af3007e0c6e858bd244fd2ee480
Author: Raghavan Muthuregunathan <ra...@gmail.com>
AuthorDate: Wed Sep 27 00:15:04 2023 -0700

    SOLR-16644: Updating the check based on ratio
---
 solr/bin/solr | 37 ++++++++++++++++++++-----------------
 1 file changed, 20 insertions(+), 17 deletions(-)

diff --git a/solr/bin/solr b/solr/bin/solr
index 9f2c858ac79..d0d54eae3bf 100644
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -1915,27 +1915,30 @@ function start_solr() {
         -jar start.jar "${SOLR_JETTY_CONFIG[@]}" $SOLR_JETTY_ADDL_CONFIG \
 	1>"$SOLR_LOGS_DIR/solr-$SOLR_PORT-console.log" 2>&1 & echo $! > "$SOLR_PID_DIR/solr-$SOLR_PORT.pid"
 
-  entropy_threshold=300
-  # Determine if the operating system is Ubuntu
-  os_name=$(lsb_release -is)
-  if [[ "$os_name" == "Ubuntu" ]]; then
-    # Get the kernel version
-    kernel_version=$(uname -r | awk -F. '{print $1"."$2}')
-    # Set entropy threshold based on kernel version
-    if [[ $(echo "$kernel_version >= 5.15" | bc) -eq 1 ]]; then
-      # For kernels 5.15 and newer
-      entropy_threshold=64  # Adjusted for 256 pool size (approx 25% of 256)
-    else
-      # For older kernels
-      entropy_threshold=300  # Original threshold for 4096 pool size
-    fi
-  fi
+  #!/bin/bash
+
+# Get the current entropy available
+entropy_avail=$(cat /proc/sys/kernel/random/entropy_avail)
+
+# Get the pool size
+pool_size=$(cat /proc/sys/kernel/random/poolsize)
 
-        # Check entropy and display warning if below threshold
-    if [[ -f /proc/sys/kernel/random/entropy_avail ]] && (( $(cat /proc/sys/kernel/random/entropy_avail) < $entropy_threshold)); then
+# Check if entropy is available and pool size is non-zero
+if [[ $entropy_avail -gt 0 && $pool_size -ne 0 ]]; then
+    # Compute the ratio of entropy available to pool size
+    ratio=$(awk -v ea="$entropy_avail" -v ps="$pool_size" 'BEGIN {print (ea/ps)*100}')
+    
+    # Check if the ratio is less than 25%
+    if (( $(echo "$ratio < 25" | bc -l) )); then
       echo "Warning: Available entropy is low. As a result, use of the UUIDField, SSL, or any other features that require"
       echo "RNG might not work properly. To check for the amount of available entropy, use 'cat /proc/sys/kernel/random/entropy_avail'."
     fi
+else
+    echo "Error: Either no entropy is available or the pool size is zero."
+fi
+
+
+ 
 
     # no lsof on cygwin though
     if lsof -v 2>&1 | grep -q revision; then