#!/bin/bash
#
# $Id: columnstore 3704 2013-08-07 03:33:20Z bwilkinson $
#
# columnstore        Starts MariaDB Columnstore database platform
#
#
# chkconfig: 2345 99 99
# description: MariaDB Columnstore is a database platform that utilizes Mysql
#
### BEGIN INIT INFO
# Provides:          columnstore
# Required-Start:    $local_fs $remote_fs $network $syslog $all
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop MariaDB Columnstore DW DBMS
### END INIT INFO

prefix=/usr/local

USER=`whoami 2>/dev/null`

if [ $USER != "root" ]; then
	prefix=$HOME
fi

if [ $USER != "root" ]; then
	if [ -f $prefix/.bash_profile ]; then		
		profileFile=$prefix/.bash_profile
	elif [ -f $prefix/.profile ]; then		
		profileFile=$prefix/.profile
	else
		profileFile=$prefix/.bashrc
	fi
		
	. $profileFile
fi

# Source function library.
if [ -f /etc/init.d/functions ]; then
	. /etc/init.d/functions
fi

if [ -z "$COLUMNSTORE_INSTALL_DIR" ]; then
	COLUMNSTORE_INSTALL_DIR=/usr/local/mariadb/columnstore
fi

export COLUMNSTORE_INSTALL_DIR=$COLUMNSTORE_INSTALL_DIR

InstallDir=$COLUMNSTORE_INSTALL_DIR

if [ $InstallDir != "/usr/local/mariadb/columnstore" ]; then
	export PATH=$InstallDir/bin:$InstallDir/mysql/bin:/bin:/usr/bin
	export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$InstallDir/lib:$InstallDir/mysql/lib
fi

#hadoop
plugin=`$InstallDir/bin/getConfig SystemConfig DataFilePlugin`
if [ -n "$plugin" ]; then
	setenv=`$InstallDir/bin/getConfig SystemConfig DataFileEnvFile`
	. $InstallDir/bin/$setenv >/dev/null 2>&1
fi

test -f $InstallDir/post/functions && . $InstallDir/post/functions

mt=`module_type`
mid=`module_id`

has_um=`$InstallDir/bin/getConfig SystemModuleConfig ModuleCount2`
if [ "x$has_um" = x ]; then
	has_um=0
fi

lockdir=`$InstallDir/bin/getConfig Installation LockFileDirectory`

#get temp directory
tmpDir=`$InstallDir/bin/getConfig SystemConfig SystemTempFileDir`
mkdir $tmpDir >/dev/null 2>&1

checkInstallSetup() {
	InitialInstallFlag=`$InstallDir/bin/getConfig -c $InstallDir/etc/Columnstore.xml Installation InitialInstallFlag`
	if [ $InitialInstallFlag != "y" ]; then
		echo "Please run the postConfigure install script, check the Installation Guide"
		echo "for additional details"
		rm -f $lockdir/columnstore
		exit 1
	fi
}

[ -f $InstallDir/bin/ProcMon ] || exit 0

start() {
	if [ -f $lockdir/columnstore ]; then
		echo "MariaDB Columnstore Database Platform already running"
		exit 0
	fi

	(mkdir -p $lockdir && touch $lockdir/columnstore) >/dev/null 2>&1

	if [ -x $InstallDir/bin/columnstore.pre-start ]; then
		$InstallDir/bin/columnstore.pre-start
		if [ $? -ne 0 ]; then
			echo "Error running MariaDB Columnstore pre-start script, not starting MariaDB Columnstore"
			rm -f $lockdir/columnstore
			exit 1
		fi
	fi
	#checkInstallSetup

	CoreFileFlag=`$InstallDir/bin/getConfig -c $InstallDir/etc/Columnstore.xml Installation CoreFileFlag`
	if [ $CoreFileFlag = "y" ]; then
    #columnstore core files
		ulimit -c unlimited  > /dev/null 2>&1
		sysctl -q -w kernel.core_uses_pid=1  > /dev/null 2>&1
		sysctl -q -w kernel.core_pattern=/var/log/mariadb/columnstore/corefiles/core.%e.%p  > /dev/null 2>&1

	fi

	RETVAL=0
	echo "Starting MariaDB Columnstore Database Platform"
	rm -f ${tmpDir}/StopColumnstore
	exec $InstallDir/bin/run.sh -l ${tmpDir} $InstallDir/bin/ProcMon  > /dev/null 2>&1 &

	return $RETVAL
}	
stop() {
	echo "Shutting down MariaDB Columnstore Database Platform"
	touch ${tmpDir}/StopColumnstore
	pkill ProcMon
	pkill ProcMgr
	$InstallDir/bin/clearShm
	RETVAL=$?
	rm -f $lockdir/columnstore
	fuser -k 8604/tcp > /dev/null 2>&1
	test -f $InstallDir/mysql/mysql-Columnstore || return $RETVAL
	$InstallDir/mysql/mysql-Columnstore stop > /dev/null 2>&1
	if [ -x $InstallDir/bin/columnstore.post-stop ]; then
		$InstallDir/bin/columnstore.post-stop
	fi
	return $RETVAL
}
restart() {
	stop
	start
}
status() {
	isrunning=0
	if [ $EUID -eq 0 ]; then
		if [ -f $lockdir/columnstore ]; then
			isrunning=1
		fi
	else
		pgrep ProcMon >/dev/null 2>&1
		if [ $? -eq 0 ]; then
			isrunning=1
		fi
	fi
	if [ $isrunning -ne 0 ]; then
		echo "MariaDB Columnstore is running"
	else
		echo "MariaDB Columnstore is not running"
		exit 3
	fi
}

case "$1" in
start)
	start
	;;
stop)
	stop
	;;
restart)
	restart
	;;
condrestart)
	[ -f $lockdir/columnstore ] && restart || :
	;;
status)
	status
	;;
*)
	echo $"Usage: $0 {start|stop|restart|condrestart|status}"
	exit 1
esac

exit $?

