diff --git a/distribution/docker/peon.sh b/distribution/docker/peon.sh index 3b4dfc4326b9..444aec94e9a2 100755 --- a/distribution/docker/peon.sh +++ b/distribution/docker/peon.sh @@ -161,4 +161,8 @@ fi # If TASK_JSON is not set, CliPeon will pull the task.json file from deep storage. mkdir -p ${TASK_DIR}; [ -n "$TASK_JSON" ] && echo ${TASK_JSON} | base64 -d | gzip -d > ${TASK_DIR}/task.json; -exec bin/run-java ${JAVA_OPTS} -cp $COMMON_CONF_DIR:$SERVICE_CONF_DIR:lib/*: org.apache.druid.cli.Main internal peon --taskId ${TASK_ID} $@ +if [ -n "$TASK_ID" ]; then + exec bin/run-java ${JAVA_OPTS} -cp $COMMON_CONF_DIR:$SERVICE_CONF_DIR:lib/*: org.apache.druid.cli.Main internal peon --taskId "${TASK_ID}" "$@" +else + exec bin/run-java ${JAVA_OPTS} -cp $COMMON_CONF_DIR:$SERVICE_CONF_DIR:lib/*: org.apache.druid.cli.Main internal peon "$@" +fi diff --git a/services/src/main/java/org/apache/druid/cli/CliPeon.java b/services/src/main/java/org/apache/druid/cli/CliPeon.java index 307ba269a4f4..3d06ad7dee3e 100644 --- a/services/src/main/java/org/apache/druid/cli/CliPeon.java +++ b/services/src/main/java/org/apache/druid/cli/CliPeon.java @@ -24,6 +24,7 @@ import com.github.rvesse.airline.annotations.Command; import com.github.rvesse.airline.annotations.Option; import com.github.rvesse.airline.annotations.restrictions.Required; +import com.google.common.base.Preconditions; import com.google.common.base.Supplier; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; @@ -234,6 +235,12 @@ protected List getModules() public void configure(Binder binder) { ServerRunnable.validateCentralizedDatasourceSchemaConfig(getProperties()); + Preconditions.checkArgument( + taskAndStatusFile.size() >= 2, + "taskAndStatusFile array should contain 2 or more elements. Current array elements: [%s]", + taskAndStatusFile.toString() + ); + taskDirPath = taskAndStatusFile.get(0); attemptId = taskAndStatusFile.get(1);