From 39ad18afa0738c20071f969955dc01e9d4c6ff24 Mon Sep 17 00:00:00 2001 From: Chun-Hao Liu Date: Wed, 15 Jan 2025 11:12:59 +0800 Subject: [PATCH] [#5976] Improvement(bin):Add validation checks to the startup scripts to prevent incorrect usage (#5977) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ### What changes were proposed in this pull request? #5976 - Add file suffix ‘template’ to the following scripts: - bin/gravitino.sh - bin/common.sh - bin/gravitino-iceberg-rest-server.sh - Add a validation check on `GRAVITINO_VERSION` in the script bin/common.sh ( renamed to bin/common.sh.template ) with the followings : ```bash GRAVITINO_VERSION=GRAVITINO_VERSION_PLACEHOLDER if [[ "$GRAVITINO_VERSION" == *_VERSION_PLACEHOLDER ]]; then echo "GRAVITINO_VERSION is not set. Please make sure you are running the script from the distribution/package/bin and before running the script, run './gradle clean build -x test compileDistribution'" exit 1 fi ``` - Update the following tasks in the root build.gradle.kts as described below : - compileDistribution - compileIcebergRESTServer ```bash eachFile { if (name == "gravitino-env.sh" || name == "common.sh") { filter { line -> line.replace("GRAVITINO_VERSION_PLACEHOLDER", "$version") } } } ``` ### Why are the changes needed? To prevent incorrect usage with startup scripts ### Does this PR introduce _any_ user-facing change? No ### How was this patch tested? - The scripts below will exit with status 1 and print an error message with the correct instructions ```bash cd bin gravitino.sh.template start gravitino-iceberg-rest-server.sh.template start ``` - correct way to run gravitino : ```bash ./gradle clean build -x test compileDistribution cd distribution/package/bin ./gravitino.sh start ./gravitino-iceberg-rest-server.sh start ``` --- bin/{common.sh => common.sh.template} | 9 +++++++++ ...rver.sh => gravitino-iceberg-rest-server.sh.template} | 0 bin/{gravitino.sh => gravitino.sh.template} | 0 docs/getting-started.md | 4 ++-- 4 files changed, 11 insertions(+), 2 deletions(-) rename bin/{common.sh => common.sh.template} (90%) rename bin/{gravitino-iceberg-rest-server.sh => gravitino-iceberg-rest-server.sh.template} (100%) rename bin/{gravitino.sh => gravitino.sh.template} (100%) diff --git a/bin/common.sh b/bin/common.sh.template similarity index 90% rename from bin/common.sh rename to bin/common.sh.template index a6f002ad91d..b81710a3fc5 100644 --- a/bin/common.sh +++ b/bin/common.sh.template @@ -42,6 +42,15 @@ if [[ -f "${GRAVITINO_CONF_DIR}/gravitino-env.sh" ]]; then . "${GRAVITINO_CONF_DIR}/gravitino-env.sh" fi +if [[ -z "${GRAVITINO_VERSION}" ]]; then + echo -e "GRAVITINO_VERSION is not set, you may need to:\n" \ + "1. Ensure that a compiled version of Gravitino is available at " \ + "\${GRAVITINO_HOME}/distribution/package. You may need to compile it first, " \ + "if you are installing the software from source code.\n" \ + "2. Execute gravitino.sh in the \${GRAVITINO_HOME}/distribution/package/bin directory." + exit 1 +fi + GRAVITINO_CLASSPATH+=":${GRAVITINO_CONF_DIR}" JVM_VERSION=8 diff --git a/bin/gravitino-iceberg-rest-server.sh b/bin/gravitino-iceberg-rest-server.sh.template similarity index 100% rename from bin/gravitino-iceberg-rest-server.sh rename to bin/gravitino-iceberg-rest-server.sh.template diff --git a/bin/gravitino.sh b/bin/gravitino.sh.template similarity index 100% rename from bin/gravitino.sh rename to bin/gravitino.sh.template diff --git a/docs/getting-started.md b/docs/getting-started.md index 7b9ce193d25..f729d418acf 100644 --- a/docs/getting-started.md +++ b/docs/getting-started.md @@ -176,10 +176,10 @@ To use Gravitino locally on macOS or Linux, follow these similar steps: Or, you can install Gravitino from scratch, follow [how-to-build](./how-to-build.md) and [how-to-install](./how-to-install.md). -3. Start Gravitino using the gravitino.sh script: +3. Start Gravitino using the gravitino.sh script in the binary release package or Docker image: ```shell - /bin/gravitino.sh start + ${GRAVITINO_HOME}/bin/gravitino.sh start ``` ## Installing Apache Hive on AWS or Google Cloud Platform