ports/textproc/apache-solr/files/patch-bin_solr
Matthias Fechner a164dd24d2 textproc/apache-solr: use sockstat instead of lsof
While starting solr it is using now sockstat and can detect now if the start
was successful.

The patch is also provided upstream here:
https://github.com/apache/solr/pull/2906

Thanks a lot freebsd@koenigbj.8bx.de to provide with the required sockstat
parameters to make this PR possible.

PR:		283270
2024-12-13 11:20:09 +02:00

33 lines
1.4 KiB
Text

--- bin/solr.orig 2024-08-06 17:02:34 UTC
+++ bin/solr
@@ -2027,13 +2027,20 @@ function start_solr() {
fi
# no lsof on cygwin though
+ check_command=""
if lsof -v 2>&1 | grep -q revision; then
+ check_command="lsof -t -PniTCP:$SOLR_PORT -sTCP:LISTEN"
+ elif which -s sockstat; then
+ check_command="sockstat -q46lp$SOLR_PORT"
+ fi
+
+ if [[ "${check_command}" != "" ]]; then
echo -n "Waiting up to $SOLR_START_WAIT seconds to see Solr running on port $SOLR_PORT"
# Launch in a subshell to show the spinner
(loops=0
while true
do
- running=$(lsof -t -PniTCP:$SOLR_PORT -sTCP:LISTEN || :)
+ running=$(${check_command} || :)
if [ -z "${running:-}" ]; then
slept=$((loops * 2))
if [ $slept -lt $SOLR_START_WAIT ]; then
@@ -2052,7 +2059,7 @@ function start_solr() {
done) &
spinner $!
else
- echo -e "NOTE: Please install lsof as this script needs it to determine if Solr is listening on port $SOLR_PORT."
+ echo -e "NOTE: Please install lsof or sockstat as this script needs it to determine if Solr is listening on port $SOLR_PORT."
sleep 10
SOLR_PID=$(ps auxww | grep start\.jar | awk "/\-Djetty\.port=$SOLR_PORT/"' {print $2}' | sort -r)
echo -e "\nStarted Solr server on port $SOLR_PORT (pid=$SOLR_PID). Happy searching!\n"