summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLarry Rosenman <ler@FreeBSD.org>2017-04-18 01:37:21 +0000
committerLarry Rosenman <ler@FreeBSD.org>2017-04-18 01:37:21 +0000
commit54c9fec60a835b776febc73f3723df1e988879ba (patch)
tree5dd074c0e39babc0d18dc6297355ee5eda753166
parentFix py-cec build after update of libcec. (diff)
Stock apache-solr scripts use lsof during startup to check if Solr started properly.
When deploying Apache Solr in Jail lsof needs access to /dev/mem which is not allowed by default. Lack of the access makes the startup script run in the loop for 3 minutes and then it assumes that it might have succeed. Allowing access to /dev/mem makes running Solr in Jail a bit pointless. Following patch changes the behaviour of Solr startup script to use sockstat instead of lsof to check if Solr has already started. This also makes the dependency on lsof obsolete. While here, pet portlint. PR: 218654 Submitted by: Wiktor Niesiobedzki <bsd@vink.pl> Approved by: idefix@fechner.net (maintainer), adamw (mentor) Differential Revision: https://reviews.freebsd.org/D10416
Notes
Notes: svn path=/head/; revision=438757
-rw-r--r--textproc/apache-solr/Makefile6
-rw-r--r--textproc/apache-solr/files/patch-bin_solr31
-rw-r--r--textproc/apache-solr/files/solr.in4
3 files changed, 36 insertions, 5 deletions
diff --git a/textproc/apache-solr/Makefile b/textproc/apache-solr/Makefile
index 5e9b55401db3..a142ee568a93 100644
--- a/textproc/apache-solr/Makefile
+++ b/textproc/apache-solr/Makefile
@@ -3,6 +3,7 @@
PORTNAME= apache-solr
PORTVERSION= 6.5.0
+PORTREVISION= 1
CATEGORIES= textproc java
MASTER_SITES= APACHE/lucene/solr/${PORTVERSION}
DISTNAME= solr-${PORTVERSION}
@@ -12,10 +13,9 @@ COMMENT= High performance search server built using Lucene Java
LICENSE= APACHE20
-CONFLICTS_INSTALL= apache-solr3-* apache-solr-4* apache-solr-5*
+RUN_DEPENDS= bash:shells/bash
-RUN_DEPENDS= bash:shells/bash \
- lsof:sysutils/lsof
+CONFLICTS_INSTALL= apache-solr3-* apache-solr-4* apache-solr-5*
USES= cpe tar:tgz
USE_JAVA= yes
diff --git a/textproc/apache-solr/files/patch-bin_solr b/textproc/apache-solr/files/patch-bin_solr
new file mode 100644
index 000000000000..30d7c090f210
--- /dev/null
+++ b/textproc/apache-solr/files/patch-bin_solr
@@ -0,0 +1,31 @@
+--- bin/solr.orig 2017-04-15 09:06:51 UTC
++++ bin/solr
+@@ -1757,13 +1757,12 @@ function launch_solr() {
+ 1>"$SOLR_LOGS_DIR/solr-$SOLR_PORT-console.log" 2>&1 & echo $! > "$SOLR_PID_DIR/solr-$SOLR_PORT.pid"
+
+ # no lsof on cygwin though
+- if hash lsof 2>/dev/null ; then # hash returns true if lsof is on the path
+ echo -n "Waiting up to $SOLR_STOP_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 -PniTCP:$SOLR_PORT -sTCP:LISTEN`
++ running=`sockstat -ls -P tcp -p $SOLR_PORT | grep LISTEN`
+ if [ -z "$running" ]; then
+ slept=$((loops * 2))
+ if [ $slept -lt $SOLR_STOP_WAIT ]; then
+@@ -1781,13 +1780,6 @@ function launch_solr() {
+ fi
+ done) &
+ spinner $!
+- else
+- echo -e "NOTE: Please install lsof as this script needs it to determine if Solr is listening on port $SOLR_PORT."
+- sleep 10
+- SOLR_PID=`ps auxww | grep start\.jar | grep -w "\-Djetty\.port=$SOLR_PORT" | grep -v grep | awk '{print $2}' | sort -r`
+- echo -e "\nStarted Solr server on port $SOLR_PORT (pid=$SOLR_PID). Happy searching!\n"
+- return;
+- fi
+ fi
+ }
+
diff --git a/textproc/apache-solr/files/solr.in b/textproc/apache-solr/files/solr.in
index 12b52ff9f1a3..7de46d35c5d8 100644
--- a/textproc/apache-solr/files/solr.in
+++ b/textproc/apache-solr/files/solr.in
@@ -54,8 +54,8 @@ solr_status ()
su -m solr -c "${command} status"
}
-# add %%LOCALBASE%%/[bin|sbin] to path
-export PATH=$PATH:%%LOCALBASE%%/bin:%%LOCALBASE%%/sbin
+# add %%LOCALBASE%%/bin to path
+export PATH=$PATH:%%LOCALBASE%%/bin
# let the start script read some custom settings
export SOLR_INCLUDE=/usr/local/etc/solr.in.sh