diff --git a/oam/install_scripts/CMakeLists.txt b/oam/install_scripts/CMakeLists.txt index 80ca95be9..0f125070d 100644 --- a/oam/install_scripts/CMakeLists.txt +++ b/oam/install_scripts/CMakeLists.txt @@ -31,6 +31,7 @@ install(PROGRAMS columnstore-post-install mcs-savebrm.py mariadb-columnstore-start.sh mariadb-columnstore-stop.sh + loop_process_starter.sh DESTINATION ${ENGINE_BINDIR} COMPONENT columnstore-engine) install(FILES mariadb-columnstore.service diff --git a/oam/install_scripts/loop_process_starter.sh b/oam/install_scripts/loop_process_starter.sh new file mode 100644 index 000000000..edc7a2d07 --- /dev/null +++ b/oam/install_scripts/loop_process_starter.sh @@ -0,0 +1,21 @@ +#!/bin/bash + +# Top level script for automatically restart failed columnstore processes. +# Use it to start any columnstore process. +# Eg: +# loop_process_starter.sh workernode DBRM_Worker2 +# loop_process_starter.sh PrimProc + +PROGNAME="$0" +USAGE="Usage: ${PROGNAME} [binary_name:required] [binary_startup_args|optional] [log_filename|optional]" +BINARY_NAME="${1:?No binary name given. ${USAGE}}" +ARG=${2:-""} +LOWER_BINARY_NAME="$(echo ${BINARY_NAME} | tr [:upper:] [:lower:])" +LOG_FILENAME="${3:-${LOWER_BINARY_NAME}}.log" + +while true; do + echo $BINARY_NAME $ARG $LOG_FILENAME + ${BINARY_NAME} ${ARG} &>> ${LOG_FILENAME} + echo "$(date): ${BINARY_NAME} failed, restarting." >> ${LOG_FILENAME} + sleep 1 +done