Fri Apr 25 08:47:52 2014 UTC ()
Default fd limit is too low for ElasticSearch, trick taken from mail/dovecot


(imil)
diff -r1.1 -r1.2 pkgsrc/databases/elasticsearch/Makefile
diff -r1.1 -r1.2 pkgsrc/databases/elasticsearch/files/elasticsearch.sh

cvs diff -r1.1 -r1.2 pkgsrc/databases/elasticsearch/Makefile (switch to unified diff)

--- pkgsrc/databases/elasticsearch/Makefile 2014/04/16 17:22:14 1.1
+++ pkgsrc/databases/elasticsearch/Makefile 2014/04/25 08:47:51 1.2
@@ -1,79 +1,80 @@ @@ -1,79 +1,80 @@
1# $NetBSD: Makefile,v 1.1 2014/04/16 17:22:14 imil Exp $ 1# $NetBSD: Makefile,v 1.2 2014/04/25 08:47:51 imil Exp $
2 2
3DISTNAME= elasticsearch-1.1.0 3DISTNAME= elasticsearch-1.1.0
 4PKGREVISION= 1
4CATEGORIES= textproc 5CATEGORIES= textproc
5MASTER_SITES= https://download.elasticsearch.org/elasticsearch/elasticsearch/ 6MASTER_SITES= https://download.elasticsearch.org/elasticsearch/elasticsearch/
6 7
7MAINTAINER= imil@NetBSD.org 8MAINTAINER= imil@NetBSD.org
8HOMEPAGE= http://www.elasticsearch.org/ 9HOMEPAGE= http://www.elasticsearch.org/
9COMMENT= Distributed RESTful Search Engine 10COMMENT= Distributed RESTful Search Engine
10LICENSE= apache-2.0 11LICENSE= apache-2.0
11 12
12USE_LANGUAGES= # none 13USE_LANGUAGES= # none
13USE_JAVA= run 14USE_JAVA= run
14USE_JAVA2= yes 15USE_JAVA2= yes
15NO_BUILD= yes 16NO_BUILD= yes
16 17
17PKG_SYSCONFSUBDIR= elasticsearch 18PKG_SYSCONFSUBDIR= elasticsearch
18EXDIR= ${PREFIX}/share/examples/elasticsearch 19EXDIR= ${PREFIX}/share/examples/elasticsearch
19EGDIR= ${PREFIX}/share/elasticsearch 20EGDIR= ${PREFIX}/share/elasticsearch
20 21
21CONFS= elasticsearch.yml logging.yml 22CONFS= elasticsearch.yml logging.yml
22.for f in ${CONFS} 23.for f in ${CONFS}
23CONF_FILES+= ${EXDIR}/${f} ${PKG_SYSCONFDIR}/${f} 24CONF_FILES+= ${EXDIR}/${f} ${PKG_SYSCONFDIR}/${f}
24.endfor 25.endfor
25DOCS= LICENSE.txt NOTICE.txt README.textile 26DOCS= LICENSE.txt NOTICE.txt README.textile
26BINS= elasticsearch elasticsearch.in.sh plugin 27BINS= elasticsearch elasticsearch.in.sh plugin
27 28
28.include "../../mk/bsd.prefs.mk" 29.include "../../mk/bsd.prefs.mk"
29 30
30ES_USER?= elasticsearch 31ES_USER?= elasticsearch
31ES_GROUP?= ${ES_USER} 32ES_GROUP?= ${ES_USER}
32ES_LIBDIR?= ${PREFIX}/lib/elasticsearch 33ES_LIBDIR?= ${PREFIX}/lib/elasticsearch
33ES_DBDIR?= ${VARBASE}/db/elasticsearch 34ES_DBDIR?= ${VARBASE}/db/elasticsearch
34ES_LOGDIR?= ${VARBASE}/log/elasticsearch 35ES_LOGDIR?= ${VARBASE}/log/elasticsearch
35ES_PIDDIR?= ${VARBASE}/run 36ES_PIDDIR?= ${VARBASE}/run
36ES_TMPDIR?= ${VARBASE}/tmp/elasticsearch 37ES_TMPDIR?= ${VARBASE}/tmp/elasticsearch
37 38
38PKG_USERS_VARS+= ES_USER 39PKG_USERS_VARS+= ES_USER
39PKG_GROUPS_VARS+= ES_GROUP 40PKG_GROUPS_VARS+= ES_GROUP
40PKG_GROUPS= ${ES_GROUP} 41PKG_GROUPS= ${ES_GROUP}
41PKG_USERS= ${ES_USER}:${ES_GROUP} 42PKG_USERS= ${ES_USER}:${ES_GROUP}
42 43
43FILES_SUBST+= JAVA_HOME=${PKG_JAVA_HOME} ES_USER=${ES_USER} \ 44FILES_SUBST+= JAVA_HOME=${PKG_JAVA_HOME} ES_USER=${ES_USER} \
44 ES_GROUP=${ES_GROUP} ES_LIBDIR=${ES_LIBDIR} \ 45 ES_GROUP=${ES_GROUP} ES_LIBDIR=${ES_LIBDIR} \
45 ES_LOGDIR=${ES_LOGDIR} ES_PIDDIR=${ES_PIDDIR} \ 46 ES_LOGDIR=${ES_LOGDIR} ES_PIDDIR=${ES_PIDDIR} \
46 ES_DBDIR=${ES_DBDIR} DISTNAME=${DISTNAME} 47 ES_DBDIR=${ES_DBDIR} DISTNAME=${DISTNAME}
47 48
48 49
49RCD_SCRIPTS= elasticsearch 50RCD_SCRIPTS= elasticsearch
50 51
51OWN_DIRS_PERMS+= ${ES_LOGDIR} ${ES_USER} ${ES_GROUP} 0700 52OWN_DIRS_PERMS+= ${ES_LOGDIR} ${ES_USER} ${ES_GROUP} 0700
52OWN_DIRS_PERMS+= ${ES_DBDIR} ${ES_USER} ${ES_GROUP} 0700 53OWN_DIRS_PERMS+= ${ES_DBDIR} ${ES_USER} ${ES_GROUP} 0700
53INSTALLATION_DIRS+= ${EXDIR} ${ES_LIBDIR} ${PREFIX}/share/doc/elasticsearch 54INSTALLATION_DIRS+= ${EXDIR} ${ES_LIBDIR} ${PREFIX}/share/doc/elasticsearch
54INSTALLATION_DIRS+= ${ES_LIBDIR}/plugins ${EGDIR} 55INSTALLATION_DIRS+= ${ES_LIBDIR}/plugins ${EGDIR}
55 56
56SUBST_CLASSES+= paths 57SUBST_CLASSES+= paths
57SUBST_STAGE.paths= post-patch 58SUBST_STAGE.paths= post-patch
58SUBST_FILES.paths= config/elasticsearch.yml 59SUBST_FILES.paths= config/elasticsearch.yml
59SUBST_SED.paths= -e 's,%%PKG_SYSCONFDIR%%,${PKG_SYSCONFDIR},g' 60SUBST_SED.paths= -e 's,%%PKG_SYSCONFDIR%%,${PKG_SYSCONFDIR},g'
60SUBST_SED.paths+= -e 's,%%VARBASE%%,${VARBASE},g' 61SUBST_SED.paths+= -e 's,%%VARBASE%%,${VARBASE},g'
61SUBST_SED.paths+= -e 's,%%PREFIX%%,${PREFIX},g' 62SUBST_SED.paths+= -e 's,%%PREFIX%%,${PREFIX},g'
62SUBST_SED.paths+= -e 's,%%ES_TMPDIR%%,${ES_TMPDIR},g' 63SUBST_SED.paths+= -e 's,%%ES_TMPDIR%%,${ES_TMPDIR},g'
63 64
64do-install: 65do-install:
65.for f in ${CONFS} 66.for f in ${CONFS}
66 ${INSTALL_DATA} ${WRKSRC}/config/${f} ${DESTDIR}${EXDIR} 67 ${INSTALL_DATA} ${WRKSRC}/config/${f} ${DESTDIR}${EXDIR}
67.endfor 68.endfor
68.for f in ${DOCS} 69.for f in ${DOCS}
69 ${INSTALL_DATA} ${WRKSRC}/${f} \ 70 ${INSTALL_DATA} ${WRKSRC}/${f} \
70 ${DESTDIR}${PREFIX}/share/doc/elasticsearch 71 ${DESTDIR}${PREFIX}/share/doc/elasticsearch
71.endfor 72.endfor
72.for f in ${BINS} 73.for f in ${BINS}
73 ${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} \ 74 ${INSTALL_SCRIPT} ${WRKSRC}/bin/${f} \
74 ${DESTDIR}${PREFIX}/share/elasticsearch 75 ${DESTDIR}${PREFIX}/share/elasticsearch
75.endfor 76.endfor
76 ${INSTALL_DATA} ${WRKSRC}/lib/*.jar ${DESTDIR}${ES_LIBDIR} 77 ${INSTALL_DATA} ${WRKSRC}/lib/*.jar ${DESTDIR}${ES_LIBDIR}
77 78
78.include "../../mk/java-vm.mk" 79.include "../../mk/java-vm.mk"
79.include "../../mk/bsd.pkg.mk" 80.include "../../mk/bsd.pkg.mk"

cvs diff -r1.1 -r1.2 pkgsrc/databases/elasticsearch/files/elasticsearch.sh (switch to unified diff)

--- pkgsrc/databases/elasticsearch/files/elasticsearch.sh 2014/04/16 17:22:14 1.1
+++ pkgsrc/databases/elasticsearch/files/elasticsearch.sh 2014/04/25 08:47:52 1.2
@@ -1,53 +1,66 @@ @@ -1,53 +1,66 @@
1#! @RCD_SCRIPTS_SHELL@ 1#! @RCD_SCRIPTS_SHELL@
2# 2#
3# $NetBSD: elasticsearch.sh,v 1.1 2014/04/16 17:22:14 imil Exp $ 3# $NetBSD: elasticsearch.sh,v 1.2 2014/04/25 08:47:52 imil Exp $
4# 4#
5# PROVIDE: elasticsearch 5# PROVIDE: elasticsearch
6# REQUIRE: DAEMON 6# REQUIRE: DAEMON
7# 7#
8 8
9. /etc/rc.subr 9. /etc/rc.subr
10 10
11name="elasticsearch" 11name="elasticsearch"
12rcvar=$name 12rcvar=$name
13pidfile="@ES_PIDDIR@/elasticsearch.pid" 13pidfile="@ES_PIDDIR@/elasticsearch.pid"
14required_files="@PKG_SYSCONFDIR@/elasticsearch.yml" 14required_files="@PKG_SYSCONFDIR@/elasticsearch.yml"
15start_precmd="elasticsearch_precmd" 15start_precmd="elasticsearch_precmd"
16 16
17: ${elasticsearch_user:=@ES_USER@} 17: ${elasticsearch_user:=@ES_USER@}
18: ${elasticsearch_group:=@ES_GROUP@} 18: ${elasticsearch_group:=@ES_GROUP@}
19: ${elasticsearch_config:="@PKG_SYSCONFDIR@/elasticsearch.yml"} 19: ${elasticsearch_config:="@PKG_SYSCONFDIR@/elasticsearch.yml"}
20: ${elasticsearch_min_mem:="256m"} 20: ${elasticsearch_min_mem:="256m"}
21: ${elasticsearch_max_mem:="1g"} 21: ${elasticsearch_max_mem:="1g"}
22: ${elasticsearch_props:=""} 22: ${elasticsearch_props:=""}
 23: ${elasticsearch_fdlimit:="768"}
23 24
24ES_CLASSPATH="@ES_LIBDIR@/@DISTNAME@.jar:@ES_LIBDIR@/*" 25ES_CLASSPATH="@ES_LIBDIR@/@DISTNAME@.jar:@ES_LIBDIR@/*"
25 26
26command="@PKG_JAVA_HOME@/bin/java" 27command="@PKG_JAVA_HOME@/bin/java"
27# flags taken from bin/elasticsearch and bin/elasticsearch.in.sh 28# flags taken from bin/elasticsearch and bin/elasticsearch.in.sh
28command_args=" -Delasticsearch \ 29command_args=" -Delasticsearch \
29 -Des.pidfile=${pidfile} \ 30 -Des.pidfile=${pidfile} \
30 -Des.config=${elasticsearch_config} \ 31 -Des.config=${elasticsearch_config} \
31 -Xms${elasticsearch_min_mem} \ 32 -Xms${elasticsearch_min_mem} \
32 -Xmx${elasticsearch_max_mem} \ 33 -Xmx${elasticsearch_max_mem} \
33 -Xss256k \ 34 -Xss256k \
34 -Djava.awt.headless=true \ 35 -Djava.awt.headless=true \
35 -XX:+UseParNewGC \ 36 -XX:+UseParNewGC \
36 -XX:+UseConcMarkSweepGC \ 37 -XX:+UseConcMarkSweepGC \
37 -XX:CMSInitiatingOccupancyFraction=75 \ 38 -XX:CMSInitiatingOccupancyFraction=75 \
38 -XX:+UseCMSInitiatingOccupancyOnly \ 39 -XX:+UseCMSInitiatingOccupancyOnly \
39 -XX:+HeapDumpOnOutOfMemoryError \ 40 -XX:+HeapDumpOnOutOfMemoryError \
40 -XX:+UseCMSInitiatingOccupancyOnly \ 41 -XX:+UseCMSInitiatingOccupancyOnly \
41 -cp ${ES_CLASSPATH} \ 42 -cp ${ES_CLASSPATH} \
42 ${elasticsearch_props} \ 43 ${elasticsearch_props} \
43 org.elasticsearch.bootstrap.Elasticsearch \ 44 org.elasticsearch.bootstrap.Elasticsearch \
44 >/dev/null &" 45 >/dev/null &"
45 46
 47# ElasticSearch is fd hungry, default limit leads to write locks
 48SOFT_FDLIMIT=`ulimit -S -n`
 49HARD_FDLIMIT=`ulimit -H -n`
 50
 51if [ ${elasticsearch_fdlimit} -gt ${SOFT_FDLIMIT} ]; then
 52 if [ ${elasticsearch_fdlimit} -le ${HARD_FDLIMIT} ]; then
 53 ulimit -S -n ${elasticsearch_fdlimit}
 54 else
 55 ulimit -S -n ${HARD_FDLIMIT}
 56 fi
 57fi
 58
46elasticsearch_precmd() 59elasticsearch_precmd()
47{ 60{
48 @TOUCH@ ${pidfile} 61 @TOUCH@ ${pidfile}
49 @CHOWN@ ${elasticsearch_user}:${elasticsearch_group} ${pidfile} 62 @CHOWN@ ${elasticsearch_user}:${elasticsearch_group} ${pidfile}
50} 63}
51 64
52load_rc_config "$name" 65load_rc_config "$name"
53run_rc_command "$1" 66run_rc_command "$1"