This is an automated email from the ASF dual-hosted git repository.
liuhaopeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/bigtop-manager.git
The following commit(s) were added to refs/heads/main by this push:
new 310a0775 BIGTOP-4458: Auto find java bin when start server/agent (#239)
310a0775 is described below
commit 310a07759cebe2cddb1fd65690f7392fefd91772
Author: Zhiguo Wu <[email protected]>
AuthorDate: Wed Jul 9 20:39:55 2025 +0800
BIGTOP-4458: Auto find java bin when start server/agent (#239)
---
bigtop-manager-agent/src/main/resources/bin/env.sh | 45 +++++++++++++++++++++
.../src/main/resources/bin/start.sh | 2 +-
.../bigtop/manager/server/aop/AuditAspect.java | 5 ++-
.../server/service/impl/HostServiceImpl.java | 13 ++++--
.../src/main/resources/bin/env.sh | 47 +++++++++++++++++++++-
.../src/main/resources/bin/start.sh | 2 +-
dev-support/docker/containers/build.sh | 4 +-
7 files changed, 107 insertions(+), 11 deletions(-)
diff --git a/bigtop-manager-agent/src/main/resources/bin/env.sh
b/bigtop-manager-agent/src/main/resources/bin/env.sh
index d544f755..882b68eb 100755
--- a/bigtop-manager-agent/src/main/resources/bin/env.sh
+++ b/bigtop-manager-agent/src/main/resources/bin/env.sh
@@ -18,4 +18,49 @@
# under the License.
#
+set -e
+
+JAVA_SEARCH_DIRS=(
+ "/usr/local/java*"
+ "/usr/lib/jvm/java-*"
+ "/usr/java/jdk*"
+ "/opt/java*"
+ "/opt/jdk*"
+ "/usr/lib/jvm/*"
+)
+
+# Find a suitable Java (version >= 17)
+find_java() {
+ if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
+ JAVA_CANDIDATES=("$JAVA_HOME/bin/java")
+ else
+ JAVA_CANDIDATES=()
+ JAVA_PATH=$(command -v java 2>/dev/null || true)
+ [ -n "$JAVA_PATH" ] && JAVA_CANDIDATES+=("$JAVA_PATH")
+
+ for pattern in "${JAVA_SEARCH_DIRS[@]}"; do
+ for dir in $(compgen -G "$pattern" 2>/dev/null); do
+ # Check privileges, make sure the script won't exit
+ [ -x "$dir/bin/java" ] 2>/dev/null || true
+ [ -x "$dir/bin/java" ] && JAVA_CANDIDATES+=("$dir/bin/java")
+ done
+ done
+ fi
+
+ for JAVA_CMD in "${JAVA_CANDIDATES[@]}"; do
+ VERSION_STR=$("$JAVA_CMD" -version 2>&1 | awk -F '"' '/version/ {print
$2}')
+ MAJOR_VERSION=$(echo "$VERSION_STR" | awk -F. '{if ($1 == "1") print $2;
else print $1}')
+ if [ "$MAJOR_VERSION" -ge 17 ]; then
+ export JAVA_CMD
+ return 0
+ fi
+ done
+
+ echo "Error: Java 17 or higher is required. No suitable java found." >&2
+ exit 1
+}
+
+find_java
+
export JAVA_OPTS=""
+export JAVA_CMD
diff --git a/bigtop-manager-agent/src/main/resources/bin/start.sh
b/bigtop-manager-agent/src/main/resources/bin/start.sh
index 87c78672..e871f190 100755
--- a/bigtop-manager-agent/src/main/resources/bin/start.sh
+++ b/bigtop-manager-agent/src/main/resources/bin/start.sh
@@ -62,6 +62,6 @@ fi
cd $BIGTOP_MANAGER_HOME
-$JAVA_HOME/bin/java $JAVA_OPTS \
+$JAVA_CMD $JAVA_OPTS \
-cp "${BIGTOP_MANAGER_HOME}/conf":"${BIGTOP_MANAGER_HOME}/libs/*" \
org.apache.bigtop.manager.agent.AgentApplication
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/aop/AuditAspect.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/aop/AuditAspect.java
index 08331833..db7437ef 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/aop/AuditAspect.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/aop/AuditAspect.java
@@ -18,7 +18,6 @@
*/
package org.apache.bigtop.manager.server.aop;
-import org.apache.bigtop.manager.common.utils.JsonUtils;
import org.apache.bigtop.manager.dao.po.AuditLogPO;
import org.apache.bigtop.manager.dao.repository.AuditLogDao;
import org.apache.bigtop.manager.server.holder.SessionUserHolder;
@@ -82,7 +81,9 @@ public class AuditAspect {
auditLogPO.setTagDesc(apiDesc);
auditLogPO.setOperationSummary(operationSummary);
auditLogPO.setOperationDesc(operationDesc);
- auditLogPO.setArgs(JsonUtils.writeAsString(joinPoint.getArgs()));
+
+ // Temporary disable since params of command api sometimes are too
long
+ //
auditLogPO.setArgs(JsonUtils.writeAsString(joinPoint.getArgs()));
log.debug("auditLog: {}", auditLogPO);
log.debug("request method:{}.{}",
joinPoint.getSignature().getDeclaringTypeName(), methodName);
diff --git
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
index 8927c2c1..1ec32399 100644
---
a/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
+++
b/bigtop-manager-server/src/main/java/org/apache/bigtop/manager/server/service/impl/HostServiceImpl.java
@@ -274,10 +274,14 @@ public class HostServiceImpl implements HostService {
try {
String script = ProjectPathUtils.getServerScriptPath() +
File.separator + "setup-agent.sh";
String content = Files.readString(Path.of(script));
- command = "cat << 'EOF' > ./setup-agent.sh\n"
- + content
- + "\nEOF\n"
- + "chmod +x ./setup-agent.sh && ./setup-agent.sh " + path
+ " " + repoUrl + " " + grpcPort;
+ command = "cat << 'EOF' > ./setup-agent.sh\n" + content +
"\nEOF\n" + "chmod +x ./setup-agent.sh";
+ ShellResult result = execCommandOnRemoteHost(hostDTO, hostname,
command);
+ if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
+ log.error("Unable to write agent script, hostname: {}, msg:
{}", hostname, result);
+ installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
+ installedStatusVO.setMessage(result.getErrMsg());
+ return;
+ }
} catch (IOException e) {
log.error("Unable to write agent script, hostname: {}, msg: {}",
hostname, e.getMessage());
installedStatusVO.setStatus(InstalledStatusEnum.FAILED);
@@ -285,6 +289,7 @@ public class HostServiceImpl implements HostService {
return;
}
+ command = "./setup-agent.sh " + path + " " + repoUrl + " " + grpcPort;
ShellResult result = execCommandOnRemoteHost(hostDTO, hostname,
command);
if (result.getExitCode() != MessageConstants.SUCCESS_CODE) {
log.error("Unable to setup agent, hostname: {}, msg: {}",
hostname, result);
diff --git a/bigtop-manager-server/src/main/resources/bin/env.sh
b/bigtop-manager-server/src/main/resources/bin/env.sh
index 5533b6bc..882b68eb 100755
--- a/bigtop-manager-server/src/main/resources/bin/env.sh
+++ b/bigtop-manager-server/src/main/resources/bin/env.sh
@@ -1,3 +1,4 @@
+#!/bin/bash
#
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
@@ -17,5 +18,49 @@
# under the License.
#
+set -e
-export JAVA_OPTS=""
\ No newline at end of file
+JAVA_SEARCH_DIRS=(
+ "/usr/local/java*"
+ "/usr/lib/jvm/java-*"
+ "/usr/java/jdk*"
+ "/opt/java*"
+ "/opt/jdk*"
+ "/usr/lib/jvm/*"
+)
+
+# Find a suitable Java (version >= 17)
+find_java() {
+ if [ -n "$JAVA_HOME" ] && [ -x "$JAVA_HOME/bin/java" ]; then
+ JAVA_CANDIDATES=("$JAVA_HOME/bin/java")
+ else
+ JAVA_CANDIDATES=()
+ JAVA_PATH=$(command -v java 2>/dev/null || true)
+ [ -n "$JAVA_PATH" ] && JAVA_CANDIDATES+=("$JAVA_PATH")
+
+ for pattern in "${JAVA_SEARCH_DIRS[@]}"; do
+ for dir in $(compgen -G "$pattern" 2>/dev/null); do
+ # Check privileges, make sure the script won't exit
+ [ -x "$dir/bin/java" ] 2>/dev/null || true
+ [ -x "$dir/bin/java" ] && JAVA_CANDIDATES+=("$dir/bin/java")
+ done
+ done
+ fi
+
+ for JAVA_CMD in "${JAVA_CANDIDATES[@]}"; do
+ VERSION_STR=$("$JAVA_CMD" -version 2>&1 | awk -F '"' '/version/ {print
$2}')
+ MAJOR_VERSION=$(echo "$VERSION_STR" | awk -F. '{if ($1 == "1") print $2;
else print $1}')
+ if [ "$MAJOR_VERSION" -ge 17 ]; then
+ export JAVA_CMD
+ return 0
+ fi
+ done
+
+ echo "Error: Java 17 or higher is required. No suitable java found." >&2
+ exit 1
+}
+
+find_java
+
+export JAVA_OPTS=""
+export JAVA_CMD
diff --git a/bigtop-manager-server/src/main/resources/bin/start.sh
b/bigtop-manager-server/src/main/resources/bin/start.sh
index 9e79c8f9..3603a94f 100755
--- a/bigtop-manager-server/src/main/resources/bin/start.sh
+++ b/bigtop-manager-server/src/main/resources/bin/start.sh
@@ -60,6 +60,6 @@ fi
cd $BIGTOP_MANAGER_HOME
-$JAVA_HOME/bin/java $JAVA_OPTS \
+$JAVA_CMD $JAVA_OPTS \
-cp "${BIGTOP_MANAGER_HOME}/conf":"${BIGTOP_MANAGER_HOME}/libs/*" \
org.apache.bigtop.manager.server.ServerApplication
diff --git a/dev-support/docker/containers/build.sh
b/dev-support/docker/containers/build.sh
index c512141c..3abc352a 100755
--- a/dev-support/docker/containers/build.sh
+++ b/dev-support/docker/containers/build.sh
@@ -197,8 +197,8 @@ while [ $# -gt 0 ]; do
echo "Requires a container number" 1>&2
usage
fi
- if [ $2 -gt 10 ] || [ $2 -lt 3 ]; then
- echo "NUM-INSTANCES should be between [3-10]" 1>&2
+ if [ $2 -gt 10 ] || [ $2 -lt 1 ]; then
+ echo "NUM-INSTANCES should be between [1-10]" 1>&2
usage
fi
NUM_INSTANCES=$2