mirror of
https://github.com/open-metadata/OpenMetadata
synced 2026-05-24 09:39:11 +00:00
* Add Distributed Indexing in Multi-Server scenarios * Add Distributed Indexing in Multi-Server scenarios * Update generated TypeScript types * Handle Servers leaving and joining * Update generated TypeScript types * spotless fix * Refactor Code for Single Server and Multiple Server * Add Metrics and Search Index Orphaned Cleanup * Add Language * Add Test settings * Add Test data * Add Test data * Update generated TypeScript types * Add Load Test for more entities * Add Stats fix * Add server information * Fix Staging INdex unavailable to DistributedJobParticipant * Fix Stats issue * Align Tests * Fix Stats and Error Handling * participant stat fix * Fix coordinator stats * Add E2E failure tests * Fix Stats for Reader and Sink * Added flush for sinking stats * Add language label * Fix Entity Build Errors * Missing commit * Update generated TypeScript types * Change runId to serverId * Fix test failures --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Mohit Yadav <105265192+mohityadav766@users.noreply.github.com> Co-authored-by: mohitdeuex <mohit.y@deuexsolutions.com>
140 lines
4.8 KiB
Bash
Executable file
140 lines
4.8 KiB
Bash
Executable file
#!/bin/bash
|
|
# Run multiple OpenMetadata servers locally for debugging
|
|
|
|
set -e
|
|
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
PROJECT_DIR="$(cd "$SCRIPT_DIR/../../../.." && pwd)"
|
|
|
|
# Default: run all 3 servers
|
|
SERVERS="${@:-1 2 3}"
|
|
|
|
# Check if we should run migrations first
|
|
RUN_MIGRATE=false
|
|
if [ "$1" == "--migrate" ]; then
|
|
RUN_MIGRATE=true
|
|
shift
|
|
SERVERS="${@:-1 2 3}"
|
|
fi
|
|
|
|
echo "======================================"
|
|
echo "Local Multi-Server Development Setup"
|
|
echo "======================================"
|
|
echo "Project dir: $PROJECT_DIR"
|
|
echo "Servers to start: $SERVERS"
|
|
echo ""
|
|
|
|
# Check if JAR exists
|
|
JAR_PATH=$(find "$PROJECT_DIR/openmetadata-service/target" -name "openmetadata-service-*.jar" -not -name "*sources*" -not -name "*javadoc*" 2>/dev/null | head -1)
|
|
|
|
if [ -z "$JAR_PATH" ]; then
|
|
echo "OpenMetadata JAR not found. Building..."
|
|
cd "$PROJECT_DIR"
|
|
mvn clean package -DskipTests -pl openmetadata-service -am
|
|
JAR_PATH=$(find "$PROJECT_DIR/openmetadata-service/target" -name "openmetadata-service-*.jar" -not -name "*sources*" -not -name "*javadoc*" 2>/dev/null | head -1)
|
|
fi
|
|
|
|
if [ -z "$JAR_PATH" ]; then
|
|
echo "ERROR: Could not find or build openmetadata-service JAR"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Using JAR: $JAR_PATH"
|
|
echo ""
|
|
|
|
# Check if dependencies are running
|
|
echo "Checking dependencies..."
|
|
if ! curl -s http://localhost:3306 >/dev/null 2>&1; then
|
|
if ! docker ps | grep -q distributed_test_mysql; then
|
|
echo "MySQL not running. Starting dependencies..."
|
|
cd "$SCRIPT_DIR"
|
|
docker compose -f docker-compose-deps.yml up -d
|
|
echo "Waiting for MySQL..."
|
|
until docker compose -f docker-compose-deps.yml exec -T mysql mysqladmin ping -h localhost -uroot -ppassword --silent 2>/dev/null; do
|
|
sleep 2
|
|
done
|
|
echo "MySQL ready."
|
|
fi
|
|
fi
|
|
|
|
if ! curl -s http://localhost:9200 >/dev/null 2>&1; then
|
|
echo "OpenSearch not running. Please start dependencies first:"
|
|
echo " cd $SCRIPT_DIR && docker compose -f docker-compose-deps.yml up -d"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Dependencies are running."
|
|
echo ""
|
|
|
|
# Run migrations if requested
|
|
if [ "$RUN_MIGRATE" == "true" ]; then
|
|
echo "Running database migrations..."
|
|
cd "$PROJECT_DIR"
|
|
java -cp "$JAR_PATH" \
|
|
-Dloader.main=org.openmetadata.service.util.OpenMetadataSetup \
|
|
org.springframework.boot.loader.launch.PropertiesLauncher \
|
|
migrate --force
|
|
echo "Migrations complete."
|
|
echo ""
|
|
fi
|
|
|
|
# Function to start a server
|
|
start_server() {
|
|
local server_num=$1
|
|
local config_file="$SCRIPT_DIR/server${server_num}.yaml"
|
|
|
|
if [ ! -f "$config_file" ]; then
|
|
echo "Config file not found: $config_file"
|
|
return 1
|
|
fi
|
|
|
|
local port=$((8583 + server_num * 2))
|
|
echo "Starting Server $server_num on port $port..."
|
|
|
|
cd "$PROJECT_DIR"
|
|
|
|
# Start in a new terminal window (macOS)
|
|
if [[ "$OSTYPE" == "darwin"* ]]; then
|
|
osascript -e "tell application \"Terminal\" to do script \"cd '$PROJECT_DIR' && java -Xmx1G -Xms512M -Ddw.logging.appenders[0].logFormat='[SERVER-$server_num] %level [%d{ISO8601,UTC}] [%t] %logger{5} - %msg%n' -jar '$JAR_PATH' server '$config_file'\""
|
|
# Linux with gnome-terminal
|
|
elif command -v gnome-terminal &> /dev/null; then
|
|
gnome-terminal -- bash -c "cd '$PROJECT_DIR' && java -Xmx1G -Xms512M -Ddw.logging.appenders[0].logFormat='[SERVER-$server_num] %level [%d{ISO8601,UTC}] [%t] %logger{5} - %msg%n' -jar '$JAR_PATH' server '$config_file'; exec bash"
|
|
# Linux with xterm
|
|
elif command -v xterm &> /dev/null; then
|
|
xterm -e "cd '$PROJECT_DIR' && java -Xmx1G -Xms512M -jar '$JAR_PATH' server '$config_file'" &
|
|
else
|
|
# Fallback: run in background
|
|
echo "No terminal emulator found. Running in background..."
|
|
java -Xmx1G -Xms512M \
|
|
-Ddw.logging.appenders[0].logFormat="[SERVER-$server_num] %level [%d{ISO8601,UTC}] [%t] %logger{5} - %msg%n" \
|
|
-jar "$JAR_PATH" server "$config_file" \
|
|
> "/tmp/om-server-$server_num.log" 2>&1 &
|
|
echo "Server $server_num started in background. Log: /tmp/om-server-$server_num.log"
|
|
fi
|
|
}
|
|
|
|
# Start requested servers
|
|
for server in $SERVERS; do
|
|
start_server "$server"
|
|
sleep 2 # Stagger startup
|
|
done
|
|
|
|
echo ""
|
|
echo "======================================"
|
|
echo "Servers starting..."
|
|
echo "======================================"
|
|
echo ""
|
|
echo "Server endpoints:"
|
|
for server in $SERVERS; do
|
|
port=$((8583 + server * 2))
|
|
echo " - Server $server: http://localhost:$port"
|
|
done
|
|
echo ""
|
|
echo "For IDE debugging:"
|
|
echo " 1. Open your IDE"
|
|
echo " 2. Create a new Run Configuration"
|
|
echo " 3. Main class: org.openmetadata.service.OpenMetadataApplication"
|
|
echo " 4. Program arguments: server local/server1.yaml"
|
|
echo " 5. VM options: -Xmx1G -Xms512M"
|
|
echo " 6. Working directory: $PROJECT_DIR"
|
|
echo ""
|