#!/bin/bash
#TODO: this script is deprecated since MRS 9.2.0. Clean it when MRS 9.1.0 is out of support.

SCRIPT_DIR=$(cd "`dirname $(readlink -nf "$0")`"; pwd -P)
. "${SCRIPT_DIR}/RevoTracing"

trace "$*"

# script parameters
fifoToSpark=$1
shift
fifoFromSpark=$1
shift
xdfDataPath=$1
shift
dfName=$1
shift
xdfUuid=$1 
shift
dfType=$1
shift
dfSource=$1
shift
writeFactorsAsIndexes=$1
shift
overwrite=$1
shift
clusterGUIDDir=$1
shift
loggingLevel=$1

# create command id only for jobFifoFromSpark communication
commandId=$(mktemp -u FILENAMEXXXXXX | sed 's/FILENAME//g')

jobFifoFromSpark=${fifoFromSpark}-${commandId}
rm -f "$jobFifoFromSpark"
mkfifo "$jobFifoFromSpark"

SPARK_COMMAND="convert-xdf-to-df xdfDataPath=${xdfDataPath} dfName=${dfName} xdfUuid=${xdfUuid} dfType=${dfType} dfSource=${dfSource} writeFactorsAsIndexes=${writeFactorsAsIndexes} overwrite=${overwrite} clusterGUIDDir=${clusterGUIDDir} loggingLevel=$loggingLevel commandId=$commandId"

trace "command for Spark: ${SPARK_COMMAND}"
# Redirect namepipe as file descriptor 4 to avoid blocking the script for handling the case: spark crashes before fifo is read. 
# Cannot simply use & to unblock because it can cause zombie HPALauncher process
exec 4<> ${fifoToSpark}
echo "${SPARK_COMMAND}" >&4
trace "command sent, waiting for response"

# wait for spark to finish
SPARK_RESPONSE=$(cat $jobFifoFromSpark)
rm -f "$jobFifoFromSpark"
trace "response from Spark: ${SPARK_RESPONSE}"
if [[ "${SPARK_RESPONSE}" =~ "ERROR" ]]; then
    while read -r line; do
        echo "$line"
    done <<<"${SPARK_RESPONSE}"
    exit 1
fi
