You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by rl...@apache.org on 2015/10/12 11:19:52 UTC
[3/4] incubator-hawq git commit: HAWQ-39. Remove below unused mgmt
scritps for hawq2.0:
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/8ec87e6a/tools/bin/gpinitsystem
----------------------------------------------------------------------
diff --git a/tools/bin/gpinitsystem b/tools/bin/gpinitsystem
deleted file mode 100755
index a990c60..0000000
--- a/tools/bin/gpinitsystem
+++ /dev/null
@@ -1,2403 +0,0 @@
-#!/bin/bash
-# Filename:- gpinitsystem
-# Status:- Released
-# Author:- L Lonergan/G Coombe
-# Contact:- gcoombe@greenplum.com
-# Release date:- March 2006
-# Release stat:- Released
-# Copyright (c) Metapa 2005. All Rights Reserved.
-# Copyright Greenplum database cluster
-#******************************************************************************
-# Update History
-#******************************************************************************
-# Date Who Update
-# 12/05/2006 G Coombe Added a parallel create segment option
-# 4/26/2007 cmcdevitt renamed from gpcreatecluster.sh
-#
-#******************************************************************************
-# Detailed Description
-#******************************************************************************
-#******************************************************************************
-# Prep Code
-
-WORKDIR=`dirname $0`
-
-# Source required functions file, this required for script to run
-# exit if cannot locate this file. Change location of FUNCTIONS variable
-# as required.
-FUNCTIONS=$WORKDIR/lib/gp_bash_functions.sh
-if [ -f $FUNCTIONS ]; then
- . $FUNCTIONS
-else
- echo "[FATAL]:-Cannot source $FUNCTIONS file Script Exits!"
- exit 2
-fi
-
-#******************************************************************************
-# Script Specific Variables
-#******************************************************************************
-# Log file that will record script actions
-CUR_DATE=`$DATE +%Y%m%d`
-FILE_TIME=`$DATE +%H%M%S`
-PROG_NAME=`$BASENAME $0`
-HELP_DOC_NAME=`$ECHO $PROG_NAME|$AWK -F'.' '{print $1}'`_help
-BACKOUT_FILE=$DEFLOGDIR/backout_gpinitsystem_${USER_NAME}_${CUR_DATE}_$FILE_TIME
-# Level of script feedback 0=small 1=verbose
-VERBOSE=1
-INTERACTIVE=1
-MIRRORING=0
-INST_COUNT=0
-# Greenplum database specific parameters
-GP_USER=$USER_NAME
-# System table names
-GP_TBL=gp_id
-GP_CONFIG_TBL=gp_segment_configuration
-PG_SYSTEM_FILESPACE=3052
-GP_FAILOVER_CONFIG_TBL=gp_fault_strategy
-GP_FILESPACE_NAME=dfs_system
-GP_TABLESPACE_NAME=dfs_default
-unset PG_CONF_ADD_FILE
-#unset QD_PRIMARY_ARRAY QE_PRIMARY_ARRAY QE_MIRROR_ARRAY
-EXIT_STATUS=0
-# ED_PG_CONF search text values
-PORT_TXT="#port"
-LOG_STATEMENT_TXT="#log_statement ="
-LISTEN_ADR_TXT="listen_addresses"
-CHKPOINT_SEG_TXT="checkpoint_segments"
-KERBEROS_KEYFILE_TXT="krb_server_keyfile"
-ENABLE_SECURE_FILESYSTEM_TXT="enable_secure_filesystem"
-INIT_STANDBY_PROG=$GPINITSTANDBY
-QE_MIRROR_ARRAY=""
-GP_PASSWD=gparray
-TMP_PG_HBA=/tmp/pg_hba_conf_master.$$
-TMP_FILE=/tmp/cluster_tmp_file.$$
-TMP_HOSTNAME_FILE=/tmp/hostname_test_file.$$
-PARALLEL_STATUS_FILE=/tmp/gpinitsystem_parallel_status_file.$$
-GPCREATESEG=$WORKDIR/lib/gpcreateseg.sh
-ULIMIT_WARN=0
-MIRROR_TYPE=0
-REMOTE_HOST_COUNT=0
-SINGLE_HOST_BATCH_LIMIT=4
-INPUT_CONFIG=""
-OUTPUT_CONFIG=""
-GPHOSTCACHELOOKUP=$WORKDIR/lib/gphostcachelookup.py
-
-#******************************************************************************
-# DCA Specific Variables
-#******************************************************************************
-DCA_VERSION_FILE="/etc/gpdb-appliance-version"
-
-DCA_RESQUEUE_PRIORITY_NAME="gp_resqueue_priority"
-DCA_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_NAME="gp_resqueue_priority_cpucores_per_segment"
-DCA_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_NAME="gp_resqueue_priority_sweeper_interval"
-
-DCA_MASTER_RESQUEUE_PRIORITY_VAL="on"
-DCA_MASTER_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL=24
-DCA_MASTER_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL=1000
-
-DCA_SEGMENT_RESQUEUE_PRIORITY_VAL="on"
-DCA_SEGMENT_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL=4
-DCA_SEGMENT_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL=1000
-
-#******************************************************************************
-# Functions
-#******************************************************************************
-USAGE () {
- if [ -f ${GPDOCDIR}/$HELP_DOC_NAME ] && [ x"" == x"$SCRIPT_USAGE" ];then
- $LESSCMD ${GPDOCDIR}/$HELP_DOC_NAME
- exit 0
- else
- $ECHO
- $ECHO " `basename $0` -c gp_config_file [OPTIONS]"
- $ECHO
- $ECHO " Creates a new HAWQ instance on a Master host and a number of"
- $ECHO " segment instance hosts."
- $ECHO
- $ECHO " General options:"
- $ECHO " -?, display this help message & exit"
- $ECHO " -v, display version information & exit"
- $ECHO
- $ECHO " Logging options:"
- $ECHO " -q, quiet mode, do not log progress to screen [default:- verbose output to screen]"
- $ECHO " -a, don't ask to confirm instance creation [default:- ask]"
- $ECHO " -l, logfile_directory [optional]"
- $ECHO " Alternative logfile directory"
- $ECHO " -D, set log output to debug level, shows all function calls"
- $ECHO
- $ECHO " Configuration options:"
- $ECHO " -c, gp_config_file [mandatory]"
- $ECHO " Supplies all Greenplum configuration information required by this utility."
- $ECHO " Full description of all parameters contained within the example file"
- $ECHO " supplied with this distribution."
- $ECHO " Also see gpinitsystem_INSTRUCTIONS file for greater detail on"
- $ECHO " the operation and configuration of this script"
- $ECHO " -h, gp_hostlist_file [optional]"
- $ECHO " Contains a list of all segment instance hostnames required to participate in"
- $ECHO " the new Greenplum instance. Normally set in gp_config_file."
- $ECHO " -p, postgresql_conf_gp_additions [optional]"
- $ECHO " List of additional PostgreSQL parameters to be applied to each Master/Segment"
- $ECHO " postgresql.conf file during Greenplum database initialization."
- $ECHO " -s, standby_hostname [optional]"
- $ECHO " -i, do not initialize standby sync process [default:- start process]"
- $ECHO " -m, maximum number of connections for master instance [default ${DEFAULT_QD_MAX_CONNECT}]"
- $ECHO " -b, shared_buffers per instance [default $DEFAULT_BUFFERS]"
- $ECHO " Specify either the number of database I/O buffers (without suffix) or the"
- $ECHO " amount of memory to use for buffers (with suffix 'kB', 'MB' or 'GB')."
- $ECHO " Applies to master and all segments."
- $ECHO " -e, <password>, password to set for Greenplum superuser in database [default $GP_PASSWD]"
- $ECHO " -n, <locale>, setting for locale to be set when database initialized [default $DEFAULT_LOCALE_SETTING]"
- $ECHO " -B, <number> run this batch of create segment processes in parallel [default $BATCH_DEFAULT]"
- $ECHO
- $ECHO " Return codes:"
- $ECHO " 0 - No problems encountered with requested operation"
- $ECHO " 1 - Warning generated, but instance operational"
- $ECHO " 2 - Fatal error, instance not created/started, or in an inconsistent state,"
- $ECHO " see log file for failure reason."
- $ECHO
- exit $EXIT_STATUS
- fi
-}
-
-# derive proper options for gpstart/gpstop based on VERBOSE and DEBUG_LEVEL.
-# sample use:
-# GPSTOP_OPTS=$(OUTPUT_LEVEL_OPTS)
-#
-OUTPUT_LEVEL_OPTS () {
- if [ $VERBOSE ]; then
- if [ $DEBUG_LEVEL -eq 1 ]; then
- echo ' -v '
- else
- echo ''
- fi
- else
- echo ' -q '
- fi
-}
-
-# Check whether two intervals ($1, $2), ($3, $4) overlap
-# Returns 0 if the intervals overlap, 1 otherwise
-CHK_OVERLAP() {
- if [[ $1 -ge $3 && $1 -le $4 ]]; then
- return 0;
- elif [[ $3 -ge $1 && $3 -le $2 ]]; then
- return 0;
- else
- return 1;
- fi
-}
-
-CHK_PARAMS () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking configuration parameters, please wait..." 1
- if [ $USER_NAME == "root" ]; then
- ERROR_EXIT "[FATAL]:-Unable to run this script as $USER" 2
- fi
- if [ x"" = x"$GPHOME" ]; then
- LOG_MSG "[FATAL]:-Environment variable \$GPHOME not set" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- fi
- # Check that we can see initdb
- if [ x"$INITDB" = x"" ] || [ ! -x $INITDB ];then
- ERROR_EXIT "[FATAL]:-Unable to locate initdb" 2
- fi
- # Make sure that script has been supplied a config file
- if [ x"" == x"$CLUSTER_CONFIG" ] && [ x"" == x"$INPUT_CONFIG" ] ; then
- ERROR_EXIT "[FATAL]:-Greenplum configuration filename [-c] option or [-I] option not provided." 2
- fi
-
- if [ x"" != x"$CLUSTER_CONFIG" ] ; then
- # Check that we have a non-zero configuration file
- CHK_FILE $CLUSTER_CONFIG
-
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Configuration file $CLUSTER_CONFIG does not exist." 2
- fi
-
- # Make sure old CLUSTER_CONFIG settings are not hanging around.
- unset PORT_BASE SEG_PREFIX DATA_DIRECTORY REPLICATION_PORT_BASE
-
- # Make sure it is not a dos file with CTRL M at end of each line
- $CAT $CLUSTER_CONFIG|$SED -e 's/^M$//g' > $TMP_FILE
- $MV $TMP_FILE $CLUSTER_CONFIG
- LOG_MSG "[INFO]:-Dumping $CLUSTER_CONFIG to logfile for reference"
- $CAT $CLUSTER_CONFIG|$GREP -v "^#" >> $LOG_FILE
- LOG_MSG "[INFO]:-Completed $CLUSTER_CONFIG dump to logfile"
- # Source the cluster configuration file
- LOG_MSG "[INFO]:-Reading Greenplum configuration file $CLUSTER_CONFIG" 1
- . $CLUSTER_CONFIG
-
- if [ x"" != x"$QD_PRIMARY_ARRAY" ] ; then
- ERROR_EXIT "[FATAL]:-Cannot specify QD_PRIMARY_ARRAY in '-c <config file>'. Only valid with '-I <input file>'" 2
- fi
-
- if [ x"" = x"$PORT_BASE" ]; then
- ERROR_EXIT "[FATAL]:-PORT_BASE not specified in $CLUSTER_CONFIG file, is this the correct instance configuration file." 2
- fi
-
- if [ $MIRROR_PORT_BASE ]; then
- LOG_MSG "[WARNING]:-Should not specify MIRRORING configuration for HAWQ."
- fi
-
- else
- LOG_MSG "[INFO]:-Reading Greenplum input configuration file $INPUT_CONFIG"
- READ_INPUT_CONFIG
- fi
-
- if [ x"" != x"$REQ_LOCALE_SETTING" ];then LOCALE_SETTING=$REQ_LOCALE_SETTING;fi
-
-
- if [ x"" == x"$INPUT_CONFIG" ] ; then
- if [ x"" != x"$MACHINE_LIST_FILE_ALT" ];then
- MACHINE_LIST_FILE=$MACHINE_LIST_FILE_ALT
- fi
- # Now check to see if MACHINE_LIST_FILE is still empty
- if [ x"" == x"$MACHINE_LIST_FILE" ];then
- LOG_MSG "[FATAL]:-MACHINE_LIST_FILE variable is unset, and -h option not supplied" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- fi
- fi
-
- # Check for required definitions in the CLUSTER_CONFIG file
- if [ x"" = x"$SEG_PREFIX" ]; then
- ERROR_EXIT "[FATAL]:-SEG_PREFIX not specified in $CLUSTER_CONFIG file, is this the correct instance configuration file." 2
- fi
- if [ x"" = x"$DATA_DIRECTORY" ]; then
- ERROR_EXIT "[FATAL]:-DATA_DIRECTORY not specified in $CLUSTER_CONFIG file, is this the correct instance configuration file." 2
- fi
- if [ x"" == x"$LOCALE_SETTING" ];then
- LOG_MSG "[INFO]:-Locale has not been set in $CLUSTER_CONFIG, will set to default value" 1
- LOCALE_SETTING=$DEFAULT_LOCALE_SETTING
- # Now check to see if the system has this locale available
- CHK_LOCALE_KNOWN
- LOG_MSG "[INFO]:-Locale set to $DEFAULT_LOCALE_SETTING" 1
- else
- LOG_MSG "[INFO]:-Locale set to $LOCALE_SETTING"
- CHK_LOCALE_KNOWN
- fi
- LOG_MSG "[INFO]:-Dump current system locale to log file"
- $LOCALE >> $LOG_FILE
- LOG_MSG "[INFO]:-End of system locale dump"
- if [ ! -f $GPCREATESEG ];then
- ERROR_EXIT "[FATAL]:-No $GPCREATESEG exists" 2
- fi
-
- if [ x"" == x"$INPUT_CONFIG" ] ; then
- # Check the other files that are required to be able to continue
- FILE_LIST=($MACHINE_LIST_FILE)
- for FILE in "${FILE_LIST[@]}"
- do
- CHK_FILE $FILE
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Problem with $FILE file" 2
- else
- LOG_MSG "[INFO]:-Completed check of file $FILE"
- fi
- done
- CHK_DUPLICATES
- # Set up the machine list array
- LOG_MSG "[INFO]:-Setting up segment instance list array"
- declare -a MACHINE_LIST=(`$CAT $MACHINE_LIST_FILE|$SORT`)
- fi
- # Now process contents for the configuration file
- if [ ! "$ARRAY_NAME" ]; then
- LOG_MSG "[WARN]:-ARRAY_NAME variable not set, will provide default value" 1
- EXIT_STATUS=1
- ARRAY_NAME="Greenplum Instance"
- fi
- export ARRAY_NAME
-
- if [ x"" = x"$MASTER_HOSTNAME" ]; then
- ERROR_EXIT "[FATAL]:MASTER_HOSTNAME variable not set" 2
- fi
-
- # Make sure that this script is running on the QD host
- if [ $MASTER_HOSTNAME != `$HOSTNAME` ]; then
- LOG_MSG "[WARN]:-Master hostname $MASTER_HOSTNAME does not match hostname output" 1
- LOG_MSG "[INFO]:-Checking to see if $MASTER_HOSTNAME can be resolved on this host" 1
- $TRUSTED_SHELL $MASTER_HOSTNAME "$TOUCH $TMP_HOSTNAME_FILE"
- if [ -f $TMP_HOSTNAME_FILE ];then
- LOG_MSG "[INFO]:-Can resolve $MASTER_HOSTNAME to this host" 1
- $RM -f $TMP_HOSTNAME_FILE
- else
- $TRUSTED_SHELL $MASTER_HOSTNAME "$RM -f $TMP_HOSTNAME_FILE"
- LOG_MSG "[FATAL]:-Master hostname in configuration file is ${MASTER_HOSTNAME}" 1
- LOG_MSG "[FATAL]:-Operating system command returns `$HOSTNAME`" 1
- LOG_MSG "[FATAL]:-Unable to resolve $MASTER_HOSTNAME on this host" 1
- ERROR_EXIT "[FATAL]:-Master hostname in gpinitsystem configuration file must be $MASTER_HOSTNAME" 2
- fi
- fi
-
-
- # Deal with issue of mixed case segment names being created in all lower case on tails but mixed
- # case in head system tables.
- LWR_CASE_SEG_PREFIX=`$ECHO $SEG_PREFIX|$TR '[A-Z]' '[a-z]'`
- SEG_PREFIX=$LWR_CASE_SEG_PREFIX
-
- # MASTER_PORT
- if [ x"" = x"$MASTER_PORT" ]; then
- ERROR_EXIT "[FATAL]:-MASTER_PORT variable not set" 2
- fi
-
- # DATA_DIRECTORY
- ((QE_PRIMARY_COUNT=${#DATA_DIRECTORY[@]}))
- if [ $QE_PRIMARY_COUNT -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Number of primary directories 0 (zero)" 2
- fi
-
- # MASTER_DIRECTORY
- if [ x"" = x"$MASTER_DIRECTORY" ]; then
- ERROR_EXIT "[FATAL]:-MASTER_DIRECTORY variable not set" 2
- fi
- # Check that we have write access to the proposed master data directory
- W_DIR=$MASTER_DIRECTORY
- LOG_MSG "[INFO]:-Checking write access to $W_DIR on master host"
- $TOUCH ${W_DIR}/tmp_file_test
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Cannot write to $W_DIR on master host " 2
- else
- $RM -f ${W_DIR}/tmp_file_test
- LOG_MSG "[INFO]:-Write test passed $W_DIR directory on master host"
- fi
- # Check that the master segment directory does not exist
- if [ -d ${MASTER_DIRECTORY}/${SEG_PREFIX}-1 ];then
- ERROR_EXIT "[FATAL]:-Master host data directory ${MASTER_DIRECTORY}/${SEG_PREFIX}-1 already exists" 2
- fi
- # DATABASE_PREFIX
- if [ x"" = x"$DATABASE_NAME" ]; then
- LOG_MSG "[INFO]:-No DATABASE_NAME set, will exit following $DEFAULTDB updates" 1
- else
- LOG_MSG "[INFO]:-Will create database $DATABASE_NAME"
- fi
- if [ ! $TRUSTED_SHELL ]; then
- ERROR_EXIT "[FATAL]:-TRUSTED_SHELL variable not set" 2
- fi
- # CHECK_POINT_SEGMENTS
- if [ ! $CHECK_POINT_SEGMENTS ]; then
- LOG_MSG "[WARN]:-CHECK_POINT_SEGMENTS variable not set, will set to default value" 1
- CHECK_POINT_SEGMENTS=$DEFAULT_CHK_PT_SEG
- fi
- # KERBEROS_KEYFILE
- if [ ! $KERBEROS_KEYFILE ]; then
- LOG_MSG "[INFO]:-KERBEROS_KEYFILE variable not set, will set to default value" 1
- KERBEROS_KEYFILE=$DEFAULT_DFS_KERBEROS_KEYFILE
- fi
- # ENABLE_SECURE_FILESYSTEM
- if [ ! $ENABLE_SECURE_FILESYSTEM ]; then
- LOG_MSG "[INFO]:-ENABLE_SECURE_FILESYSTEM variable not set, will set to default value" 1
- ENABLE_SECURE_FILESYSTEM=off
- fi
- # ENCODING
- if [ ! $ENCODING ]; then
- LOG_MSG "[WARN]:-ENCODING variable not set, will set to default UTF-8" 1
- EXIT_STATUS=1
- ENCODING="UTF-8"
- fi
- if [ x"SQL_ASCII" = x"$ENCODING" ]; then
- ERROR_EXIT "[FATAL]:-SQL_ASCII is no longer supported as a server encoding" 2
- fi
- # MASTER_MAX_CONNECT
- if [ ! $MASTER_MAX_CONNECT ];then
- LOG_MSG "[INFO]:-MASTER_MAX_CONNECT not set, will set to default value $DEFAULT_QD_MAX_CONNECT" 1
- MASTER_MAX_CONNECT=$DEFAULT_QD_MAX_CONNECT
- else
- if [ $MASTER_MAX_CONNECT -lt 1 ];then
- ERROR_EXIT "[FATAL]:-MASTER_MAX_CONNECT less than 1" 2
- fi
- fi
- ((QE_MAX_CONNECT=$MASTER_MAX_CONNECT*$QE_CONNECT_FACTOR))
- LOG_MSG "[INFO]:-Setting segment instance MAX_CONNECTIONS to $QD_MAX_CONNECT"
- if [ x"" == x"$NEW_BUFFERS" ];then
- MASTER_SHARED_BUFFERS=$DEFAULT_BUFFERS
- QE_SHARED_BUFFERS=$DEFAULT_BUFFERS
- else
- # removed code that forced at least 1000 buffers -kh 3/14/07
- MASTER_SHARED_BUFFERS=$NEW_BUFFERS
- QE_SHARED_BUFFERS=$NEW_BUFFERS
- LOG_MSG "[INFO]:-Set shared buffers to $NEW_BUFFERS"
- fi
- # Number of QE hosts in this configuration
- ((NUM_QES=${#MACHINE_LIST[*]}))
- if [ $NUM_QES -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Number of Segment instances's 0 (zero)" 2
- else
- LOG_MSG "[INFO]:-Number of segment instance hosts = $NUM_QES"
- if [ $NUM_QES -eq 1 ];then
- # This is a single host array, re-tune the BATCH_DEFAULT to 4
- if [ $BATCH_DEFAULT -gt $SINGLE_HOST_BATCH_LIMIT ];then
- LOG_MSG "[INFO]:-Detected a single host GPDB array build, reducing value of BATCH_DEFAULT from $BATCH_DEFAULT to $SINGLE_HOST_BATCH_LIMIT" 1
- BATCH_DEFAULT=$SINGLE_HOST_BATCH_LIMIT
- fi
- fi
- fi
-
- # Temp directory
- ((NUM_TEMP_DIR=${#TEMP_DIRECTORY[*]}))
- TEMP_DIRECTORY_LIST=(`$ECHO ${TEMP_DIRECTORY[@]} | $TR ' ' '\n' | $SORT -u | $TR '\n' ' '`)
- ((NUM_DEDUP_TEMP_DIR=${#TEMP_DIRECTORY_LIST[*]}))
- if [ $NUM_TEMP_DIR -eq 0 ]; then
- LOG_MSG "[INFO]:-Use the default temp directory" 1
- elif [ "$NUM_TEMP_DIR" -ne "$NUM_DEDUP_TEMP_DIR" ]; then
- LOG_MSG "[INFO]:-Use the user specified temp directory" 1
- LOG_MSG "[WARN]:-One or more temp directories are same" 1
- else
- LOG_MSG "[INFO]:-Use the user specified temp directory" 1
- fi
-
- # Mirror configuration
- if [ $MIRRORING -eq 1 ]; then
- ((NUM_MIRROR_DIRECTORY=${#MIRROR_DATA_DIRECTORY[@]}))
- if [ x"" == x"$INPUT_CONFIG" ] ; then
- if [ $NUM_MIRROR_DIRECTORY -ne $QE_PRIMARY_COUNT ]; then
- ERROR_EXIT "[FATAL]:-Number of primary directories does not match number of mirror directories" 2
- fi
- fi
-
- for dir in "${DATA_DIRECTORY[@]}"
- do
- for mirrordir in "${MIRROR_DATA_DIRECTORY[@]}"
- do
- if [ $dir == $mirrordir ] ; then
- ERROR_EXIT "[FATAL]:-Conflict between data directory and mirror data directory ($dir)." 2
- fi
- done
- done
- fi
-
- # Check open files value
- MASTER_OPEN=`ulimit -n`
- if [ $MASTER_OPEN -lt $OS_OPENFILES ];then
- LOG_MSG "[WARN]:-Master open file limit is $MASTER_OPEN should be >= $OS_OPENFILES" 1
- EXIT_STATUS=1
- ULIMIT_WARN=1
- fi
- # Get IP address of the master host
-
- MASTER_IP_ADDRESS_ALL=(`$IFCONFIG $IFCONFIG_TXT |$GREP "inet "|$GREP -v "127.0.0"|$AWK '{print $2}'|$CUT -d: -f2`)
- ERROR_CHK $? "obtain IP address of Master host" 2
- MASTER_IPV6_LOCAL_ADDRESS_ALL=(`$IPV6_ADDR_LIST_CMD |$GREP inet6|$AWK '{print $2}' |$CUT -d'/' -f1`)
- MASTER_IP_ADDRESS=(`$ECHO ${MASTER_IP_ADDRESS_ALL[@]} ${MASTER_IPV6_LOCAL_ADDRESS_ALL[@]}|$TR ' ' '\n'|$SORT -u|$TR '\n' ' '`)
- LOG_MSG "[INFO]:-Master IP address array = ${MASTER_IP_ADDRESS[@]}"
- if [ x"" != x"$STANDBY_HOSTNAME" ];then
- STANDBY_IP_ADDRESS_ALL=(`$TRUSTED_SHELL $STANDBY_HOSTNAME "$IFCONFIG $IFCONFIG_TXT |$GREP \"inet \"|$GREP -v \"127.0.0\"|$AWK '{print \\$2}'|$CUT -d: -f2" 2>>$LOG_FILE`)
- STANDBY_IPV6_ADDRESS_ALL=(`$TRUSTED_SHELL $STANDBY_HOSTNAME "$IPV6_ADDR_LIST_CMD |$GREP inet6|$AWK '{print \\$2}' |$CUT -d'/' -f1" 2>>$LOG_FILE`)
- STANDBY_IP_ADDRESS=(`$ECHO ${STANDBY_IP_ADDRESS_ALL[@]} ${STANDBY_IPV6_ADDRESS_ALL[@]}|$TR ' ' '\n'|$SORT -u|$TR '\n' ' '`)
- ERROR_CHK $? "obtain IP address of standby Master host" 2
- LOG_MSG "[INFO]:-Standby IP address array = ${STANDBY_IP_ADDRESS[@]}"
- #Check open files value
- STANDBY_MASTER_OPEN=`$TRUSTED_SHELL $STANDBY_HOSTNAME "ulimit -n"`
- if [ $STANDBY_MASTER_OPEN -lt $OS_OPENFILES ];then
- LOG_MSG "[WARN]:-Standby Master open file limit is $STANDBY_MASTER_OPEN should be >= $OS_OPENFILES" 1
- EXIT_STATUS=1
- ULIMIT_WARN=1
- fi
- fi
-
- # Validate that the different locale settings are available of the system
- # Note: This check is performed on the master only. There is an assumption
- # being made that the locales available on the master are available on the
- # segment hosts.
- if [ x"" != x"$REQ_LOCALE_SETTING" ]; then
- IN_ARRAY $REQ_LOCALE_SETTING "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $REQ_LOCALE_SETTING is not a valid value for --locale on this system." 2
- fi
- fi
- if [ x"" != x"$LCCOLLATE" ]; then
- IN_ARRAY $LCCOLLATE "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCCOLLATE is not a valid value for --lc-collate on this system." 2
- fi
- fi
- if [ x"" != x"$LCCTYPE" ]; then
- IN_ARRAY $LCCTYPE "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCCTYPE is not a valid value for --lc-ctype on this system." 2
- fi
- fi
- if [ x"" != x"$LCMESSAGES" ]; then
- IN_ARRAY $LCMESSAGES "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCMESSAGES is not a valid value for --lc-messages on this system." 2
- fi
- fi
-
- if [ x"" != x"$LCMONETARY" ]; then
- IN_ARRAY $LCMONETARY "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCMONETARY is not a valid value for --lc-monetary on this system." 2
- fi
- fi
-
- if [ x"" != x"$LCNUMERIC" ]; then
- IN_ARRAY $LCNUMERIC "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCNUMERIC is not a valid value for --lc-numeric on this system." 2
- fi
- fi
-
- if [ x"" != x"$LCTIME" ]; then
- IN_ARRAY $LCTIME "`locale -a`"
- if [ $? -eq 0 ]; then
- ERROR_EXIT "[FATAL]-Value $LCTIME is not a valid value for --lc-time on this system." 2
- fi
- fi
- LOG_MSG "[INFO]:-Checking configuration parameters, Completed" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-#*****************************************************
-# Hdfs Check Error Code
-#*****************************************************
-
-GPCHKHDFS_ERR=1
-CONNECT_ERR=100
-OPENFILE_ERR=101
-WRITEFILE_ERR=102
-FLUSH_ERR=103
-DELETE_ERR=104
-DFSDIR_ERR=105
-GETTOKEN_ERR=106
-KRBLOGIN_ERR=107
-CHK_HDFS() {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking Hdfs is available,please wait..." 1
- $GP_CHECK_HDFS $DFS_NAME $DFS_URL $ENABLE_SECURE_FILESYSTEM $KERBEROS_KEYFILE
- RESULT=$?
- if [ $RESULT -ne 0 ] ;then
- LOG_MSG "[FATAL]:-gpcheckhdfs Command: 'gpcheckhdfs $DFS_NAME $DFS_URL $ENABLE_SECURE_FILESYSTEM $KERBEROS_KEYFILE'" 1
- LOG_MSG "[FATAL]:-There may be some problems in Hdfs Or Krb Authorized..Please Check Error($RESULT).." 1
- else
- LOG_MSG "[INFO]:-Checking Hdfs Successfully" 1
- fi
-
- if [ $RESULT -eq $GPCHKHDFS_ERR ] ;then
- LOG_MSG "[FATAL]:-Command: $GP_CHECK_HDFS $DFS_NAME $DFS_URL $ENABLE_SECURE_FILESYSTEM $KERBEROS_KEYFILE" 1
- ERROR_EXIT "[FATAL]:Unable to check hdfs" 2
- elif [ $RESULT -eq $CONNECT_ERR ] ;then
- LOG_MSG "[FATAL]:-Failed to Connected to $DFS_NAME://$DFS_URL" 1
- ERROR_EXIT "[FATAL]:Please Check your hostname or port" 2
- elif [ $RESULT -eq $OPENFILE_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Failed to Open or Write a File" 2
- elif [ $RESULT -eq $WRITEFILE_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Failed to Write File to Hdfs" 2
- elif [ $RESULT -eq $FLUSH_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Failed to Flush,Please check your Datanode" 2
- elif [ $RESULT -eq $DELETE_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Failed to Delete a File..." 2
- elif [ $RESULT -eq $DFSDIR_ERR ] ;then
- ERROR_EXIT "[FATAL]:-DFS Directory Error" 2
- elif [ $RESULT -eq $GETTOKEN_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Get Delegation Token Error" 2
- elif [ $RESULT -eq $KRBLOGIN_ERR ] ;then
- ERROR_EXIT "[FATAL]:-Failed to login to Kerberos,Please check your keytab file or kdc" 2
- fi
-}
-
-CHK_MULTI_HOME () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Commencing multi-home checks, please wait..." 1
-
- # For MPP-12043 we need a way to sort that we can't get with the sort command
- # so we'll use a little command line python script.
-
-read -d '' HOSTNAME_SORTER <<"END_PYTHON_CODE"
-import sys, re
-
-standard_host_re = re.compile(r'([a-zA-Z]+)((\\d+)(-(\\d+))?)')
-
-def standard_host_cmp(h1, h2):
- m1 = standard_host_re.match(h1)
- m2 = standard_host_re.match(h2)
-
- if not m1 or not m2:
- if h1 == h2:
- return 0
- elif h1 < h2:
- return -1
- else:
- return 1
- else:
- if m1.group(1) <= m2.group(1):
- if not int(m1.group(3)) == int(m2.group(3)):
- return int(m1.group(3)) - int(m2.group(3))
- elif m1.group(5):
- return int(m1.group(5)) - int(m2.group(5))
- else:
- return 0
- else:
- return 1
-
-hl = sys.stdin.readlines()
-for h in sorted(hl,cmp=standard_host_cmp):
- print h,
-END_PYTHON_CODE
-
- MACHINE_LIST=(`$CAT $MACHINE_LIST_FILE|$PYTHON -c "$HOSTNAME_SORTER"`)
- M_HOST_ARRAY=()
- MCOUNT=0
- for MHOST in ${MACHINE_LIST[@]}
- do
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- PING_HOST $MHOST
- SEG_HOSTNAME=`$TRUSTED_SHELL $MHOST "$HOSTNAME"`
- if [ $? -ne 0 ];then
- LOG_MSG "[FATAL]:-Remote command to host $MHOST failed to get value of hostname"
- $ECHO "[FATAL]:-Remote command to host $MHOST failed to get value of hostname"
- LOG_MSG "[FATAL]:-Check to see that you have setup trusted remote ssh on all hosts"
- $ECHO "[FATAL]:-Check to see that you have setup trusted remote ssh on all hosts"
-
- ERROR_EXIT "[FATAL]:-Unable to get hostname output for $MHOST" 2
- fi
- if [ `$ECHO ${T_SEG_ARRAY[@]}|$TR ' ' '\n'|$GREP -c "^${SEG_HOSTNAME}$"` -eq 0 ];then
- T_SEG_ARRAY=(${T_SEG_ARRAY[@]} $SEG_HOSTNAME)
- fi
- T_HOST_ARRAY=(${T_HOST_ARRAY[@]} ${MHOST}~$SEG_HOSTNAME)
- ((MCOUNT=$MCOUNT+1))
- done
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $ECHO;fi
- # Now sort the array to ensure that all SEG_HOSTNAME values together
- for S_HOST in ${T_SEG_ARRAY[@]}
- do
- M_HOST_ARRAY=(${M_HOST_ARRAY[@]} `$ECHO ${T_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP "~${S_HOST}$"|$TR '\n' ' '`)
- done
- . $CLUSTER_CONFIG
- NUM_DATADIR=${#DATA_DIRECTORY[@]}
- if [ `$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$AWK -F"~" '{print $2}'|$SORT -u|$WC -l` -ne $MCOUNT ];then
- LOG_MSG "[INFO]:-Configuring build for multi-home array" 1
- MULTI_HOME=1
- # Now make sure that we have same number of unique hostnames as there are data directories declared
- HOST1=`$ECHO ${M_HOST_ARRAY[0]}|$AWK -F"~" '{print $2}'`
- NUM_MHOST_NODE=`$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP "~${HOST1}$"|$WC -l`
-
- ((REMAINDER=$NUM_DATADIR % $NUM_MHOST_NODE))
- ((MULTIPLE=$NUM_DATADIR / $NUM_MHOST_NODE))
- if [ $REMAINDER -ne 0 ] || [ $MULTIPLE -eq 0 ] ;then
- LOG_MSG "[FATAL]:-Inconsistency between number of multi-home hostnames and number of segments per host" 1
- LOG_MSG "[INFO]:-Have $NUM_DATADIR data directories and $NUM_MHOST_NODE multi-home hostnames for each host" 1
- LOG_MSG "[INFO]:-For multi-home configuration, number of segment instance data directories per host must be multiple of" 1
- LOG_MSG "[INFO]:-the number of multi-home hostnames within the GPDB array" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- fi
-
- if [ $MULTIPLE -gt 1 ] ; then
- # Now need to increase the size of M_HOME_ARRAY to fake a multi-home array
- HOME_COUNT=1
- FAKE_M_HOST_ARRAY=(${M_HOST_ARRAY[@]})
- while [ $HOME_COUNT -lt $MULTIPLE ]
- do
- FAKE_M_HOST_ARRAY=(${FAKE_M_HOST_ARRAY[@]} ${M_HOST_ARRAY[@]})
- ((HOME_COUNT=$HOME_COUNT+1))
- done
- M_HOST_ARRAY=()
- for S_HOST in ${T_SEG_ARRAY[@]}
- do
- M_HOST_ARRAY=(${M_HOST_ARRAY[@]} `$ECHO ${FAKE_M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP "~${S_HOST}$"| $SORT | $TR '\n' ' '`)
- done
- fi
- else
- LOG_MSG "[INFO]:-Configuring build for standard array" 1
- MULTI_HOME=0
- # Now need to increase the size of M_HOME_ARRAY to fake a multi-home array
- HOME_COUNT=1
- FAKE_M_HOST_ARRAY=(${M_HOST_ARRAY[@]})
- while [ $HOME_COUNT -lt $NUM_DATADIR ]
- do
- FAKE_M_HOST_ARRAY=(${FAKE_M_HOST_ARRAY[@]} ${M_HOST_ARRAY[@]})
- ((HOME_COUNT=$HOME_COUNT+1))
- done
- M_HOST_ARRAY=(`$ECHO ${FAKE_M_HOST_ARRAY[@]}|$TR ' ' '\n'|$SORT |$TR '\n' ' '`)
- fi
- NUM_SEP_HOSTS=`$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$AWK -F"~" '{print $2}'|$SORT -u|$WC -l`
- if [ $MIRRORING -eq 1 ] && [ $MIRROR_TYPE -eq 1 ];then
- # Mirroring is on and spread mirror configuration has been requested, make sure sufficient hosts
- if [ $NUM_SEP_HOSTS -eq 1 ] || [ $NUM_SEP_HOSTS -le $NUM_DATADIR ];then
- LOG_MSG "[FATAL]:-Request made for spread mirroring via -S option, but insufficient hosts available" 1
- LOG_MSG "[INFO]:-Number of separate hosts must be greater than number of segment instances per host" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- else
- LOG_MSG "[INFO]:-Sufficient hosts for spread mirroring request" 1
- fi
- fi
- if [ $MIRRORING -eq 0 ] && [ $MIRROR_TYPE -eq 1 ];then
- LOG_MSG "[WARN]:-Option -S supplied, but no mirrors have been defined, ignoring -S option" 1
- MIRROR_TYPE=0
- EXIT_STATUS=1
- fi
- LOG_MSG "[INFO]:-Commencing multi-home checks, Completed" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-
-CHK_LOCALE_KNOWN () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- if [ $# -eq 0 ];then
- if [ `$LOCALE -a |$GREP -ic $LOCALE_SETTING` -eq 0 ];then
- LOG_MSG "[INFO]:-Master host available locale values"
- $LOCALE -a >> $LOG_FILE
- LOG_MSG "[FATAL]:-Unable to locate locale value $LOCALE_SETTING on this host" 1
- LOG_MSG "[INFO]:-Select another locale value via -n option to this utility" 1
- LOG_MSG "[INFO]:-Avaliable locale values have been dumped to the log file" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- else
- LOG_MSG "[INFO]:-Locale check passed on this host"
- fi
- else
- # Hostname has been passed so check remote locale value
- if [ `$TRUSTED_SHELL $1 "$LOCALE -a|$GREP -ic '$LOCALE_SETTING'"` -eq 0 ];then
- LOG_MSG "[INFO]:-Host $1 available locale values"
- `$TRUSTED_SHELL $1 "$LOCALE -a"` >> $LOG_FILE
- LOG_MSG "[FATAL]:-Unable to locate locale value $LOCALE_SETTING on $1" 1
- LOG_MSG "[INFO]:-Select another locale value via -n option to this utility" 1
- LOG_MSG "[INFO]:-Avaliable locale values have been dumped to the log file" 1
- ERROR_EXIT "[FATAL]:-Unable to continue" 2
- else
- LOG_MSG "[INFO]:-Locale check passed on $1"
- fi
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CHK_DUPLICATES () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- if [ `$ECHO | $CAT $MACHINE_LIST_FILE - |$GREP -v $"^$"|$WC -l` -ne `$CAT $MACHINE_LIST_FILE|$GREP -v "^$"|$SORT -u|$WC -l` ]
- then
- ERROR_EXIT "[FATAL]:-Duplicate segment instance hostname exists in $MACHINE_LIST_FILE" 2
- fi
- LOG_MSG "[INFO]:-No duplicate segment instance hostnames found, will proceed"
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CHK_OPEN_FILES () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking $1"
- OPEN_VALUE=`$TRUSTED_SHELL $1 "ulimit -n"`
- if [ $OPEN_VALUE -lt $OS_OPENFILES ];then
- LOG_MSG "[WARN]:-Host $1 open files limit is $OPEN_VALUE should be >= $OS_OPENFILES" 1
- EXIT_STATUS=1
- ULIMIT_WARN=1
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-# HAWQ needs DFS_NAME set.
-CHK_DFS_NAME () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking DFS name"
- if [ x"" == x"$DFS_NAME" ]; then
- ERROR_EXIT "[FATAL]:-Issue with DFS_NAME: not set" 2
- fi
-
- name=$(echo $DFS_NAME | awk '{print toupper($0)}')
- if [ x"$name" != x"HDFS" ]; then
- ERROR_EXIT "[FATAL]:-Issue with DFS_NAME: only \"HDFS\" is supported" 2
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-# HAWQ needs dfs url.
-CHK_DFS_URL () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking DFS url"
-
- if [ x"" == x"$DFS_URL" ]; then
- ERROR_EXIT "[FATAL]:-Issue with DFS_URL: not set" 2
- fi
-
- # Don't need the protocol part in the URL.
- if `$ECHO "$DFS_URL" | $GREP -q '^[a-zA-Z]*://'`; then
- ERROR_EXIT "[FATAL]:-Issue with DFS_URL: protocol in the dfs url should not be specified" 2
- fi
-
- dfs_host=`$ECHO "$DFS_URL" | $SED 's,[:/].*,,'`
- # do not ping host because it may be configured using namenode HA
- #PING_HOST "$dfs_host"
-
- # We must create the filespace in a relative path
- #DFS_URL="$DFS_URL"/hawq_data
- #export DFS_URL
-
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-# HAWQ supports multiple disks for pg_temp.
-CHK_TEMP_DIR () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking temp directories" 1
-
- ((num=${#TEMP_DIRECTORY_LIST[*]}))
- # Remove and warn the duplicate temp directories.
- for dir in "${TEMP_DIRECTORY_LIST[@]}"
- do
- # If there is no STANDBY_HOSTNAME, it will not check it here.
- for machine in "${MACHINE_LIST[@]}" "$MASTER_HOSTNAME" $STANDBY_HOSTNAME
- do
- LOG_MSG "[INFO]:-Check directory: $dir on machine $machine" 1
- CHK_DIR "$dir" "$machine"
- CHK_WRITE_DIR "$dir" "$machine"
- done
- done
-
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CHK_QES () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking Master host" 1
- SET_VAR $QD_PRIMARY_ARRAY
- CHK_DIR $GP_DIR
- if [ $EXISTS -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Master directory $GP_DIR already exists" 2
- fi
- GET_PG_PID_ACTIVE $GP_PORT
- if [ $PID -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Found indication of postmaster process on port $GP_PORT on Master host" 2
- fi
- LOG_MSG "[INFO]:-Checking new segment hosts, please wait..." 1
-
- CHECK_LIST=(`$ECHO ${MACHINE_LIST[@]} | $TR ' ' '\n' | $GREP -v "${HOSTNAME}\$" | $SORT | $TR '\n' ' '`)
- for QE_ID in ${CHECK_LIST[@]}
- do
- CHK_LOCALE_KNOWN $QE_ID
- CHK_OPEN_FILES $GP_HOSTADDRESS
- POSTGRES_VERSION_CHK $GP_HOSTADDRESS
- if [ $VERSION_MATCH -ne 1 ] ; then
- ERROR_EXIT "Postgres version does not match" 2
- fi
-
- # Check to ensure have required QE directories
- for DIR in "${DATA_DIRECTORY[@]}"
- do
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- LOG_MSG "[INFO]:-Checking segment instance $QE_ID directory $DIR"
- CHK_DIR $DIR $QE_ID
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-No $DIR on segment instance $QE_ID" 2
- else
- LOG_MSG "[INFO]:-$QE_ID $DIR checked"
- fi
- done
- # Check that we have a GP_LIBRARY_PATH directory on the QE
- CHK_DIR $GP_LIBRARY_PATH $QE_ID
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-No $GP_LIBRARY_PATH on segment instance $QE_ID" 2
- else
- LOG_MSG "[INFO]:-Segment instance $QE_ID $GP_LIBRARY_PATH checked"
- fi
- done
-
- # Check to ensure that instance directories do not exist on hosts
- LOG_MSG "[INFO]:-Primary segment instance directory check"
- for I in "${QE_PRIMARY_ARRAY[@]}"
- do
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- SET_VAR $I
- LOG_MSG "[INFO]:-Checking $GP_HOSTADDRESS for dir $GP_DIR"
- CHK_DIR $GP_DIR $GP_HOSTADDRESS
- if [ $EXISTS -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Instance directory $GP_DIR exists on segment instance $GP_HOSTADDRESS" 2
- fi
- # Check that the hostname is not associated with local host
- LOG_MSG "[INFO]:-Checking $GP_HOSTADDRESS $HOSTFILE for localhost set as $GP_HOSTADDRESS"
- LOCAL_COUNT=`$TRUSTED_SHELL $GP_HOSTADDRESS "$GREP $GP_HOSTADDRESS $HOSTFILE|$GREP -c localhost"`
- if [ $LOCAL_COUNT -ne 0 ];then
- LOG_MSG "[WARN]:-----------------------------------------------------------" 1
- LOG_MSG "[WARN]:-Host $GP_HOSTADDRESS is assigned as localhost in $HOSTFILE" 1
- LOG_MSG "[WARN]:-This will cause segment->master communication failures" 1
- LOG_MSG "[WARN]:-Remove $GP_HOSTADDRESS from local host line in /etc/hosts" 1
- LOG_MSG "[WARN]:-----------------------------------------------------------" 1
- EXIT_STATUS=1
- fi
- # Check that we can write to the QE directory
- W_DIR=`$DIRNAME $GP_DIR`
- LOG_MSG "[INFO]:-Checking write access to $W_DIR on $GP_HOSTADDRESS"
- $TRUSTED_SHELL $GP_HOSTADDRESS "$TOUCH ${W_DIR}/tmp_file_test"
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Cannot write to $W_DIR on $GP_HOSTADDRESS " 2
- else
- $TRUSTED_SHELL $GP_HOSTADDRESS "$RM -f ${W_DIR}/tmp_file_test"
- LOG_MSG "[INFO]:-Write test passed on $GP_HOSTADDRESS $W_DIR directory"
- fi
-
- done
- # Check for mirror directories if mirroring configured
- if [ $MIRRORING -ne 0 ]; then
- LOG_MSG "[INFO]:-Mirror segment instance directory check"
- for I in "${QE_MIRROR_ARRAY[@]}"
- do
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- SET_VAR $I
- LOG_MSG "[INFO]:-Checking $GP_HOSTADDRESS for dir $GP_DIR"
- CHK_DIR $GP_DIR $GP_HOSTADDRESS
- if [ $EXISTS -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Instance directory $GP_DIR exists on segment instance $GP_HOSTADDRESS" 2
- fi
- # Check that we can write to the QE directory
- W_DIR=`$DIRNAME $GP_DIR`
- LOG_MSG "[INFO]:-Checking write access to $W_DIR on $GP_HOSTADDRESS"
- $TRUSTED_SHELL $GP_HOSTADDRESS "$TOUCH ${W_DIR}/tmp_file_test"
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Cannot write to $W_DIR on $GP_HOSTADDRESS " 2
- else
- $TRUSTED_SHELL $GP_HOSTADDRESS "$RM -f ${W_DIR}/tmp_file_test"
- LOG_MSG "[INFO]:-Write test passed on $GP_HOSTADDRESS $W_DIR directory"
- fi
- done
- else
- LOG_MSG "[INFO]:-Mirror segment instance directory check skipped, mirroring=Off"
- fi
-
- if [ x"" != x"$STANDBY_HOSTNAME" ];then
- PING_HOST $STANDBY_HOSTNAME
- CHK_LOCALE_KNOWN $STANDBY_HOSTNAME
- CHK_OPEN_FILES $GP_HOSTADDRESS
- # Check standby host directory
- CHK_DIR $MASTER_DIRECTORY $STANDBY_HOSTNAME
- if [ $EXISTS -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Standby host directory $MASTER_DIRECTORY, does not exist" 2
- fi
- fi
-
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $ECHO;fi
-
- LOG_MSG "[INFO]:-Checking new segment hosts, Completed" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CHK_SEG () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $1
-
- # We need QE_ID to be able to re-use some functions.
- QE_ID=$GP_HOSTADDRESS
- CHK_LOCALE_KNOWN $QE_ID
- CHK_OPEN_FILES $GP_HOSTADDRESS
- POSTGRES_VERSION_CHK $GP_HOSTADDRESS
- if [ $VERSION_MATCH -ne 1 ] ; then
- ERROR_EXIT "Postgres version does not match" 2
- fi
-
- # since this is from the input config file we only check our one datadir
- #CHK_DIR $GP_DIR $QE_ID
- #if [ $EXISTS -ne 0 ]; then
- # ERROR_EXIT "[FATAL]:-No $GP_DIR on segment instance $QE_ID" 2
- #else
- # LOG_MSG "[INFO]:-$QE_ID $GP_DIR checked"
- #fi
-
- #make sure we can write to it.
- # Check that we can write to the QE directory
- W_DIR=`$DIRNAME $GP_DIR`
- LOG_MSG "[INFO]:-Checking write access to $W_DIR on $GP_HOSTADDRESS"
- $TRUSTED_SHELL $GP_HOSTADDRESS "$TOUCH ${W_DIR}/tmp_file_test"
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Cannot write to $W_DIR on $GP_HOSTADDRESS " 2
- else
- $TRUSTED_SHELL $GP_HOSTADDRESS "$RM -f ${W_DIR}/tmp_file_test"
- LOG_MSG "[INFO]:-Write test passed on $GP_HOSTADDRESS $W_DIR directory"
- fi
-
-
- # Check that we have a GP_LIBRARY_PATH directory on the QE
- CHK_DIR $GP_LIBRARY_PATH $GP_HOSTADDRESS
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-No $GP_LIBRARY_PATH on segment $GP_HOSTADDRESS:$GP_DIR" 2
- else
- LOG_MSG "[INFO]:-Segment instance $GP_HOSTADDRESS:$GP_DIR $GP_LIBRARY_PATH checked"
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-
-}
-
-CHK_QES_FROM_INPUTFILE () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Checking Master host" 1
- SET_VAR $QD_PRIMARY_ARRAY
- CHK_DIR $GP_DIR
- if [ $EXISTS -eq 0 ]; then
- ERROR_EXIT "[FATAL]:-Master directory $GP_DIR already exists" 2
- fi
- GET_PG_PID_ACTIVE $GP_PORT
- if [ $PID -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Found indication of postmaster process on port $GP_PORT on Master host" 2
- fi
- LOG_MSG "[INFO]:-Checking new segment hosts, please wait..." 1
-
- for QE in ${QE_PRIMARY_ARRAY[@]}
- do
- CHK_SEG $QE
- done
-
- for QE in ${QE_MIRROR_ARRAY[@]}
- do
- CHK_SEG $QE
- done
-
- if [ x"" != x"$STANDBY_HOSTNAME" ];then
- PING_HOST $STANDBY_HOSTNAME
- CHK_LOCALE_KNOWN $STANDBY_HOSTNAME
- CHK_OPEN_FILES $GP_HOSTADDRESS
- #Check standby host directory
- CHK_DIR $MASTER_DIRECTORY $STANDBY_HOSTNAME
- if [ $EXISTS -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Standby host directory $MASTER_DIRECTORY, does not exist" 2
- fi
- fi
-
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $ECHO;fi
- LOG_MSG "[INFO]:-Checking new segment hosts, Completed" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-POSTGRES_PORT_CHK () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- GET_PG_PID_ACTIVE $1 $2
- if [ x"$PID" != x0 ];then
- ERROR_EXIT "[FATAL]:-Host $2 has an active database process on port = $1" 2
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-
-CREATE_QE_ARRAY () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Building primary segment instance array, please wait..." 1
- #Set up initial variables
- . $CLUSTER_CONFIG
- if [ x"" != x"$REQ_LOCALE_SETTING" ];then LOCALE_SETTING=$REQ_LOCALE_SETTING;fi
- if [ `$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP -c "~${MASTER_HOSTNAME}\$"` -gt 0 ]; then
- MASTER_LIST=(`$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP "~${MASTER_HOSTNAME}\$"`)
- M_HOST_ARRAY=(${MASTER_LIST[@]} `$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP -v "~${MASTER_HOSTNAME}\$"`)
- fi
- if [ $MIRRORING -eq 1 ] && [ $MIRROR_TYPE -eq 0 ];then
- # Move first host to other end of the array
- # Get first hostname
- HOST_MOVE=`$ECHO ${M_HOST_ARRAY[0]}|$AWK -F"~" '{print $2}'`
- M_MIR_HOST_ARRAY=(`$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP -v "~${HOST_MOVE}"|$TR '\n' ' '` `$ECHO ${M_HOST_ARRAY[@]}|$TR ' ' '\n'|$GREP "~${HOST_MOVE}"|$TR '\n' ' '`)
- fi
- DBID_COUNT=1
- CONTENT_COUNT=-1
- PORT_COUNT=0
- LAST_HOST=X
- SEG_DIR_VECTOR=0
- MIR_COUNT=-1
- QD_PRIMARY_ARRAY=${MASTER_HOSTNAME}~${MASTER_PORT}~${MASTER_DIRECTORY}/${SEG_PREFIX}${CONTENT_COUNT}~${DBID_COUNT}~${CONTENT_COUNT}~0
- ((DBID_COUNT=$DBID_COUNT+1));((CONTENT_COUNT=$CONTENT_COUNT+1))
- for QE_PAIR in ${M_HOST_ARRAY[@]}
- do
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- QE_NAME=`$ECHO $QE_PAIR|$AWK -F"~" '{print $1}'`
- QE_HOST=`$ECHO $QE_PAIR|$AWK -F"~" '{print $2}'`
- if [ $LAST_HOST == $QE_HOST ];then
- ((PORT_COUNT=$PORT_COUNT+1))
- else
- SEG_DIR_VECTOR=0
- PORT_COUNT=0
- fi
- ((GP_PORT=$PORT_BASE+$PORT_COUNT))
-
- if [ x"" == x"$REPLICATION_PORT_BASE" ];then
- REPL_PORT=0
- else
- ((REPL_PORT=$REPLICATION_PORT_BASE+$PORT_COUNT))
- fi
- GP_DIR=${DATA_DIRECTORY[$SEG_DIR_VECTOR]}
- QE_PRIMARY_ARRAY=(${QE_PRIMARY_ARRAY[@]} ${QE_NAME}~${GP_PORT}~${GP_DIR}/${SEG_PREFIX}${CONTENT_COUNT}~${DBID_COUNT}~$CONTENT_COUNT~${REPL_PORT})
- POSTGRES_PORT_CHK $GP_PORT $QE_NAME
- ((DBID_COUNT=$DBID_COUNT+1))
- ((CONTENT_COUNT=$CONTENT_COUNT+1))
- ((SEG_DIR_VECTOR=$SEG_DIR_VECTOR+1))
- LAST_HOST=$QE_HOST
- done
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $ECHO;fi
- if [ $MIRRORING -eq 1 ] ;then
- ((MIRROR_OFFSET=$MIRROR_PORT_BASE-$PORT_BASE))
- ((MIRROR_REPLICATION_PORT_OFFSET=$MIRROR_REPLICATION_PORT_BASE-$REPLICATION_PORT_BASE))
- if [ $MIRROR_TYPE -eq 1 ];then
- CREATE_SPREAD_MIRROR_ARRAY
- else
- CREATE_GROUP_MIRROR_ARRAY
- fi
- fi
- ((TOTAL_SEG=${#QE_PRIMARY_ARRAY[@]}))
- # Now re-order the array so that it is ordered by PORT to spread out the number of parallel processes initiated on each host
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-ARRAY_REORDER() {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
-
- # Now re-order the array so that it is ordered by PORT to spread out the
- # number of parallel processes initiated on each host
- #
- # MPP-13617: If segment contains a ~, we assume ~ is the field delimiter.
- # Otherwise we assume : is the delimiter. This allows us to easily
- # handle IPv6 addresses which may contain a : by using a ~ as a delimiter.
- #
- case `$ECHO ${QE_PRIMARY_ARRAY[@]}` in
- *~*)
- S="~"
- ;;
- *)
- S=":"
- ;;
- esac
-
- QE_REORDER_ARRAY=(`$ECHO ${QE_PRIMARY_ARRAY[@]}|$TR ' ' '\n'|$SORT -t$S -k2,2|$TR '\n' ' '`)
- QE_PRIMARY_ARRAY=(${QE_REORDER_ARRAY[@]})
- if [ $MIRROR_TYPE -eq 1 ];then
- QE_REORDER_ARRAY=(`$ECHO ${QE_MIRROR_ARRAY[@]}|$TR ' ' '\n'|$SORT -t$S -k2,2|$TR '\n' ' '`)
- QE_MIRROR_ARRAY=(${QE_REORDER_ARRAY[@]})
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-DISPLAY_CONFIG () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- if [ x"" == x"$INPUT_CONFIG" ] ; then
- . $CLUSTER_CONFIG
- if [ x"" != x"$REQ_LOCALE_SETTING" ];then
- LOCALE_SETTING=$REQ_LOCALE_SETTING;
- fi
- if [ x"" != x"$MACHINE_LIST_FILE_ALT" ];then
- MACHINE_LIST_FILE=$MACHINE_LIST_FILE_ALT
- fi
-
- if [ `$CAT ${MACHINE_LIST_FILE}| $GREP -c "${MASTER_HOSTNAME}\$"` -eq 0 ]; then
- declare -a MACHINE_LIST=(`$CAT $MACHINE_LIST_FILE`)
- else
- declare -a MACHINE_LIST=($MASTER_HOSTNAME `$CAT $MACHINE_LIST_FILE|$GREP -v "${MASTER_HOSTNAME}\$"`)
- fi
- fi
- ((NUM_QES=${#MACHINE_LIST[*]}))
- if [ x"" == x"$PG_CONF_ADD_FILE" ]; then
- PG_ADD=Off
- else
- PG_ADD=On
- fi
- export QD_DIR=$GP_DIR
- if [ x"" != x"$INTERACTIVE" ];then
- SET_VAR $QD_PRIMARY_ARRAY
- LOG_MSG "[INFO]:-HAWQ Creation Parameters" 1
- LOG_MSG "[INFO]:---------------------------------------" 1
- LOG_MSG "[INFO]:-Master Configuration" 1
- LOG_MSG "[INFO]:---------------------------------------" 1
- LOG_MSG "[INFO]:-Master instance name = $ARRAY_NAME" 1
- LOG_MSG "[INFO]:-Master hostname = $GP_HOSTADDRESS" 1
- LOG_MSG "[INFO]:-Master port = $MASTER_PORT" 1
- LOG_MSG "[INFO]:-Master instance dir = $GP_DIR" 1
- LOG_MSG "[INFO]:-Master LOCALE = $LOCALE_SETTING" 1
- LOG_MSG "[INFO]:-Greenplum segment prefix = $SEG_PREFIX" 1
- LOG_MSG "[INFO]:-Master Database = $DATABASE_NAME" 1
- LOG_MSG "[INFO]:-Master connections = $MASTER_MAX_CONNECT" 1
- LOG_MSG "[INFO]:-Master buffers = $MASTER_SHARED_BUFFERS" 1
- LOG_MSG "[INFO]:-Segment connections = $QE_MAX_CONNECT" 1
- LOG_MSG "[INFO]:-Segment buffers = $QE_SHARED_BUFFERS" 1
- LOG_MSG "[INFO]:-Checkpoint segments = $CHECK_POINT_SEGMENTS" 1
- LOG_MSG "[INFO]:-Kerberos key files = $KERBEROS_KEYFILE" 1
- LOG_MSG "[INFO]:-Enable secure filesystem = $ENABLE_SECURE_FILESYSTEM" 1
- LOG_MSG "[INFO]:-Encoding = $ENCODING" 1
- LOG_MSG "[INFO]:-Postgres param file = $PG_ADD" 1
- LOG_MSG "[INFO]:-Initdb to be used = $INITDB" 1
- LOG_MSG "[INFO]:-GP_LIBRARY_PATH is = $GP_LIBRARY_PATH" 1
- LOG_MSG "[INFO]:-DFS name is = $DFS_NAME" 1
- LOG_MSG "[INFO]:-DFS url is = $DFS_URL" 1
- if [ $ULIMIT_WARN -eq 1 ];then
- LOG_MSG "[WARN]:-Ulimit check = Warnings generated, see log file $WARN_MARK" 1
- else
- LOG_MSG "[INFO]:-Ulimit check = Passed" 1
- fi
- if [ $MULTI_HOME -eq 0 ];then
- LOG_MSG "[INFO]:-Array host connect type = Single hostname per node" 1
- else
- LOG_MSG "[INFO]:-Array host connect type = Multi hostname per node" 1
- fi
- IP_COUNT=1
- for MASTER_IP in "${MASTER_IP_ADDRESS[@]}"
- do
- LOG_MSG "[INFO]:-Master IP address [$IP_COUNT] = $MASTER_IP" 1
- ((IP_COUNT=$IP_COUNT+1))
- done
-
- if [ x"" != x"$STANDBY_HOSTNAME" ];then
- LOG_MSG "[INFO]:-Standby Master = $STANDBY_HOSTNAME" 1
- else
- LOG_MSG "[INFO]:-Standby Master = Not Configured" 1
- fi
- LOG_MSG "[INFO]:-Primary segment # = $QE_PRIMARY_COUNT" 1
- if [ x"" != x"$STANDBY_HOSTNAME" ];then
- for STANDBY_IP in "${STANDBY_IP_ADDRESS[@]}"
- do
- LOG_MSG "[INFO]:-Standby IP address = $STANDBY_IP" 1
- done
- fi
- LOG_MSG "[INFO]:-Total Database segments = $TOTAL_SEG" 1
- LOG_MSG "[INFO]:-Trusted shell = $TRUSTED_SHELL" 1
- ((NUM_QES=${#MACHINE_LIST[*]}))
- LOG_MSG "[INFO]:-Number segment hosts = $NUM_QES" 1
- LOG_MSG "[INFO]:----------------------------------------" 1
- LOG_MSG "[INFO]:-Greenplum Primary Segment Configuration" 1
- LOG_MSG "[INFO]:----------------------------------------" 1
- for I in "${QE_PRIMARY_ARRAY[@]}"
- do
- if [ $MIRRORING -ne 0 ]; then
- TXT=`$ECHO $I|$AWK -F"~" '{print $1" \t"$3" \t"$2" \t"$4" \t"$5" \t"$6}'`
- else
- TXT=`$ECHO $I|$AWK -F"~" '{print $1" \t"$3" \t"$2" \t"$4" \t"$5}'`
- fi
- LOG_MSG "[INFO]:-$TXT" 1
- done
- if [ $MIRRORING -ne 0 ]; then
- LOG_MSG "[INFO]:---------------------------------------" 1
- LOG_MSG "[INFO]:-Greenplum Mirror Segment Configuration" 1
- LOG_MSG "[INFO]:---------------------------------------" 1
- for I in "${QE_MIRROR_ARRAY[@]}"
- do
- TXT=`$ECHO $I|$AWK -F"~" '{print $1" \t"$3" \t"$2" \t"$4" \t"$5" \t"$6}'`
- LOG_MSG "[INFO]:-$TXT" 1
- done
- fi
-
- GET_REPLY "Continue with Greenplum creation"
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-SET_VAR () {
- #
- # MPP-13617: If segment contains a ~, we assume ~ is the field delimiter.
- # Otherwise we assume : is the delimiter. This allows us to easily
- # handle IPv6 addresses which may contain a : by using a ~ as a delimiter.
- #
- I=$1
- case $I in
- *~*)
- S="~"
- ;;
- *)
- S=":"
- ;;
- esac
- GP_HOSTADDRESS=`$ECHO $I|$CUT -d$S -f1`
- GP_PORT=`$ECHO $I|$CUT -d$S -f2`
- GP_DIR=`$ECHO $I|$CUT -d$S -f3`
- GP_DBID=`$ECHO $I|$CUT -d$S -f4`
- GP_CONTENT=`$ECHO $I|$CUT -d$S -f5`
- GP_REPLICATION_PORT=`$ECHO $I|$CUT -d$S -f6`
-}
-
-CREATE_QD_DB () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Building the Master instance database, please wait..." 1
- SET_VAR $QD_PRIMARY_ARRAY
- LOG_MSG "[INFO]:-Initializing Master Postgres instance $GP_DIR"
- $EXPORT_LIB_PATH
-
- #
- # note: is_filerep_mirrored is no because the QD is not mirrored by filerep right now (standby master works differently)
- #
-
- if [ x"" != x"$LCCOLLATE" ]; then
- LC_COLLATE_SETTING="--lc-collate=$LCCOLLATE"
- fi
-
- if [ x"" != x"$LCCTYPE" ]; then
- LC_CTYPE_SETTING="--lc-ctype=$LCCTYPE"
- fi
-
- if [ x"" != x"$LCMESSAGES" ]; then
- LC_MESSAGES_SETTING="--lc-messages=$LCMESSAGES"
- fi
-
- if [ x"" != x"$LCMONETARY" ]; then
- LC_MONETARY_SETTING="--lc-monetary=$LCMONETARY"
- fi
-
- if [ x"" != x"$LCNUMERIC" ]; then
- LC_NUMERIC_SETTING="--lc-numeric=$LCNUMERIC"
- fi
-
- if [ x"" != x"$LCTIME" ]; then
- LC_TIME_SETTING="--lc-time=$LCTIME"
- fi
-
- LC_ALL_SETTINGS=" $LC_COLLATE_SETTING $LC_CTYPE_SETTING $LC_MESSAGES_SETTING $LC_MONETARY_SETTING $LC_NUMERIC_SETTING $LC_TIME_SETTING"
-
-
- # build initdb command, capturing output in ${GP_DIR}.initdb
- cmd="$INITDB"
- cmd="$cmd -E $ENCODING"
- cmd="$cmd -D $GP_DIR"
- cmd="$cmd --locale=$LOCALE_SETTING"
- cmd="$cmd $LC_ALL_SETTINGS"
- cmd="$cmd --max_connections=$MASTER_MAX_CONNECT"
- cmd="$cmd --shared_buffers=$MASTER_SHARED_BUFFERS"
- cmd="$cmd --backend_output=$GP_DIR.initdb"
-
- LOG_MSG "[INFO]:-Commencing local $cmd"
- $cmd >> $LOG_FILE 2>&1
- RETVAL=$?
-
- # if there was an error, copy ${GP_DIR}.initdb to the log
- if [ $RETVAL -ne 0 ]; then
- $CAT ${GP_DIR}.initdb >> $LOG_FILE
- fi
- $RM -f ${GP_DIR}.initdb
- if [ $RETVAL -ne 0 ]; then
- ERROR_EXIT "[FATAL]:- Command $cmd failed with error status $RETVAL, see log file $LOG_FILE for more detail" 2
- fi
-
- BACKOUT_COMMAND "if [ -d $GP_DIR ]; then $RM -Rf $GP_DIR; fi"
- BACKOUT_COMMAND "$ECHO Removing Master data directory files"
- LOG_MSG "[INFO]:-Completed Master instance initialization"
- $ECHO "#Greenplum specific configuration parameters for Master instance database" >> ${GP_DIR}/$PG_CONF
- $ECHO "#------------------------------------------------------------------------" >> ${GP_DIR}/$PG_CONF
- LOG_MSG "[INFO]:-Setting the Master port to $GP_PORT"
- ED_PG_CONF ${GP_DIR}/$PG_CONF "$PORT_TXT" port=$GP_PORT 0
- ERROR_CHK $? "set Master port=$GP_PORT in $PG_CONF" 2
- LOG_MSG "[INFO]:-Completed setting the Master port to $MASTER_PORT"
- LOG_MSG "[INFO]:-Setting Master logging option"
- ED_PG_CONF ${GP_DIR}/$PG_CONF "$LOG_STATEMENT_TXT" log_statement=all 0
- ERROR_CHK $? "set log_statement=all in ${GP_DIR}/$PG_CONF" 1
- LOG_MSG "[INFO]:-Setting Master instance check point segments"
- ED_PG_CONF ${GP_DIR}/$PG_CONF "$CHKPOINT_SEG_TXT" "checkpoint_segments=$CHECK_POINT_SEGMENTS" 0
- ERROR_CHK $? "set checkpoint_segments=$CHECK_POINT_SEGMENTS in ${GP_DIR}/$PG_CONF" 1
-
- if [ x"" != x"$KERBEROS_KEYFILE" ] ; then
- ED_PG_CONF ${GP_DIR}/$PG_CONF "$KERBEROS_KEYFILE_TXT" "krb_server_keyfile='$KERBEROS_KEYFILE'" 0
- ERROR_CHK $? "set krb_server_keyfile=$KERBEROS_KEYFILE in ${GP_DIR}/$PG_CONF" 1
- fi
- if [ xoff != x"$ENABLE_SECURE_FILESYSTEM" ] ; then
- ED_PG_CONF ${GP_DIR}/$PG_CONF "$ENABLE_SECURE_FILESYSTEM_TXT" "enable_secure_filesystem=$ENABLE_SECURE_FILESYSTEM" 0
- ERROR_CHK $? "set enable_secure_filesystem=$ENABLE_SECURE_FILESYSTEM in ${GP_DIR}/$PG_CONF" 1
- fi
- if [ x"" != x"$PG_CONF_ADD_FILE" ]; then
- LOG_MSG "[INFO]:-Processing additional configuration parameters"
- for NEW_PARAM in `$CAT $PG_CONF_ADD_FILE|$TR -s ' '|$TR -d ' '|$GREP -v "^#"`
- do
- LOG_MSG "[INFO]:-Adding config $NEW_PARAM to Master"
- SEARCH_TXT=`$ECHO $NEW_PARAM |$CUT -d"=" -f1`
- ED_PG_CONF ${GP_DIR}/$PG_CONF $SEARCH_TXT $NEW_PARAM 0
- ERROR_CHK $? "set $NEW_PARAM ${GP_DIR}/$PG_CONF" 1
- done
- fi
- LOG_MSG "[INFO]:-Adding gp_dumpall access to $PG_HBA for master host"
- BUILD_MASTER_PG_HBA_FILE $GP_DIR
- LOG_MSG "[INFO]:-Creating perfmon directories and configuration file"
- BUILD_PERFMON $GP_DIR
- ERROR_CHK $? "create perfmon directories and configuration file" 1
-
- LOG_MSG "[INFO]:-Creating temporary directories for master"
- for DIR in "${TEMP_DIRECTORY_LIST[@]}"
- do
- temp_master_dir="${DIR}/${SEG_PREFIX}-1"
- LOG_MSG "[INFO]:-create temporary ${tmp_seg_dir}"
- BACKOUT_COMMAND "$ECHO \"Remove temporary directory: ${temp_master_dir}\""
- BACKOUT_COMMAND "$RM -rf ${temp_master_dir}"
- $MKDIR $temp_master_dir >> $LOG_FILE 2>&1
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Could not create directory ${temp_master_dir}. Please check your configuration." 2
- fi
- $ECHO "${temp_master_dir}" >> "${GP_DIR}/${GP_TEMP_DIRECTORIES_FILE}"
- done
-
- LOG_MSG "[INFO]:-Starting the Master in admin mode" 1
- export PGPORT=$GP_PORT;$PG_CTL -w -l $GP_DIR/pg_log/startup.log -D $GP_DIR -o "-i -p $GP_PORT -c gp_role=utility -M master -b -1 -C -1 -z 0 -m" start >> /dev/null 2>&1
- RET_TEXT="`$PG_CTL status -D $GP_DIR`"
- RUNNING=`$ECHO $RET_TEXT|$EGREP -c "not running|neither"`
- if [ $RUNNING -ne 0 ]; then
- $CAT ${GP_DIR}.log|$TEE -a $LOG_FILE
- ERROR_EXIT "[FATAL]:-Failed to start the Master database in admin mode" 2
- fi
- BACKOUT_COMMAND "$RM -f /tmp/.s.PGSQL.${GP_PORT}*"
- BACKOUT_COMMAND "$ECHO \"Removing Master lock files\""
- BACKOUT_COMMAND "$RM -f ${GP_DIR}.log"
- BACKOUT_COMMAND "$ECHO Removing Master log file"
- BACKOUT_COMMAND "if [ -d $GP_DIR ]; then $EXPORT_LIB_PATH;export PGPORT=$GP_PORT; $PG_CTL -D $GP_DIR stop; fi"
- BACKOUT_COMMAND "$ECHO \"Stopping Master instance\""
- LOG_MSG "[INFO]:-Completed starting the Master in admin mode"
- $SLEEP 2
- GP_HOSTNAME=`HOST_LOOKUP $GP_HOSTADDRESS`
- if [ x"$GP_HOSTNAME" = x"__lookup_of_hostname_failed__" ]; then
- ERROR_EXIT "[FATAL]:-Hostname lookup for host $GP_HOSTADDRESS failed." 2
- fi
- PING_HOST $GP_HOSTNAME
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Could not establish connection to hostname $GP_HOSTNAME. Please check your configuration." 2
- fi
- UPDATE_GPCONFIG $GP_PORT $GP_DBID $GP_CONTENT $GP_HOSTNAME $GP_HOSTADDRESS $GP_PORT $GP_DIR p $GP_REPLICATION_PORT
- LOAD_QE_SYSTEM_DATA $DEFAULTDB
- SET_VAR $QD_PRIMARY_ARRAY
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-# returns hostname for given address or "__lookup_of_hostname_failed__" if hostname not found
-HOST_LOOKUP() {
- res=`echo $1 | $GPHOSTCACHELOOKUP`
- err_index=`echo $res | awk '{print index($0,"__lookup_of_hostname_failed__")}'`
- if [ $err_index -ne 0 ]; then
- echo "__lookup_of_hostname_failed__"
- else
- echo $res
- fi
-}
-
-UPDATE_GPCONFIG () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- MASTER_PORT=$1
- U_DBID=$2
- U_CONTENT=$3
- U_HOSTNAME=$4
- U_ADDRESS=$5
- U_PORT=$6
- U_DIR=$7
- U_ROLE=$8
- if [ $9 -eq 0 ]; then
- U_REPLICATION_PORT=null
- else
- U_REPLICATION_PORT=$9
- fi
-
- if [ $MIRRORING -ne 1 ]; then
- U_REPLICATION_PORT=null
- fi
-
- U_DB=$DEFAULTDB
- CHK_COUNT=`env PGOPTIONS="-c gp_session_role=utility" $PSQL -p $MASTER_PORT -d "$U_DB" -A -t -c "SELECT count(*) FROM $GP_CONFIG_TBL WHERE content=${U_CONTENT} AND preferred_role='${U_ROLE}';" 2>/dev/null` >> $LOG_FILE 2>&1
- ERROR_CHK $? "obtain psql count Master $GP_CONFIG_TBL" 2
- if [ $CHK_COUNT -eq 0 ]; then
- LOG_MSG "[INFO]:-Adding $U_CONTENT on $U_HOSTNAME $U_DIR to system configuration table"
- env PGOPTIONS="-c gp_session_role=utility" $PSQL -p $MASTER_PORT -d "$U_DB" -c "INSERT INTO $GP_CONFIG_TBL (dbid, content, role, preferred_role, mode, status, hostname, address, port, replication_port) VALUES (${U_DBID}, ${U_CONTENT}, '${U_ROLE}', '${U_ROLE}', 's', 'u', '${U_HOSTNAME}', '${U_ADDRESS}', ${U_PORT}, ${U_REPLICATION_PORT});" >> $LOG_FILE 2>&1
- ERROR_CHK $? "add $U_CONTENT on $U_HOSTNAME to Master gp_segment_configuration" 2
-
- LOG_MSG "[INFO]:-Adding $U_CONTENT on $U_HOSTNAME $U_DIR to Master gp_filespace_entry"
- env PGOPTIONS="-c gp_session_role=utility" $PSQL -p $MASTER_PORT -d "$U_DB" -c "insert into pg_filespace_entry (fsefsoid, fsedbid, fselocation) values (${PG_SYSTEM_FILESPACE}, ${U_DBID}, '${U_DIR}');" >> $LOG_FILE 2>&1
- ERROR_CHK $? "add $U_CONTENT on $U_HOSTNAME $U_DIR to Master pg_filespace_entry" 2
- else
- LOG_MSG "[INFO]:-Content $U_CONTENT already exists in gp_segment_configuration system table"
- fi
- if [ $U_CONTENT -eq -1 ]
- then
- MAKE_CONTENTNUM_FILE $CONTENT_COUNT $U_DIR
- MAKE_DBID_FILE $U_DBID $U_HOSTNAME $U_DIR
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-
-LOAD_QE_SYSTEM_DATA () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $QD_PRIMARY_ARRAY
- TARGET_DB=$1
- QD_DBNAME=$DEFAULTDB
- for I in "${QE_PRIMARY_ARRAY[@]}"
- do
- SET_VAR $I
- LOG_MSG "[INFO]:-Adding segment $GP_HOSTADDRESS to Master system tables"
- GP_HOSTNAME=`HOST_LOOKUP $GP_HOSTADDRESS`
- if [ x"$GP_HOSTNAME" = x"__lookup_of_hostname_failed__" ]; then
- ERROR_EXIT "[FATAL]:-Hostname lookup for host $GP_HOSTADDRESS failed." 2
- fi
- PING_HOST $GP_HOSTNAME
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Could not establish connection to hostname $GP_HOSTNAME. Please check your configuration." 2
- fi
- UPDATE_GPCONFIG $MASTER_PORT $GP_DBID $GP_CONTENT $GP_HOSTNAME $GP_HOSTADDRESS $GP_PORT $GP_DIR p $GP_REPLICATION_PORT
- LOG_MSG "[INFO]:-Successfully added segment $GP_HOSTADDRESS to Master system tables"
- done
- if [ $MIRRORING -eq 1 ]; then
- for I in "${QE_MIRROR_ARRAY[@]}"
- do
- SET_VAR $I
- LOG_MSG "[INFO]:-Adding segment $GP_HOSTADDRESS, $GP_DBID, $GP_DIR to Master system tables as mirror"
- GP_HOSTNAME=`HOST_LOOKUP $GP_HOSTADDRESS`
- if [ x"$GP_HOSTNAME" = x"__lookup_of_hostname_failed__" ]; then
- ERROR_EXIT "[FATAL]:-Hostname lookup for host $GP_HOSTADDRESS failed." 2
- fi
- PING_HOST $GP_HOSTNAME
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Could not establish connection to hostname $GP_HOSTNAME. Please check your configuration." 2
- fi
- UPDATE_GPCONFIG $MASTER_PORT $GP_DBID $GP_CONTENT $GP_HOSTNAME $GP_HOSTADDRESS $GP_PORT $GP_DIR m $GP_REPLICATION_PORT
- LOG_MSG "[INFO]:-Successfully added segment $GP_HOSTADDRESS to Master system tables as mirror"
- done
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_QES_PRIMARY () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- #
- # PARALLEL BUILD OF PRIMARIES
- #
- LOG_MSG "[INFO]:-Commencing parallel build of primary segment instances" 1
- BATCH_LIMIT=${#QE_PRIMARY_ARRAY[@]}
- PARALLEL_SETUP $PARALLEL_STATUS_FILE
- for I in "${QE_PRIMARY_ARRAY[@]}"
- do
- export PG_CONF_ADD_FILE
- export STANDBY_HOSTNAME
- export ENCODING
- export LOCALE_SETTING
- export LC_ALL_SETTINGS
- export BACKOUT_FILE
- export LOG_FILE
- export PARALLEL_STATUS_FILE
- export TOTAL_SEG
- export ARRAY_NAME
- export CHECK_POINT_SEGMENTS
- export KERBEROS_KEYFILE
- export ENABLE_SECURE_FILESYSTEM
- export QE_MAX_CONNECT
- export QE_SHARED_BUFFERS
- export SEG_PREFIX
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- FLAG=""
- if [ x"" != x"$PG_CONF_ADD_FILE" ] ; then
- FLAG="-p $PG_CONF_ADD_FILE"
- fi
-
- HAS_MIRRORS_OPTION=
- if [ $MIRRORING -ne 0 ]; then
- HAS_MIRRORS_OPTION=yes
- else
- HAS_MIRRORS_OPTION=no
- fi
-
- # create temp directory with SEG_PREFIX.
- TEMP_DIRECTORY_COMPACT_LIST=(`$ECHO ${TEMP_DIRECTORY_LIST[@]} | $TR ' ' ','`)
-
- $GPCREATESEG $FLAG $$ 1 $I IS_PRIMARY "$TEMP_DIRECTORY_COMPACT_LIST" $SEG_PREFIX $HAS_MIRRORS_OPTION $INST_COUNT $LOG_FILE \
-`$ECHO ${MASTER_IP_ADDRESS[@]}|$TR ' ' '~'` \
-`$ECHO ${STANDBY_IP_ADDRESS[@]}|$TR ' ' '~'` &
- PARALLEL_COUNT $BATCH_LIMIT $BATCH_DEFAULT
- done
- PARALLEL_SUMMARY_STATUS_REPORT $PARALLEL_STATUS_FILE
- if [ $REPORT_FAIL -ne 0 ];then
- $CAT $PARALLEL_STATUS_FILE >> $LOG_FILE
- fi
- $RM -f $PARALLEL_STATUS_FILE
-
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_QES_MIRROR () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Commencing parallel build of mirror segment instances" 1
- BATCH_LIMIT=${#QE_MIRROR_ARRAY[@]}
-
- # MPP-13617: If segment contains a ~, we assume ~ is the field delimiter.
- # Otherwise we assume : is the delimiter. This allows us to easily
- # handle IPv6 addresses which may contain a : by using a ~ as a delimiter.
- #
- case `$ECHO ${QE_PRIMARY_ARRAY[@]}` in
- *~*)
- S="~"
- ;;
- *)
- S=":"
- ;;
- esac
-
- REORDERING=(`$ECHO ${QE_PRIMARY_ARRAY[@]}|$TR ' ' '\n'|$SORT -t$S -k5,5|$TR '\n' ' '`)
- PRIMARIES_ORDERED_BY_CONTENT_ID=(${REORDERING[@]})
-
- REORDERING=(`$ECHO ${QE_MIRROR_ARRAY[@]}|$TR ' ' '\n'|$SORT -t$S -k5,5|$TR '\n' ' '`)
- MIRRORS_ORDERED_BY_CONTENT_ID=(${REORDERING[@]})
-
- PARALLEL_SETUP $PARALLEL_STATUS_FILE
- for ((I_INDEX=0; I_INDEX < $CONTENT_COUNT; I_INDEX++))
- do
- export PG_CONF_ADD_FILE
- export STANDBY_HOSTNAME
- export ENCODING
- export LOCALE_SETTING
- export BACKOUT_FILE
- export LOG_FILE
- export PARALLEL_STATUS_FILE
- export TOTAL_SEG
- export ARRAY_NAME
- export QE_MAX_CONNECT
- export QE_SHARED_BUFFERS
- export CHECK_POINT_SEGMENTS
- export KERBEROS_KEYFILE
- export ENABLE_SECURE_FILESYSTEM
- export SEG_PREFIX
- if [ $DEBUG_LEVEL -eq 0 ] && [ x"" != x"$VERBOSE" ];then $NOLINE_ECHO ".\c";fi
- FLAG=""
- if [ x"" != x"$PG_CONF_ADD_FILE" ] ; then
- FLAG="-p $PG_CONF_ADD_FILE"
- fi
-
- $GPCREATESEG $FLAG $$ 1 ${MIRRORS_ORDERED_BY_CONTENT_ID[$I_INDEX]} ${PRIMARIES_ORDERED_BY_CONTENT_ID[$I_INDEX]} no $INST_COUNT $LOG_FILE \
-`$ECHO ${MASTER_IP_ADDRESS[@]}|$TR ' ' '~'` \
-`$ECHO ${STANDBY_IP_ADDRESS[@]}|$TR ' ' '~'` &
- PARALLEL_COUNT $BATCH_LIMIT $BATCH_DEFAULT
- done
- PARALLEL_SUMMARY_STATUS_REPORT $PARALLEL_STATUS_FILE
- if [ $REPORT_FAIL -ne 0 ];then
- $CAT $PARALLEL_STATUS_FILE >> $LOG_FILE
- fi
- $RM -f $PARALLEL_STATUS_FILE
-
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-
-STOP_QD_PRODUCTION () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Restarting the Greenplum instance in production mode" 1
- if [ -f $GPSTOP ]; then
- GPSTOP_OPTS=$(OUTPUT_LEVEL_OPTS)
- export MASTER_DATA_DIRECTORY=${MASTER_DIRECTORY}/${SEG_PREFIX}-1
- $GPSTOP -a -i -m -d $MASTER_DATA_DIRECTORY $GPSTOP_OPTS
- RETVAL=$?
- case $RETVAL in
- 0 ) LOG_MSG "[INFO]:-Successfully shutdown the new Greenplum instance" ;;
- 1 ) LOG_MSG "[WARN]:-Non fatal error from Greenplum instance shutdown, check log files, will continue"
- EXIT_STATUS=1 ;;
- * ) ERROR_EXIT "[FATAL]:-Failed to stop new Greenplum instance, check log file" 2
- esac
- else
- ERROR_EXIT "[FATAL]:-$GPSTOP not located" 2
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_STANDBY_QD () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- if [ ! -f $INIT_STANDBY_PROG ]; then
- LOG_MSG "[WARN]:-Unable to locate $INIT_STANDBY_PROG, hence unable to initialize standby master $STANDBY_HOSTNAME"
- EXIT_STATUS=1
- else
- LOG_MSG "[INFO]:-Starting initialization of standby master $STANDBY_HOSTNAME" 1
- export MASTER_DATA_DIRECTORY=${MASTER_DIRECTORY}/${SEG_PREFIX}-1;$INIT_STANDBY_PROG -s $STANDBY_HOSTNAME -a
- RETCODE=$?
- case $RETCODE in
- 0) LOG_MSG "[INFO]:-Successfully completed standby master initialization" 1 ;;
- 1) LOG_MSG "[WARN]:-Non-fatal issue with standby master initialization, check gpstate -f output" 1 ;;
- *) ERROR_EXIT "[FATAL]:-Initialization of standby master failed"
- esac
- BACKOUT_COMMAND "$TRUSTED_SHELL ${STANDBY_HOSTNAME} \"$RM -Rf ${QD_DIR}\""
- BACKOUT_COMMAND "$ECHO \"Removing standby directory ${QD_DIR} on $STANDBY_HOSTNAME\""
- BACKOUT_COMMAND "$TRUSTED_SHELL $STANDBY_HOSTNAME \"if [ -d $GP_DIR ]; then ${EXPORT_LIB_PATH};export PGPORT=${MASTER_PORT}; $PG_CTL -w -D ${MASTER_DIRECTORY}/${SEG_PREFIX}-1 -o \"-i -p ${MASTER_PORT}\" -m immediate stop; fi\""
- BACKOUT_COMMAND "$ECHO \"Stopping standby instance on $STANDBY_HOSTNAME\""
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-START_QD_PRODUCTION () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- if [ -f $GPSTART ]; then
- GPSTART_OPTS=$(OUTPUT_LEVEL_OPTS)
- export MASTER_DATA_DIRECTORY=${MASTER_DIRECTORY}/${SEG_PREFIX}-1
- $GPSTART -a -d $MASTER_DATA_DIRECTORY $GPSTART_OPTS
-
- if [ $? -eq 0 ];then
- LOG_MSG "[INFO]:-Successfully started new Greenplum instance"
- else
-
- # this text is duplicated below
- LOG_MSG "[WARN]:" 1
- LOG_MSG "[WARN]:-Failed to start Greenplum instance; review gpstart output to" 1
- LOG_MSG "[WARN]:- determine why gpstart failed and reinitialize cluster after resolving" 1
- LOG_MSG "[WARN]:- issues. Not all initialization tasks have completed so the cluster" 1
- LOG_MSG "[WARN]:- should not be used." 1
-
- LOG_MSG "[WARN]:-gpinitsystem will now try to stop the cluster" 1
- LOG_MSG "[WARN]:" 1
- if [ -f $GPSTOP ]; then
- GPSTOP_OPTS=$(OUTPUT_LEVEL_OPTS)
- export MASTER_DATA_DIRECTORY=${MASTER_DIRECTORY}/${SEG_PREFIX}-1
- $GPSTOP -a -i -d $MASTER_DATA_DIRECTORY $GPSTOP_OPTS
-
- RETVAL=$?
- case $RETVAL in
- 0 ) LOG_MSG "[INFO]:-Successfully shutdown the Greenplum instance" 1;;
- 1 ) LOG_MSG "[WARN]:-Non fatal error from Greenplum instance shutdown" 1;;
- * ) ERROR_EXIT "[WARN]:-Failed to stop new Greenplum instance" 2
- esac
- else
- LOG_MSG "[WARN]:-$GPSTOP not located" 1
- fi
-
- # this text is duplicated above
- LOG_MSG "[WARN]:" 1
- LOG_MSG "[WARN]:-Failed to start Greenplum instance; review gpstart output to" 1
- LOG_MSG "[WARN]:- determine why gpstart failed and reinitialize cluster after resolving" 1
- LOG_MSG "[WARN]:- issues. Not all initialization tasks have completed so the cluster" 1
- LOG_MSG "[WARN]:- should not be used." 1
- LOG_MSG "[WARN]:" 1
- ERROR_EXIT "[FATAL]: starting new instance failed;" 2
- fi
- else
- ERROR_EXIT "[FATAL]:-$GPSTART not located" 2
- fi
- LOG_MSG "[INFO]:-Completed restart of Greenplum instance in production mode" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-SET_GP_USER_PW () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- $PSQL -p $MASTER_PORT -d "$DEFAULTDB" -c"alter user $USER_NAME password '$GP_PASSWD';" >> $LOG_FILE 2>&1
- ERROR_CHK $? "update Greenplum superuser password" 1
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_DATABASE () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $QD_PRIMARY_ARRAY
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"create database \"${DATABASE_NAME}\" tablespace \"$GP_TABLESPACE_NAME\";" >> $LOG_FILE 2>&1
- ERROR_CHK $? "create database $DATABASE_NAME" 2
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_DFS_TABLESPACE () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $QD_PRIMARY_ARRAY
-
- LOG_MSG "[INFO]:-Prepare to create filespace on $DFS_NAME" 1
-
- # create filespace statement
- LOG_MSG "[INFO]:-Create filespace $GP_FILESPACE_NAME" 1
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"create filespace \"$GP_FILESPACE_NAME\" on \"${DFS_NAME}\" ('${DFS_URL}/${SEG_PREFIX}');" >> $LOG_FILE 2>&1
- CHECK_CREATE_DFS_ERROR
-
- # create tablespace statement
- LOG_MSG "[INFO]:-Create tablespace $GP_TABLESPACE_NAME" 1
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"create tablespace \"$GP_TABLESPACE_NAME\" filespace \"$GP_FILESPACE_NAME\";" >> $LOG_FILE 2>&1
- CHECK_CREATE_DFS_ERROR
-
- # update template0 tablespace
- LOG_MSG "[INFO]:-Update template0 tablespace" 1
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"SET allow_system_table_mods='dml';UPDATE pg_database SET dat2tablespace = (SELECT oid FROM pg_tablespace WHERE spcname = '$GP_TABLESPACE_NAME') WHERE datname = '$DEFAULTDB';" >> $LOG_FILE 2>&1
- CHECK_CREATE_DFS_ERROR
-
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CHECK_CREATE_DFS_ERROR () {
- if [ $? -ne 0 ];then
- # this text is duplicated below
- LOG_MSG "[WARN]:" 1
- LOG_MSG "[WARN]:-Failed to create dfs filespace; review gpinitsystem output to" 1
- LOG_MSG "[WARN]:- determine why this step failed and reinitialize cluster after resolving" 1
- LOG_MSG "[WARN]:- issues. Not all initialization tasks have completed so the cluster" 1
- LOG_MSG "[WARN]:- should not be used." 1
-
- LOG_MSG "[WARN]:-gpinitsystem will now try to stop the cluster" 1
- LOG_MSG "[WARN]:" 1
-
- if [ -f $GPSTOP ]; then
- GPSTOP_OPTS=$(OUTPUT_LEVEL_OPTS)
- export MASTER_DATA_DIRECTORY=${MASTER_DIRECTORY}/${SEG_PREFIX}-1
- $GPSTOP -a -i -d $MASTER_DATA_DIRECTORY $GPSTOP_OPTS
-
- RETVAL=$?
- case $RETVAL in
- 0 ) LOG_MSG "[INFO]:-Successfully shutdown the Greenplum instance" 1;;
- 1 ) LOG_MSG "[WARN]:-Non fatal error from Greenplum instance shutdown" 1;;
- * ) ERROR_EXIT "[WARN]:-Failed to stop new Greenplum instance" 2
- esac
- else
- LOG_MSG "[WARN]:-$GPSTOP not located" 1
- fi
-
- # this text is duplicated above
- LOG_MSG "[WARN]:" 1
- LOG_MSG "[WARN]:-Failed to create dfs filespace; review gpinitsystem output to" 1
- LOG_MSG "[WARN]:- determine why this step failed and reinitialize cluster after resolving" 1
- LOG_MSG "[WARN]:- issues. Not all initialization tasks have completed so the cluster" 1
- LOG_MSG "[WARN]:- should not be used." 1
- LOG_MSG "[WARN]:" 1
- ERROR_EXIT "[FATAL]: create dfs filespace failed;" 2
- fi
-}
-
-CREATE_TEMPLATE1 () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $QD_PRIMARY_ARRAY
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"create database \"template1\" tablespace \"$GP_TABLESPACE_NAME\" template template0;" >> $LOG_FILE 2>&1
- ERROR_CHK $? "create database $DATABASE_NAME" 2
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't' WHERE datname = 'template1';" >> $LOG_FILE 2>&1
- ERROR_CHK $? "update database $DATABASE_NAME" 2
- #$PSQL -p $GP_PORT -d "$DEFAULTDB" -c"REVOKE CREATE,TEMPORARY ON DATABASE template0 FROM public;" >> $LOG_FILE 2>&1
- #ERROR_CHK $? "revoke privileges database $DATABASE_NAME" 2
- #$PSQL -p $GP_PORT -d "$DEFAULTDB" -c"REVOKE CREATE,TEMPORARY ON DATABASE template1 FROM public;" >> $LOG_FILE 2>&1
- #ERROR_CHK $? "revoke privileges database $DATABASE_NAME" 2
- #$PSQL -p $GP_PORT -d "$DEFAULTDB" -c"VACUUM FULL pg_database;" >> $LOG_FILE 2>&1
- #ERROR_CHK $? "vacuum database $DATABASE_NAME" 2
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-CREATE_POSTGRES () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- SET_VAR $QD_PRIMARY_ARRAY
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"create database \"postgres\" tablespace \"$GP_TABLESPACE_NAME\";" >> $LOG_FILE 2>&1
- ERROR_CHK $? "create database $DATABASE_NAME" 2
- $PSQL -p $GP_PORT -d "$DEFAULTDB" -c"SET allow_system_table_mods='dml';UPDATE pg_database SET datistemplate = 't' WHERE datname = 'postgres';" >> $LOG_FILE 2>&1
- ERROR_CHK $? "update database $DATABASE_NAME" 2
- #$PSQL -p $GP_PORT -d "$DEFAULTDB" -c"VACUUM FULL pg_database;" >> $LOG_FILE 2>&1
- #ERROR_CHK $? "vacuum database $DATABASE_NAME" 2
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-
-SCAN_LOG () {
- LOG_MSG "[INFO]:-Start Function $FUNCNAME"
- LOG_MSG "[INFO]:-Scanning utility log file for any warning messages" 1
- SCAN_STRING="\[WARN\]|invalid|warning:|fatal|error"
- if [ `$EGREP -i "$SCAN_STRING" $LOG_FILE|$GREP -v "\[INFO\]"|$WC -l` -ne 0 ];then
- LOG_MSG "[WARN]:-*******************************************************" 1
- LOG_MSG "[WARN]:-Scan of log file indicates that some warnings or errors" 1
- LOG_MSG "[WARN]:-were generated during the array creation" 1
- LOG_MSG "[INFO]:-Please review contents of log file" 1
- LOG_MSG "[INFO]:-$LOG_FILE" 1
- LOG_MSG "[INFO]:-To determine level of criticality" 1
- if [ `$GREP -ci "\[INFO]:-Start Main" $LOG_FILE` -gt 1 ];then
- LOG_MSG "[INFO]:-These messages could be from a previous run of the utility" 1
- LOG_MSG "[INFO]:-that was called today!" 1
- fi
- LOG_MSG "[WARN]:-*******************************************************" 1
- EXIT_STATUS=1
- else
- LOG_MSG "[INFO]:-Log file scan check passed" 1
- fi
- LOG_MSG "[INFO]:-End Function $FUNCNAME"
-}
-
-DUMP_OUTPUT_CONFIG () {
- $ECHO "ARRAY_NAME=\"$ARRAY_NAME\"" > $OUTPUT_CONFIG
- if [ x"" != x"$IP_ALLOW" ] ; then
- $ECHO "IP_ALLOW=$IP_ALLOW" >> $OUTPUT_CONFIG
- fi
- if [ x"" != x"$TRUSTED_SHELL" ] ; then
- $ECHO "TRUSTED_SHELL=$TRUSTED_SHELL" >> $OUTPUT_CONFIG
- fi
- if [ x"" != x"$CHECK_POINT_SEGMENTS" ] ; then
- $ECHO "CHECK_POINT_SEGMENTS=$CHECK_POINT_SEGMENTS" >> $OUTPUT_CONFIG
- fi
- if [ x"" != x"$KERBEROS_KEYFILE" ] ; then
- $ECHO "KERBEROS_KEYFILE=$KERBEROS_KEYFILE" >> $OUTPUT_CONFIG
- fi
- if [ x"" != x"$ENABLE_SECURE_FILESYSTEM" ] ; then
- $ECHO "ENABLE_SECURE_FILESYSTEM=$ENABLE_SECURE_FILESYSTEM" >> $OUTPUT_CONFIG
- fi
- if [ x"" != x"$ENCODING" ] ; then
- $ECHO "ENCODING=$ENCODING" >> $OUTPUT_CONFIG
- fi
-
- $ECHO "SEG_PREFIX=$SEG_PREFIX" >> $OUTPUT_CONFIG
-
- $ECHO "QD_PRIMARY_ARRAY=$QD_PRIMARY_ARRAY" >> $OUTPUT_CONFIG
- $ECHO "declare -a PRIMARY_ARRAY=(" >> $OUTPUT_CONFIG
- for qe in ${QE_PRIMARY_ARRAY[@]}
- do
- $ECHO "$qe" >> $OUTPUT_CONFIG
- done
- $ECHO ")" >> $OUTPUT_CONFIG
- if [ $MIRRORING -ne 0 ] ; then
- $ECHO "declare -a MIRROR_ARRAY=(" >> $OUTPUT_CONFIG
- for qe in ${QE_MIRROR_ARRAY[@]}
- do
- $ECHO "$qe" >> $OUTPUT_CONFIG
- done
- $ECHO ")" >> $OUTPUT_CONFIG
- fi
-
-
-}
-
-READ_INPUT_CONFIG () {
- # Check that we have a non-zero configuration file
- CHK_FILE $INPUT_CONFIG
- if [ $EXISTS -ne 0 ]; then
- ERROR_EXIT "[FATAL]:-Problem with $INPUT_CONFIG file" 2
- fi
-
- # Make sure old CLUSTER_CONFIG settings are not hanging around.
- unset PORT_BASE SEG_PREFIX DATA_DIRECTORY
-
- # Validation
- if [ x"" != x"${MASTER_PORT}" ] ; then
- ERROR_EXIT "[FATAL]:-Problem with configuration. Cannot specify MASTER_PORT and QD_PRIMARY_ARRAY" 2
- fi
-
- if [ x"" != x"${MASTER_HOSTNAME}" ] ; then
- ERROR_EXIT "[FATAL]:-Problem with configuration file. Cannot specify MASTER_HOSTNAME and QD_PRIMARY_ARRAY" 2
- fi
-
- if [ x"" != x"${MASTER_DIRECTORY}" ] ; then
- ERROR_EXIT "[FATAL]:-Problem with configuration file. Cannot specify MASTER_DIRECTORY and QD_PRIMARY_ARRAY" 2
- fi
-
- # Make sure it is not a dos file with CTRL M at end of each line
- $CAT $INPUT_CONFIG|$SED -e 's/^M$//g' > $TMP_FILE
- $MV $TMP_FILE $INPUT_CONFIG
- LOG_MSG "[INFO]:-Dumping $INPUT_CONFIG to logfile for reference"
- $CAT $INPUT_CONFIG|$GREP -v "^#" >> $LOG_FILE
- LOG_MSG "[INFO]:-Completed $INPUT_CONFIG dump to logfile"
- # Source the cluster configuration file
- LOG_MSG "[INFO]:-Reading Greenplum configuration file $INPUT_CONFIG"
-
- . $INPUT_CONFIG
- SET_VAR $QD_PRIMARY_ARRAY
- MASTER_HOSTNAME=$GP_HOSTADDRESS
- MASTER_DIRECTORY=`$DIRNAME $GP_DIR`
- MASTER_PORT=$GP_PORT
- SEG_PREFIX=`$BASENAME $GP_DIR -1`
-
- MACHINE_LIST=()
- DATA_DIRECTORY=()
- CONTENT_COUNT=0
- for QE in ${PRIMARY_ARRAY[@]}
- do
- SET_VAR $QE
-
- DATA_DIRECTORY=(${DATA_DIRECTORY[@]} `$DIRNAME $GP_DIR`)
- MACHINE_LIST=(${MACHINE_LIST[@]} $GP_HOSTADDRESS)
-
- ((CONTENT_COUNT=$CONTENT_COUNT+1))
- done
-
- DATA_DIRECTORY=(`$ECHO ${DATA_DIRECTORY[@]} | $TR ' ' '\n' | $SORT | $TR '\n' ' '`)
-
- # HAWQ does not support mirroring.
- if [ x"" != x"${MIRROR_ARRAY}" ] ; then
- LOG_MSG "[WARN]:-HAWQ finds MIRROR_ARRAY variable in config file: $INPUT_CONFIG, mirroring config is not needed and is omitted"
- fi
- MIRROR_ARRAY=
-
- if [ x"" != x"${MIRROR_ARRAY}" ] ; then
- MIRRORING=0
- MIRROR_DATA_DIRECTORY=()
- for QE in ${MIRROR_ARRAY[@]}
- do
- SET_VAR $QE
-
- MIRROR_DATA_DIRECTORY=(${MIRROR_DATA_DIRECTORY[@]} `$DIRNAME $GP_DIR`)
- MACHINE_LIST=(${MACHINE_LIST[@]} $GP_HOSTADDRESS)
- done
-
- MIRROR_DATA_DIRECTORY=(`$ECHO ${MIRROR_DATA_DIRECTORY[@]} | $TR ' ' '\n' | $SORT | $TR '\n' ' '`)
- fi
-
- MACHINE_LIST=(`$ECHO ${MACHINE_LIST[@]} | $TR ' ' '\n' | $SORT -u | $TR '\n' ' '`)
- if [ `$ECHO ${MACHINE_LIST[@]}| $TR ' ' '\n' | $GREP -c "${MASTER_HOSTNAME}\$"` -gt 0 ]; then
- MACHINE_LIST=($MASTER_HOSTNAME `$ECHO ${MACHINE_LIST[@]} | $TR ' ' '\n' | $GREP -v "${MASTER_HOSTNAME}\$" | $TR '\n' ' '`)
- fi
-
- QE_PRIMARY_ARRAY=(${PRIMARY_ARRAY[@]})
- QE_MIRROR_ARRAY=(${MIRROR_ARRAY[@]})
- ((TOTAL_SEG=${#QE_PRIMARY_ARRAY[@]}))
- ((TOTAL_MIRRORS=${#MIRROR_ARRAY[@]}))
- MIRROR_TYPE=0
- MULTI_HOME=0
-
- if [ $TOTAL_MIRRORS -ne 0 ] ; then
- if [ $TOTAL_SEG -ne $TOTAL_MIRRORS ] ; then
- ERROR_EXIT "[FATAL]:-Problem with configuration file. Cannot specify different number of primary and mirror segments." 2
- fi
- fi
-}
-
-
-CHK_QE_ARRAY_PORT_RANGES () {
-
- #
- # calculate port ranges
- #
-
- MIN_PORT=1000000
- MIN_REPLICATION_PORT=100000000
- MAX_PORT=0
- MAX_REPLICATION_PORT=0
- for QE in ${QE_PRIMARY_ARRAY[@]}
- do
- SET_VAR $QE
- if [ $GP_PORT -lt $MIN_PORT ] ; then
- MIN_PORT=$GP_PORT
- fi
- if [ $GP_PORT -gt $MAX_PORT ] ; then
- MAX_PORT=$GP_PORT
- fi
- if [ $GP_REPLICATION_PORT -lt $MIN_REPLICATION_PORT ]; then
- MIN_REPLICATION_PORT=$GP_REPLICATION_PORT
- fi
- if [ $GP_REPLICATION_PORT -gt $MAX_REPLICATION_PORT ]; then
- MAX_REPLICATION_PORT=$GP_REPLICATION_PORT
- fi
- done
-
- PORT_BASE=$MIN_PORT
- REPLICATION_PORT_BASE=$MIN_REPLICATION_PORT
-
- if [ x"" != x"${QE_MIRROR_ARRAY}" ] ; then
- MIN_MIRROR_PORT=100000000
- MIN_MIRROR_REPLICATION_PORT=100000000
- MAX_MIRROR_PORT=0
- MAX_MIRROR_REPLICATION_PORT=0
- for QE in ${QE_MIRROR_ARRAY[@]}
- do
- SET_VAR $QE
- if [ $GP_PORT -lt $MIN_MIRROR_PORT ] ; then
- MIN_MIRROR_PORT=$GP_PORT
- fi
- if [ $GP_PORT -gt $MAX_MIRROR_PORT ] ; then
- MAX_MIRROR_PORT=$GP_PORT
- fi
- if [ $GP_REPLICATION_PORT -lt $MIN_MIRROR_REPLICATION_PORT ]; then
- MIN_MIRROR_REPLICATION_PORT=$GP_REPLICATION_PORT
- fi
- if [ $GP_REPLICATION_PORT -gt $MAX_MIRROR_REPLICATION_PORT ]; then
- MAX_MIRROR_REPLICATION_PORT=$GP_REPLICATION_PORT
- fi
- done
- fi
-
- MIRROR_PORT_BASE=$MIN_MIRROR_PORT
- MIRROR_REPLICATION_PORT_BASE=$MIN_MIRROR_REPLICATION_PORT
-
- #
- # now look for range conflicts
- #
-
- if CHK_OVERLAP $MASTER_PORT $MASTER_PORT $MIN_PORT $MAX_PORT; then
- ERROR_EXIT "[FATAL]:-MASTER_PORT overlaps with PORT_BASE." 2
- fi
-
- # Mirror configuration
- if [ $MIRROR_PORT_BASE ]; then
-
- if [ x"" = x"$REPLICATION_PORT_BASE" ]; then
- ERROR_EXIT "[FATAL]:-REPLICATION_PORT_BASE variable not set" 2
- fi
-
- if [ x"" = x"$MIRROR_REPLICATION_PORT_BASE" ]; then
- ERROR_EXIT "[FATAL]:-MIRROR_REPLICATION_PORT_BASE variable not set" 2
- fi
-
- if CHK_OVERLAP $MASTER_PORT $MASTER_PORT $MIN_MIRROR_PORT $MAX_MIRROR_PORT; then
- ERROR_EXIT "[FATAL]:-MASTER_PORT overlaps with MIRROR_PORT_BASE." 2
- fi
-
- if CHK_OVERLAP $MASTER_PORT $MASTER_PORT $MIN_REPLICATION_PORT $MAX_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-MASTER_PORT overlaps with REPLICATION_PORT_BASE." 2
- fi
-
- if CHK_OVERLAP $MASTER_PORT $MASTER_PORT $MIN_MIRROR_REPLICATION_PORT $MAX_MIRROR_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-MASTER_PORT overlaps with MIRROR_REPLICATION_PORT_BASE." 2
- fi
-
- if CHK_OVERLAP $MIN_PORT $MAX_PORT $MIN_MIRROR_PORT $MAX_MIRROR_PORT; then
- ERROR_EXIT "[FATAL]:-PORT_BASE AND MIRROR_PORT_BASE define overlapping ranges." 2
- fi
-
- if CHK_OVERLAP $MIN_PORT $MAX_PORT $MIN_REPLICATION_PORT $MAX_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-PORT_BASE AND REPLICATION_PORT_BASE define overlapping ranges." 2
- fi
-
- if CHK_OVERLAP $MIN_PORT $MAX_PORT $MIN_MIRROR_REPLICATION_PORT $MAX_MIRROR_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-PORT_BASE AND MIRROR_REPLICATION_PORT_BASE define overlapping ranges." 2
- fi
-
- if CHK_OVERLAP $MIN_MIRROR_PORT $MAX_MIRROR_PORT $MIN_REPLICATION_PORT $MAX_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-MIRROR_PORT_BASE AND REPLICATION_PORT_BASE define overlapping ranges." 2
- fi
-
- if CHK_OVERLAP $MIN_MIRROR_PORT $MAX_MIRROR_PORT $MIN_MIRROR_REPLICATION_PORT $MAX_MIRROR_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-MIRROR_PORT_BASE AND MIRROR_REPLICATION_PORT_BASE define overlapping ranges." 2
- fi
-
- if CHK_OVERLAP $MIN_REPLICATION_PORT $MAX_REPLICATION_PORT $MIN_MIRROR_REPLICATION_PORT $MAX_MIRROR_REPLICATION_PORT; then
- ERROR_EXIT "[FATAL]:-REPLICATION_PORT_BASE AND MIRROR_REPLICATION_PORT_BASE define overlapping ranges." 2
- fi
- fi
-
- # PORT_BASE
- if [ x"" = x"$PORT_BASE" ]; then
- ERROR_EXIT "[FATAL]:-PORT_BASE variable not set" 2
- fi
- QE_PORT=$PORT_BASE
-}
-
-
-
-LOAD_GP_TOOLKIT () {
- LOG_MSG "[INFO]:-Loading hawq_toolkit..." 1
- ROLNAME=`$PSQL -q -t -A -c "select rolname from pg_authid where oid=10" template1`
- if [ x"$ROLNAME" == x"" ];then
- ERROR_EXIT "[FATAL]:-Failed to retrieve rolname." 2
- fi
-
- BACKOUT_COMMAND "$RM -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME"
-
- # We need SET SESSION AUTH here to load the toolkit
- $ECHO "SET SESSION AUTHORIZATION $ROLNAME;" >> /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME 2>&1
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Failed to create the hawq_toolkit sql file." 2
- fi
-
- $CAT $GPHOME/share/postgresql/gp_toolkit.sql >> /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME 2>&1
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Failed to create the hawq_toolkit sql file." 2
- fi
-
- $PSQL -q -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME template1 >> $LOG_FILE 2>&1
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Failed to create the hawq_toolkit schema." 2
- fi
-
- $PSQL -q -f /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME postgres >> $LOG_FILE 2>&1
- RETVAL=$?
- if [ $RETVAL -ne 0 ];then
- ERROR_EXIT "[FATAL]:-Failed to create the hawq_toolkit schema." 2
- fi
-
- $RM /tmp/_gp_toolkit_tmp_${CUR_DATE}_$FILE_TIME
-}
-
-SET_DCA_CONFIG_SETTINGS () {
- LOG_MSG "[INFO]:-Setting DCA specific configuration values..." 1
-
- # GPSQL-171 user may set ENV PGDATABASE here. Unset PGDATABASE or gpconfig may encounter some problems.
- unset PGDATABASE
-
- LOG_MSG "[INFO]:-$GPCONFIG -c $DCA_RESQUEUE_PRIORITY_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_VAL" 1
- $GPCONFIG -c $DCA_RESQUEUE_PRIORITY_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_VAL
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- LOG_MSG "[WARN]:-Failed to set value for $DCA_RESQUEUE_PRIORITY_NAME" 1
- fi
-
- LOG_MSG "[INFO]:-$GPCONFIG -c $DCA_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL" 1
- $GPCONFIG -c $DCA_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_VAL
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- LOG_MSG "[WARN]:-Failed to set value for $DCA_RESQUEUE_PRIORITY_CPUCORES_PER_SEGMENT_NAME" 1
- fi
-
- LOG_MSG "[INFO]:-$GPCONFIG -c $DCA_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL" 1
- $GPCONFIG -c $DCA_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_NAME -v $DCA_SEGMENT_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL -m $DCA_MASTER_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_VAL
- RETVAL=$?
- if [ $RETVAL -ne 0 ]; then
- LOG_MSG "[WARN]:-Failed to set value for $DCA_RESQUEUE_PRIORITY_SWEEPER_INTERVAL_NAME" 1
- fi
-}
-
-#******************************************************************************
-# Main Section
-#******************************************************************************
-trap 'ERROR_EXIT "[FATAL]:-Received INT or TERM signal" 2' INT
<TRUNCATED>