Skip to content

Commit

Permalink
textproc/apache-solr: use sockstat instead of lsof
Browse files Browse the repository at this point in the history
While starting solr it is using now sockstat and can detect now if the start
was successful.

The patch is also provided upstream here:
apache/solr#2906

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

PR:		283270
  • Loading branch information
mfechner committed Dec 13, 2024
1 parent 0fe23c3 commit a164dd2
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 0 deletions.
1 change: 1 addition & 0 deletions textproc/apache-solr/Makefile
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
PORTNAME= apache-solr
PORTVERSION= 9.7.0
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= textproc java
MASTER_SITES= https://archive.apache.org/dist/solr/solr/${PORTVERSION}/
Expand Down
33 changes: 33 additions & 0 deletions textproc/apache-solr/files/patch-bin_solr
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
--- 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"

0 comments on commit a164dd2

Please sign in to comment.