DRILL-121 RPM and DEB packages
Project: http://git-wip-us.apache.org/repos/asf/incubator-drill/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-drill/commit/2bcf0547 Tree: http://git-wip-us.apache.org/repos/asf/incubator-drill/tree/2bcf0547 Diff: http://git-wip-us.apache.org/repos/asf/incubator-drill/diff/2bcf0547 Branch: refs/heads/master Commit: 2bcf0547a0d230e65d8a935c634e01608c19eb5d Parents: 5232b0e Author: Steven Phillips <[email protected]> Authored: Wed Aug 21 19:23:28 2013 -0700 Committer: Jacques Nadeau <[email protected]> Committed: Wed Aug 28 20:37:53 2013 -0700 ---------------------------------------------------------------------- sandbox/prototype/distribution/pom.xml | 214 +++++++++++++++++ .../prototype/distribution/src/assemble/bin.xml | 81 +++++++ .../distribution/src/deb/control/conffiles | 3 + .../distribution/src/deb/control/control | 8 + .../distribution/src/resources/drill-config.sh | 96 ++++++++ .../distribution/src/resources/drill-env.sh | 2 + .../src/resources/drill-override.conf | 36 +++ .../distribution/src/resources/drillbit | 166 +++++++++++++ .../distribution/src/resources/drillbit.sh | 230 +++++++++++++++++++ .../distribution/src/resources/logback.xml | 36 +++ .../prototype/distribution/src/resources/runbit | 30 +++ .../distribution/src/resources/sqlline | 30 +++ .../src/main/resources/drill-module.conf | 2 +- .../java-exec/src/main/resources/logback.xml | 49 ++++ .../exec/java-exec/src/main/sh/drill-config.sh | 96 ++++++++ .../exec/java-exec/src/main/sh/drillbit.sh | 230 +++++++++++++++++++ .../prototype/exec/java-exec/src/main/sh/runbit | 30 +++ sandbox/prototype/pom.xml | 10 + 18 files changed, 1348 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/pom.xml ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/pom.xml b/sandbox/prototype/distribution/pom.xml new file mode 100644 index 0000000..934c81a --- /dev/null +++ b/sandbox/prototype/distribution/pom.xml @@ -0,0 +1,214 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + <parent> + <artifactId>prototype-parent</artifactId> + <groupId>org.apache.drill</groupId> + <version>1.0-SNAPSHOT</version> + </parent> + + <groupId>org.apache.drill</groupId> + <artifactId>distribution</artifactId> + <packaging>pom</packaging> + <name>Packaging</name> + + <dependencies> + <dependency> + <groupId>org.apache.drill.exec</groupId> + <artifactId>java-exec</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.drill.exec</groupId> + <artifactId>netty-bufferl</artifactId> + <version>4.0.7.Final</version> + </dependency> + <dependency> + <groupId>org.apache.drill.exec</groupId> + <artifactId>ref</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.drill</groupId> + <artifactId>common</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.drill</groupId> + <artifactId>planner</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + <dependency> + <groupId>org.apache.drill</groupId> + <artifactId>sqlparser</artifactId> + <version>1.0-SNAPSHOT</version> + </dependency> + </dependencies> + + <build> + <plugins> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <executions> + <execution> + <id>distro-assembly</id> + <phase>package</phase> + <goals> + <goal>single</goal> + </goals> + <configuration> + <descriptors> + <descriptor>src/assemble/bin.xml</descriptor> + </descriptors> + <finalName>drill-1.0</finalName> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + + <profiles> + <profile> + <id>rpm</id> + <build> + <plugins> + <plugin> + <groupId>org.codehaus.mojo</groupId> + <artifactId>rpm-maven-plugin</artifactId> + <version>2.1-alpha-3</version> + <executions> + <execution> + <id>generate-rpm</id> + <goals> + <goal>rpm</goal> + </goals> + </execution> + </executions> + <configuration> + <copyright>2013 ASF</copyright> + <group>Apache Software Foundation</group> + <prefix>/opt</prefix> + <release>SNAPSHOT</release> + <version>1.0</version> + <name>drill</name> + <mappings> + <mapping> + <directory>/opt/drill/bin</directory> + <sources> + <source> + <location>target/drill-1.0-bin/drill-1.0/bin</location> + </source> + </sources> + </mapping> + <mapping> + <directory>/opt/drill/lib</directory> + <sources> + <source> + <location>target/drill-1.0-bin/drill-1.0/lib</location> + </source> + </sources> + </mapping> + <mapping> + <directory>/opt/drill/jars</directory> + <sources> + <source> + <location>target/drill-1.0-bin/drill-1.0/jars</location> + </source> + </sources> + </mapping> + <mapping> + <directory>/etc/drill/conf</directory> + <sources> + <source> + <location>target/drill-1.0-bin/drill-1.0/conf</location> + </source> + </sources> + <configuration>true</configuration> + </mapping> + <mapping> + <directory>/etc/init.d/</directory> + <sources> + <source> + <location>src/resources/drillbit</location> + </source> + </sources> + <directoryIncluded>false</directoryIncluded> + </mapping> + </mappings> + </configuration> + </plugin> + </plugins> + </build> + </profile> + <profile> + <id>deb</id> + <build> + <plugins> + <plugin> + <artifactId>jdeb</artifactId> + <groupId>org.vafer</groupId> + <version>1.0</version> + <executions> + <execution> + <phase>package</phase> + <goals> + <goal>jdeb</goal> + </goals> + <configuration> + <deb>target/drill-1.0-SNAPSHOT.deb</deb> + <dataSet> + <data> + <src>target/drill-1.0-bin/drill-1.0/lib</src> + <type>directory</type> + <mapper> + <type>perm</type> + <prefix>/opt/drill/lib/</prefix> + </mapper> + </data> + <data> + <src>target/drill-1.0-bin/drill-1.0/jars</src> + <type>directory</type> + <mapper> + <type>perm</type> + <prefix>/opt/drill/jars/</prefix> + </mapper> + </data> + <data> + <src>target/drill-1.0-bin/drill-1.0/bin</src> + <type>directory</type> + <mapper> + <type>perm</type> + <prefix>/opt/drill/bin/</prefix> + <filemode>755</filemode> + </mapper> + </data> + <data> + <src>target/drill-1.0-bin/drill-1.0/conf</src> + <type>directory</type> + <mapper> + <type>perm</type> + <prefix>/etc/drill/conf</prefix> + <filemode>755</filemode> + </mapper> + </data> + <data> + <src>src/resources/drillbit</src> + <dst>/etc/init.d/drillbit</dst> + <type>file</type> + <mapper> + <type>perm</type> + <filemode>755</filemode> + </mapper> + </data> + </dataSet> + </configuration> + </execution> + </executions> + </plugin> + </plugins> + </build> + </profile> + </profiles> + +</project> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/assemble/bin.xml ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/assemble/bin.xml b/sandbox/prototype/distribution/src/assemble/bin.xml new file mode 100644 index 0000000..5276c69 --- /dev/null +++ b/sandbox/prototype/distribution/src/assemble/bin.xml @@ -0,0 +1,81 @@ +<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2 http://maven.apache.org/xsd/assembly-1.1.2.xsd"> + <id>bin</id> + <formats> + <format>tar.gz</format> + <format>dir</format> + </formats> + <includeBaseDirectory>true</includeBaseDirectory> + <moduleSets> + <moduleSet> + + <!-- Enable access to all projects in the current multimodule build! --> + <useAllReactorProjects>true</useAllReactorProjects> + + <!-- Now, select which projects to include in this module-set. --> + <includes> + <include>org.apache.drill:planner:jar</include> + <include>org.apache.drill:sqlparser:jar</include> + <include>org.apache.drill.exec:netty-bufferl</include> + <include>org.apache.drill.exec:ref</include> + </includes> + <binaries> + <outputDirectory>jars</outputDirectory> + <unpack>false</unpack> + </binaries> + </moduleSet> + </moduleSets> + <dependencySets> + <dependencySet> + <outputDirectory>lib</outputDirectory> + <unpack>false</unpack> + <useProjectArtifact>false</useProjectArtifact> + <excludes> + <exclude>org.apache.drill</exclude> + <exclude>org.apache.drill.exec</exclude> + <exclude>com.google.protobuf</exclude> + <exclude>de.huxhorn.*</exclude> + </excludes> + <scope>test</scope> + </dependencySet> + </dependencySets> + <files> + <file> + <source>../common/target/common-1.0-SNAPSHOT-rebuffed.jar</source> + <outputDirectory>jars</outputDirectory> + </file> + <file> + <source>../exec/java-exec/target/java-exec-1.0-SNAPSHOT-rebuffed.jar</source> + <outputDirectory>jars</outputDirectory> + </file> + <file> + <source>src/resources/runbit</source> + <outputDirectory>bin</outputDirectory> + </file> + <file> + <source>src/resources/drillbit.sh</source> + <outputDirectory>bin</outputDirectory> + </file> + <file> + <source>src/resources/drill-config.sh</source> + <outputDirectory>bin</outputDirectory> + </file> + <file> + <source>src/resources/sqlline</source> + <outputDirectory>bin</outputDirectory> + </file> + <file> + <source>src/resources/drill-override.conf</source> + <outputDirectory>conf</outputDirectory> + </file> + <file> + <source>src/resources/logback.xml</source> + <outputDirectory>conf</outputDirectory> + </file> + <file> + <source>src/resources/drill-env.sh</source> + <outputDirectory>conf</outputDirectory> + </file> + </files> +</assembly> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/deb/control/conffiles ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/deb/control/conffiles b/sandbox/prototype/distribution/src/deb/control/conffiles new file mode 100644 index 0000000..a9d1fda --- /dev/null +++ b/sandbox/prototype/distribution/src/deb/control/conffiles @@ -0,0 +1,3 @@ +/etc/drill/conf/drill-override.conf +/etc/drill/conf/logback.xml +/etc/drill/conf/drill-env.sh \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/deb/control/control ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/deb/control/control b/sandbox/prototype/distribution/src/deb/control/control new file mode 100644 index 0000000..8a6b69b --- /dev/null +++ b/sandbox/prototype/distribution/src/deb/control/control @@ -0,0 +1,8 @@ +Package: drill +Version: 1.0-SNAPSHOT +Section: misc +Priority: optional +Architecture: all +Maintainer: name <> +Description: Apache Drill +Distribution: development \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/drill-config.sh ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/drill-config.sh b/sandbox/prototype/distribution/src/resources/drill-config.sh new file mode 100644 index 0000000..20102fc --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/drill-config.sh @@ -0,0 +1,96 @@ +# +#/** +# * Copyright 2013 The Apache Software Foundation +# * +# * Licensed to the Apache Software Foundation (ASF) under one +# * or more contributor license agreements. See the NOTICE file +# * distributed with this work for additional information +# * regarding copyright ownership. The ASF licenses this file +# * to you under the Apache License, Version 2.0 (the +# * "License"); you may not use this file except in compliance +# * with the License. You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ + +# included in all the drill scripts with source command +# should not be executable directly +# also should not be passed any arguments, since we need original $* +# Modelled after $HADOOP_HOME/bin/hadoop-env.sh. + +# resolve links - "${BASH_SOURCE-$0}" may be a softlink + +this="${BASH_SOURCE-$0}" +while [ -h "$this" ]; do + ls=`ls -ld "$this"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + this="$link" + else + this=`dirname "$this"`/"$link" + fi +done + +# convert relative path to absolute path +bin=`dirname "$this"` +script=`basename "$this"` +bin=`cd "$bin">/dev/null; pwd` +this="$bin/$script" + +# the root of the drill installation +if [ -z "$DRILL_HOME" ]; then + export DRILL_HOME=`dirname "$this"`/.. +fi + +#check to see if the conf dir or drill home are given as an optional arguments +while [ $# -gt 1 ] +do + if [ "--config" = "$1" ] + then + shift + confdir=$1 + shift + DRILL_CONF_DIR=$confdir + else + # Presume we are at end of options and break + break + fi +done + +# Allow alternate drill conf dir location. +export DRILL_CONF_DIR="${DRILL_CONF_DIR:-/etc/drill/conf}" + +. "${DRILL_CONF_DIR}/drill-env.sh" + +# Newer versions of glibc use an arena memory allocator that causes virtual +# memory usage to explode. Tune the variable down to prevent vmem explosion. +export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4} + +if [ -z "$JAVA_HOME" ]; then + if [ -e `which java` ]; then + SOURCE=`which java` + while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located + done + JAVA_HOME="$( cd -P "$( dirname "$SOURCE" )" && cd .. && pwd )" + fi + # if we didn't set it + if [ -z "$JAVA_HOME" ]; then + cat 1>&2 <<EOF ++======================================================================+ +| Error: JAVA_HOME is not set and Java could not be found | ++----------------------------------------------------------------------+ +| Drill requires Java 1.7 or later. | ++======================================================================+ +EOF + exit 1 + fi +fi http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/drill-env.sh ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/drill-env.sh b/sandbox/prototype/distribution/src/resources/drill-env.sh new file mode 100644 index 0000000..8bfb66b --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/drill-env.sh @@ -0,0 +1,2 @@ +DRILL_MAX_DIRECT_MEMORY="8G" +export DRILL_JAVA_OPTS="-XX:MaxDirectMemorySize=$DRILL_MAX_DIRECT_MEMORY" http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/drill-override.conf ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/drill-override.conf b/sandbox/prototype/distribution/src/resources/drill-override.conf new file mode 100644 index 0000000..30305af --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/drill-override.conf @@ -0,0 +1,36 @@ +// This file tells Drill to consider this module when class path scanning. +// This file can also include any supplementary configuration information. +// This file is in HOCON format, see https://github.com/typesafehub/config/blob/master/HOCON.md for more information. +drill.exec: { + cluster-id: "drillbits1" + rpc: { + user.port : 31010, + bit.port : 32011 + }, + operator: { + packages += "org.apache.drill.exec.physical.config" + }, + optimizer: { + implementation: "org.apache.drill.exec.opt.IdentityOptimizer" + }, + storage: { + packages += "org.apache.drill.exec.store" + } + metrics : { + context: "drillbit" + }, + zk: { + connect: "localhost:2181", + root: "/drill", + refresh: 500, + timeout: 5000, + retry: { + count: 7200, + delay: 500 + } + } + + network: { + start: 35000 + } +} http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/drillbit ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/drillbit b/sandbox/prototype/distribution/src/resources/drillbit new file mode 100755 index 0000000..f235ed3 --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/drillbit @@ -0,0 +1,166 @@ +#!/bin/bash +# +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +# Starts a Drillbit +# +# chkconfig: 345 85 15 +# description: Drillbit +# +### BEGIN INIT INFO +# Provides: drillbit +# Short-Description: Drillbit +# Default-Start: 3 4 5 +# Default-Stop: 0 1 2 6 +# Required-Start: $syslog $remote_fs +# Required-Stop: $syslog $remote_fs +# Should-Start: +# Should-Stop: +### END INIT INFO + +. /lib/lsb/init-functions +RETVAL_SUCCESS=0 + +STATUS_RUNNING=0 +STATUS_DEAD=1 +STATUS_DEAD_AND_LOCK=2 +STATUS_NOT_RUNNING=3 +STATUS_OTHER_ERROR=102 + + +ERROR_PROGRAM_NOT_INSTALLED=5 +ERROR_PROGRAM_NOT_CONFIGURED=6 + + +RETVAL=0 +SLEEP_TIME=5 +PROC_NAME="java" + +DAEMON="drillbit" +DESC="Drillbit" +EXEC_PATH="/opt/drill/bin/drillbit.sh" +SVC_USER="" +DAEMON_FLAGS="" +CONF_DIR="/etc/drill/conf" +PIDFILE="/opt/drill/drillbit.pid" +LOCKDIR="/var/lock/subsys" +LOCKFILE="$LOCKDIR/drillbit" +WORKING_DIR="~/" + +install -d -m 0755 -o -g /var/run/drillbit 1>/dev/null 2>&1 || : +[ -d "$LOCKDIR" ] || install -d -m 0755 $LOCKDIR 1>/dev/null 2>&1 || : + +start() { + [ -x $EXEC_PATH ] || exit $ERROR_PROGRAM_NOT_INSTALLED + [ -d $CONF_DIR ] || exit $ERROR_PROGRAM_NOT_CONFIGURED + log_success_msg "Starting ${DESC}: " + + su -s /bin/bash $SVC_USER -c "cd $WORKING_DIR && $EXEC_PATH --config '$CONF_DIR' start $DAEMON_FLAGS" + + # Some processes are slow to start + sleep $SLEEP_TIME + checkstatusofproc + RETVAL=$? + + [ $RETVAL -eq $RETVAL_SUCCESS ] && touch $LOCKFILE + return $RETVAL +} + + +stop() { + log_success_msg "Stopping ${DESC}: " + start_daemon $EXEC_PATH --config "$CONF_DIR" stop $DAEMON_FLAGS + RETVAL=$? + + [ $RETVAL -eq $RETVAL_SUCCESS ] && rm -f $LOCKFILE $PIDFILE +} + +restart() { + stop + start +} + +checkstatusofproc(){ + pidofproc -p $PIDFILE $PROC_NAME > /dev/null +} + +checkstatus(){ + checkstatusofproc + status=$? + + case "$status" in + $STATUS_RUNNING) + log_success_msg "${DESC} is running" + ;; + $STATUS_DEAD) + log_failure_msg "${DESC} is dead and pid file exists" + ;; + $STATUS_DEAD_AND_LOCK) + log_failure_msg "${DESC} is dead and lock file exists" + ;; + $STATUS_NOT_RUNNING) + log_failure_msg "${DESC} is not running" + ;; + *) + log_failure_msg "${DESC} status is unknown" + ;; + esac + return $status +} + +condrestart(){ + [ -e $LOCKFILE ] && restart || : +} + +check_for_root() { + if [ $(id -ur) -ne 0 ]; then + echo 'Error: root user required' + echo + exit 1 + fi +} + +service() { + case "$1" in + start) + check_for_root + start + ;; + stop) + check_for_root + stop + ;; + status) + checkstatus + RETVAL=$? + ;; + restart) + check_for_root + restart + ;; + condrestart|try-restart) + check_for_root + condrestart + ;; + *) + echo $"Usage: $0 {start|stop|status|restart|try-restart|condrestart}" + exit 1 + esac +} + +service "$1" + +exit $RETVAL http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/drillbit.sh ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/drillbit.sh b/sandbox/prototype/distribution/src/resources/drillbit.sh new file mode 100755 index 0000000..f5293a6 --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/drillbit.sh @@ -0,0 +1,230 @@ +#!/usr/bin/env bash +# +#/** +# * Copyright 2013 The Apache Software Foundation +# * +# * Licensed to the Apache Software Foundation (ASF) under one +# * or more contributor license agreements. See the NOTICE file +# * distributed with this work for additional information +# * regarding copyright ownership. The ASF licenses this file +# * to you under the Apache License, Version 2.0 (the +# * "License"); you may not use this file except in compliance +# * with the License. You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +# +# Environment Variables +# +# DRILL_CONF_DIR Alternate drill conf dir. Default is ${DRILL_HOME}/conf. +# DRILL_LOG_DIR Where log files are stored. PWD by default. +# DRILL_PID_DIR The pid files are stored. /tmp by default. +# DRILL_IDENT_STRING A string representing this instance of drillbit. $USER by default +# DRILL_NICENESS The scheduling priority for daemons. Defaults to 0. +# DRILL_STOP_TIMEOUT Time, in seconds, after which we kill -9 the server if it has not stopped. +# Default 1200 seconds. +# +# Modelled after $HADOOP_HOME/bin/hadoop-daemon.sh + +usage="Usage: drillbit.sh [--config <conf-dir>]\ + (start|stop|restart|autorestart)" + +# if no args specified, show usage +if [ $# -lt 1 ]; then + echo $usage + exit 1 +fi + +bin=`dirname "${BASH_SOURCE-$0}"` +bin=`cd "$bin">/dev/null; pwd` + +. "$bin"/drill-config.sh + +# get arguments +startStop=$1 +shift + +command=drillbit +shift + +waitForProcessEnd() { + pidKilled=$1 + commandName=$2 + processedAt=`date +%s` + while kill -0 $pidKilled > /dev/null 2>&1; + do + echo -n "." + sleep 1; + # if process persists more than $DRILL_STOP_TIMEOUT (default 1200 sec) no mercy + if [ $(( `date +%s` - $processedAt )) -gt ${DRILL_STOP_TIMEOUT:-1200} ]; then + break; + fi + done + # process still there : kill -9 + if kill -0 $pidKilled > /dev/null 2>&1; then + echo -n force stopping $commandName with kill -9 $pidKilled + $JAVA_HOME/bin/jstack -l $pidKilled > "$logout" 2>&1 + kill -9 $pidKilled > /dev/null 2>&1 + fi + # Add a CR after we're done w/ dots. + echo +} + +drill_rotate_log () +{ + log=$1; + num=5; + if [ -n "$2" ]; then + num=$2 + fi + if [ -f "$log" ]; then # rotate logs + while [ $num -gt 1 ]; do + prev=`expr $num - 1` + [ -f "$log.$prev" ] && mv -f "$log.$prev" "$log.$num" + num=$prev + done + mv -f "$log" "$log.$num"; + fi +} + +check_before_start(){ + #ckeck if the process is not running + mkdir -p "$DRILL_PID_DIR" + if [ -f $pid ]; then + if kill -0 `cat $pid` > /dev/null 2>&1; then + echo $command running as process `cat $pid`. Stop it first. + exit 1 + fi + fi +} + +wait_until_done () +{ + p=$1 + cnt=${DRILLBIT_TIMEOUT:-300} + origcnt=$cnt + while kill -0 $p > /dev/null 2>&1; do + if [ $cnt -gt 1 ]; then + cnt=`expr $cnt - 1` + sleep 1 + else + echo "Process did not complete after $origcnt seconds, killing." + kill -9 $p + exit 1 + fi + done + return 0 +} + +# get log directory +if [ "$DRILL_LOG_DIR" = "" ]; then + export DRILL_LOG_DIR=/var/log/drill +fi +mkdir -p "$DRILL_LOG_DIR" + +if [ "$DRILL_PID_DIR" = "" ]; then + DRILL_PID_DIR=$DRILL_HOME +fi + +# Some variables +# Work out java location so can print version into log. +if [ "$JAVA_HOME" != "" ]; then + #echo "run java in $JAVA_HOME" + JAVA_HOME=$JAVA_HOME +fi +if [ "$JAVA_HOME" = "" ]; then + echo "Error: JAVA_HOME is not set." + exit 1 +fi + +JAVA=$JAVA_HOME/bin/java +export DRILL_LOG_PREFIX=drillbit +export DRILL_LOGFILE=$DRILL_LOG_PREFIX.log +export DRILL_OUTFILE=$DRILL_LOG_PREFIX.out +loggc=$DRILL_LOG_DIR/$DRILL_LOG_PREFIX.gc +loglog="${DRILL_LOG_DIR}/${DRILL_LOGFILE}" +logout="${DRILL_LOG_DIR}/${DRILL_OUTFILE}" +pid=$DRILL_PID_DIR/drillbit.pid + +DRILL_JAVA_OPTS="$DRILL_JAVA_OPTS -Dlog.path=$loglog" + +if [ -n "$SERVER_GC_OPTS" ]; then + export SERVER_GC_OPTS=${SERVER_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"} +fi +if [ -n "$CLIENT_GC_OPTS" ]; then + export CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"} +fi + +# Set default scheduling priority +if [ "$DRILL_NICENESS" = "" ]; then + export DRILL_NICENESS=0 +fi + +thiscmd=$0 +args=$@ + +case $startStop in + +(start) + check_before_start + echo starting $command, logging to $logout + nohup $thiscmd internal_start $command $args < /dev/null >> ${logout} 2>&1 & + sleep 1; + ;; + +(internal_start) + drill_rotate_log $loggc + # Add to the command log file vital stats on our environment. + echo "`date` Starting $command on `hostname`" >> $loglog + echo "`ulimit -a`" >> $loglog 2>&1 + nice -n $DRILL_NICENESS "$DRILL_HOME"/bin/runbit \ + $command "$@" start >> "$logout" 2>&1 & + echo $! > $pid + wait + ;; + +(stop) + rm -f "$DRILL_START_FILE" + if [ -f $pid ]; then + pidToKill=`cat $pid` + # kill -0 == see if the PID exists + if kill -0 $pidToKill > /dev/null 2>&1; then + echo stopping $command + echo "`date` Terminating $command" pid $pidToKill>> $loglog + kill $pidToKill > /dev/null 2>&1 + waitForProcessEnd $pidToKill $command + rm $pid + else + retval=$? + echo no $command to stop because kill -0 of pid $pidToKill failed with status $retval + fi + else + echo no $command to stop because no pid file $pid + fi + ;; + +(restart) + # stop the command + $thiscmd --config "${DRILL_CONF_DIR}" stop $command $args & + wait_until_done $! + # wait a user-specified sleep period + sp=${DRILL_RESTART_SLEEP:-3} + if [ $sp -gt 0 ]; then + sleep $sp + fi + # start the command + $thiscmd --config "${DRILL_CONF_DIR}" start $command $args & + wait_until_done $! + ;; + +(*) + echo $usage + exit 1 + ;; +esac http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/logback.xml ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/logback.xml b/sandbox/prototype/distribution/src/resources/logback.xml new file mode 100644 index 0000000..8f0d410 --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/logback.xml @@ -0,0 +1,36 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<configuration> + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + </pattern> + </encoder> + </appender> + + <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}</file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${log.path}.%i</fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>10</maxIndex> + </rollingPolicy> + + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>100MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="org.apache.drill" additivity="false"> + <level value="info" /> + <appender-ref ref="FILE" /> + </logger> + + <root> + <level value="error" /> + <appender-ref ref="STDOUT" /> + </root> + +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/runbit ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/runbit b/sandbox/prototype/distribution/src/resources/runbit new file mode 100755 index 0000000..4e1b599 --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/runbit @@ -0,0 +1,30 @@ +#!/bin/bash + + +if [ -z $JAVA_HOME ] +then + JAVA=`which java` +else + JAVA=$JAVA_HOME/bin/java +fi + +if [ -e $JAVA ]; then + echo "" +else + echo "Java not found." + exit 1 +fi + +$JAVA -version 2>&1 | grep "version" | egrep -e "1.7" > /dev/null +if [ $? -ne 0 ]; then + echo "Java 1.7 is required to run Apache Drill." + exit 1 +fi + + +CP=$DRILL_HOME/jars/*:$CP +CP=$DRILL_HOME/lib/*:$CP + +CP=$CP:$DRILL_CONF_DIR + +exec $JAVA $DRILL_JAVA_OPTS -cp $CP org.apache.drill.exec.server.Drillbit http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/distribution/src/resources/sqlline ---------------------------------------------------------------------- diff --git a/sandbox/prototype/distribution/src/resources/sqlline b/sandbox/prototype/distribution/src/resources/sqlline new file mode 100755 index 0000000..973da49 --- /dev/null +++ b/sandbox/prototype/distribution/src/resources/sqlline @@ -0,0 +1,30 @@ +#!/bin/bash + + +if [ -z $JAVA_HOME ] +then + JAVA=`which java` +else + JAVA=$JAVA_HOME/bin/java +fi + +if [ -e $JAVA ]; then + echo "" +else + echo "Java not found." + exit 1 +fi + +$JAVA -version 2>&1 | grep "version" | egrep -e "1.7" > /dev/null +if [ $? -ne 0 ]; then + echo "Java 1.7 is required to run Apache Drill." + exit 1 +fi + + +CP=$DRILL_HOME/jars/*:$CP +CP=$DRILL_HOME/lib/*:$CP + +CP=$CP:$DRILL_CONF_DIR + +exec $DRILL_JAVA_OPTS -cp $CP sqlline.SqlLine "$@" http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/exec/java-exec/src/main/resources/drill-module.conf ---------------------------------------------------------------------- diff --git a/sandbox/prototype/exec/java-exec/src/main/resources/drill-module.conf b/sandbox/prototype/exec/java-exec/src/main/resources/drill-module.conf index a590420..d9e1ef5 100644 --- a/sandbox/prototype/exec/java-exec/src/main/resources/drill-module.conf +++ b/sandbox/prototype/exec/java-exec/src/main/resources/drill-module.conf @@ -16,7 +16,7 @@ drill.exec: { }, zk: { - connect: "10.10.30.52:5181", + connect: "localhost:2181", root: "/drill", refresh: 500, timeout: 5000, http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/exec/java-exec/src/main/resources/logback.xml ---------------------------------------------------------------------- diff --git a/sandbox/prototype/exec/java-exec/src/main/resources/logback.xml b/sandbox/prototype/exec/java-exec/src/main/resources/logback.xml new file mode 100644 index 0000000..feb75b3 --- /dev/null +++ b/sandbox/prototype/exec/java-exec/src/main/resources/logback.xml @@ -0,0 +1,49 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<configuration> + <appender name="SOCKET" + class="de.huxhorn.lilith.logback.appender.ClassicMultiplexSocketAppender"> + <Compressing>true</Compressing> + <ReconnectionDelay>10000</ReconnectionDelay> + <IncludeCallerData>true</IncludeCallerData> + <RemoteHosts>localhost</RemoteHosts> + </appender> + + <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender"> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n + </pattern> + </encoder> + </appender> + + <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender"> + <file>${log.path}</file> + <rollingPolicy class="ch.qos.logback.core.rolling.FixedWindowRollingPolicy"> + <fileNamePattern>${log.path}.%i</fileNamePattern> + <minIndex>1</minIndex> + <maxIndex>10</maxIndex> + </rollingPolicy> + + <triggeringPolicy class="ch.qos.logback.core.rolling.SizeBasedTriggeringPolicy"> + <maxFileSize>100MB</maxFileSize> + </triggeringPolicy> + <encoder> + <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern> + </encoder> + </appender> + + <logger name="org.apache.drill" additivity="false"> + <level value="info" /> + <appender-ref ref="FILE" /> + </logger> + + <logger name="org.apache.drill" additivity="false"> + <level value="debug" /> + <appender-ref ref="SOCKET" /> + </logger> + + <root> + <level value="error" /> + <appender-ref ref="STDOUT" /> + </root> + +</configuration> http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/exec/java-exec/src/main/sh/drill-config.sh ---------------------------------------------------------------------- diff --git a/sandbox/prototype/exec/java-exec/src/main/sh/drill-config.sh b/sandbox/prototype/exec/java-exec/src/main/sh/drill-config.sh new file mode 100644 index 0000000..20102fc --- /dev/null +++ b/sandbox/prototype/exec/java-exec/src/main/sh/drill-config.sh @@ -0,0 +1,96 @@ +# +#/** +# * Copyright 2013 The Apache Software Foundation +# * +# * Licensed to the Apache Software Foundation (ASF) under one +# * or more contributor license agreements. See the NOTICE file +# * distributed with this work for additional information +# * regarding copyright ownership. The ASF licenses this file +# * to you under the Apache License, Version 2.0 (the +# * "License"); you may not use this file except in compliance +# * with the License. You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ + +# included in all the drill scripts with source command +# should not be executable directly +# also should not be passed any arguments, since we need original $* +# Modelled after $HADOOP_HOME/bin/hadoop-env.sh. + +# resolve links - "${BASH_SOURCE-$0}" may be a softlink + +this="${BASH_SOURCE-$0}" +while [ -h "$this" ]; do + ls=`ls -ld "$this"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '.*/.*' > /dev/null; then + this="$link" + else + this=`dirname "$this"`/"$link" + fi +done + +# convert relative path to absolute path +bin=`dirname "$this"` +script=`basename "$this"` +bin=`cd "$bin">/dev/null; pwd` +this="$bin/$script" + +# the root of the drill installation +if [ -z "$DRILL_HOME" ]; then + export DRILL_HOME=`dirname "$this"`/.. +fi + +#check to see if the conf dir or drill home are given as an optional arguments +while [ $# -gt 1 ] +do + if [ "--config" = "$1" ] + then + shift + confdir=$1 + shift + DRILL_CONF_DIR=$confdir + else + # Presume we are at end of options and break + break + fi +done + +# Allow alternate drill conf dir location. +export DRILL_CONF_DIR="${DRILL_CONF_DIR:-/etc/drill/conf}" + +. "${DRILL_CONF_DIR}/drill-env.sh" + +# Newer versions of glibc use an arena memory allocator that causes virtual +# memory usage to explode. Tune the variable down to prevent vmem explosion. +export MALLOC_ARENA_MAX=${MALLOC_ARENA_MAX:-4} + +if [ -z "$JAVA_HOME" ]; then + if [ -e `which java` ]; then + SOURCE=`which java` + while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink + DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" + SOURCE="$(readlink "$SOURCE")" + [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located + done + JAVA_HOME="$( cd -P "$( dirname "$SOURCE" )" && cd .. && pwd )" + fi + # if we didn't set it + if [ -z "$JAVA_HOME" ]; then + cat 1>&2 <<EOF ++======================================================================+ +| Error: JAVA_HOME is not set and Java could not be found | ++----------------------------------------------------------------------+ +| Drill requires Java 1.7 or later. | ++======================================================================+ +EOF + exit 1 + fi +fi http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/exec/java-exec/src/main/sh/drillbit.sh ---------------------------------------------------------------------- diff --git a/sandbox/prototype/exec/java-exec/src/main/sh/drillbit.sh b/sandbox/prototype/exec/java-exec/src/main/sh/drillbit.sh new file mode 100755 index 0000000..f5293a6 --- /dev/null +++ b/sandbox/prototype/exec/java-exec/src/main/sh/drillbit.sh @@ -0,0 +1,230 @@ +#!/usr/bin/env bash +# +#/** +# * Copyright 2013 The Apache Software Foundation +# * +# * Licensed to the Apache Software Foundation (ASF) under one +# * or more contributor license agreements. See the NOTICE file +# * distributed with this work for additional information +# * regarding copyright ownership. The ASF licenses this file +# * to you under the Apache License, Version 2.0 (the +# * "License"); you may not use this file except in compliance +# * with the License. You may obtain a copy of the License at +# * +# * http://www.apache.org/licenses/LICENSE-2.0 +# * +# * Unless required by applicable law or agreed to in writing, software +# * distributed under the License is distributed on an "AS IS" BASIS, +# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# * See the License for the specific language governing permissions and +# * limitations under the License. +# */ +# +# Environment Variables +# +# DRILL_CONF_DIR Alternate drill conf dir. Default is ${DRILL_HOME}/conf. +# DRILL_LOG_DIR Where log files are stored. PWD by default. +# DRILL_PID_DIR The pid files are stored. /tmp by default. +# DRILL_IDENT_STRING A string representing this instance of drillbit. $USER by default +# DRILL_NICENESS The scheduling priority for daemons. Defaults to 0. +# DRILL_STOP_TIMEOUT Time, in seconds, after which we kill -9 the server if it has not stopped. +# Default 1200 seconds. +# +# Modelled after $HADOOP_HOME/bin/hadoop-daemon.sh + +usage="Usage: drillbit.sh [--config <conf-dir>]\ + (start|stop|restart|autorestart)" + +# if no args specified, show usage +if [ $# -lt 1 ]; then + echo $usage + exit 1 +fi + +bin=`dirname "${BASH_SOURCE-$0}"` +bin=`cd "$bin">/dev/null; pwd` + +. "$bin"/drill-config.sh + +# get arguments +startStop=$1 +shift + +command=drillbit +shift + +waitForProcessEnd() { + pidKilled=$1 + commandName=$2 + processedAt=`date +%s` + while kill -0 $pidKilled > /dev/null 2>&1; + do + echo -n "." + sleep 1; + # if process persists more than $DRILL_STOP_TIMEOUT (default 1200 sec) no mercy + if [ $(( `date +%s` - $processedAt )) -gt ${DRILL_STOP_TIMEOUT:-1200} ]; then + break; + fi + done + # process still there : kill -9 + if kill -0 $pidKilled > /dev/null 2>&1; then + echo -n force stopping $commandName with kill -9 $pidKilled + $JAVA_HOME/bin/jstack -l $pidKilled > "$logout" 2>&1 + kill -9 $pidKilled > /dev/null 2>&1 + fi + # Add a CR after we're done w/ dots. + echo +} + +drill_rotate_log () +{ + log=$1; + num=5; + if [ -n "$2" ]; then + num=$2 + fi + if [ -f "$log" ]; then # rotate logs + while [ $num -gt 1 ]; do + prev=`expr $num - 1` + [ -f "$log.$prev" ] && mv -f "$log.$prev" "$log.$num" + num=$prev + done + mv -f "$log" "$log.$num"; + fi +} + +check_before_start(){ + #ckeck if the process is not running + mkdir -p "$DRILL_PID_DIR" + if [ -f $pid ]; then + if kill -0 `cat $pid` > /dev/null 2>&1; then + echo $command running as process `cat $pid`. Stop it first. + exit 1 + fi + fi +} + +wait_until_done () +{ + p=$1 + cnt=${DRILLBIT_TIMEOUT:-300} + origcnt=$cnt + while kill -0 $p > /dev/null 2>&1; do + if [ $cnt -gt 1 ]; then + cnt=`expr $cnt - 1` + sleep 1 + else + echo "Process did not complete after $origcnt seconds, killing." + kill -9 $p + exit 1 + fi + done + return 0 +} + +# get log directory +if [ "$DRILL_LOG_DIR" = "" ]; then + export DRILL_LOG_DIR=/var/log/drill +fi +mkdir -p "$DRILL_LOG_DIR" + +if [ "$DRILL_PID_DIR" = "" ]; then + DRILL_PID_DIR=$DRILL_HOME +fi + +# Some variables +# Work out java location so can print version into log. +if [ "$JAVA_HOME" != "" ]; then + #echo "run java in $JAVA_HOME" + JAVA_HOME=$JAVA_HOME +fi +if [ "$JAVA_HOME" = "" ]; then + echo "Error: JAVA_HOME is not set." + exit 1 +fi + +JAVA=$JAVA_HOME/bin/java +export DRILL_LOG_PREFIX=drillbit +export DRILL_LOGFILE=$DRILL_LOG_PREFIX.log +export DRILL_OUTFILE=$DRILL_LOG_PREFIX.out +loggc=$DRILL_LOG_DIR/$DRILL_LOG_PREFIX.gc +loglog="${DRILL_LOG_DIR}/${DRILL_LOGFILE}" +logout="${DRILL_LOG_DIR}/${DRILL_OUTFILE}" +pid=$DRILL_PID_DIR/drillbit.pid + +DRILL_JAVA_OPTS="$DRILL_JAVA_OPTS -Dlog.path=$loglog" + +if [ -n "$SERVER_GC_OPTS" ]; then + export SERVER_GC_OPTS=${SERVER_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"} +fi +if [ -n "$CLIENT_GC_OPTS" ]; then + export CLIENT_GC_OPTS=${CLIENT_GC_OPTS/"-Xloggc:<FILE-PATH>"/"-Xloggc:${loggc}"} +fi + +# Set default scheduling priority +if [ "$DRILL_NICENESS" = "" ]; then + export DRILL_NICENESS=0 +fi + +thiscmd=$0 +args=$@ + +case $startStop in + +(start) + check_before_start + echo starting $command, logging to $logout + nohup $thiscmd internal_start $command $args < /dev/null >> ${logout} 2>&1 & + sleep 1; + ;; + +(internal_start) + drill_rotate_log $loggc + # Add to the command log file vital stats on our environment. + echo "`date` Starting $command on `hostname`" >> $loglog + echo "`ulimit -a`" >> $loglog 2>&1 + nice -n $DRILL_NICENESS "$DRILL_HOME"/bin/runbit \ + $command "$@" start >> "$logout" 2>&1 & + echo $! > $pid + wait + ;; + +(stop) + rm -f "$DRILL_START_FILE" + if [ -f $pid ]; then + pidToKill=`cat $pid` + # kill -0 == see if the PID exists + if kill -0 $pidToKill > /dev/null 2>&1; then + echo stopping $command + echo "`date` Terminating $command" pid $pidToKill>> $loglog + kill $pidToKill > /dev/null 2>&1 + waitForProcessEnd $pidToKill $command + rm $pid + else + retval=$? + echo no $command to stop because kill -0 of pid $pidToKill failed with status $retval + fi + else + echo no $command to stop because no pid file $pid + fi + ;; + +(restart) + # stop the command + $thiscmd --config "${DRILL_CONF_DIR}" stop $command $args & + wait_until_done $! + # wait a user-specified sleep period + sp=${DRILL_RESTART_SLEEP:-3} + if [ $sp -gt 0 ]; then + sleep $sp + fi + # start the command + $thiscmd --config "${DRILL_CONF_DIR}" start $command $args & + wait_until_done $! + ;; + +(*) + echo $usage + exit 1 + ;; +esac http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/exec/java-exec/src/main/sh/runbit ---------------------------------------------------------------------- diff --git a/sandbox/prototype/exec/java-exec/src/main/sh/runbit b/sandbox/prototype/exec/java-exec/src/main/sh/runbit new file mode 100755 index 0000000..4e1b599 --- /dev/null +++ b/sandbox/prototype/exec/java-exec/src/main/sh/runbit @@ -0,0 +1,30 @@ +#!/bin/bash + + +if [ -z $JAVA_HOME ] +then + JAVA=`which java` +else + JAVA=$JAVA_HOME/bin/java +fi + +if [ -e $JAVA ]; then + echo "" +else + echo "Java not found." + exit 1 +fi + +$JAVA -version 2>&1 | grep "version" | egrep -e "1.7" > /dev/null +if [ $? -ne 0 ]; then + echo "Java 1.7 is required to run Apache Drill." + exit 1 +fi + + +CP=$DRILL_HOME/jars/*:$CP +CP=$DRILL_HOME/lib/*:$CP + +CP=$CP:$DRILL_CONF_DIR + +exec $JAVA $DRILL_JAVA_OPTS -cp $CP org.apache.drill.exec.server.Drillbit http://git-wip-us.apache.org/repos/asf/incubator-drill/blob/2bcf0547/sandbox/prototype/pom.xml ---------------------------------------------------------------------- diff --git a/sandbox/prototype/pom.xml b/sandbox/prototype/pom.xml index 76bdf24..dcc49a5 100644 --- a/sandbox/prototype/pom.xml +++ b/sandbox/prototype/pom.xml @@ -215,6 +215,15 @@ </lifecycleMappingMetadata> </configuration> </plugin> + <plugin> + <artifactId>maven-assembly-plugin</artifactId> + <version>2.4</version> + <configuration> + <descriptors> + <descriptor>src/assemble/bin.xml</descriptor> + </descriptors> + </configuration> + </plugin> </plugins> </pluginManagement> </build> @@ -292,5 +301,6 @@ <module>exec</module> <module>planner</module> <module>sqlparser</module> + <module>distribution</module> </modules> </project>
