mirror of
https://github.com/DeBrosOfficial/network.git
synced 2025-12-13 00:38:49 +00:00
- Introduced a new topology structure to manage multiple bootstrap and node configurations, allowing for a more flexible development environment. - Updated Makefile and help commands to reflect the addition of a second bootstrap and fourth node. - Enhanced health checks to require a minimum of three healthy nodes for RQLite and LibP2P connectivity. - Refactored service management to dynamically handle multiple nodes and their respective configurations. - Improved logging and configuration file generation for better clarity and maintainability.
102 lines
3.1 KiB
Bash
Executable File
102 lines
3.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
echo "Force killing all processes on dev ports..."
|
|
|
|
# Define all dev ports (5 nodes topology: bootstrap, bootstrap2, node2, node3, node4)
|
|
PORTS=(
|
|
# LibP2P
|
|
4001 4011 4002 4003 4004
|
|
# IPFS Swarm
|
|
4101 4111 4102 4103 4104
|
|
# IPFS API
|
|
4501 4511 4502 4503 4504
|
|
# RQLite HTTP
|
|
5001 5011 5002 5003 5004
|
|
# RQLite Raft
|
|
7001 7011 7002 7003 7004
|
|
# IPFS Gateway
|
|
7501 7511 7502 7503 7504
|
|
# Gateway
|
|
6001
|
|
# Olric
|
|
3320 3322
|
|
# Anon SOCKS
|
|
9050
|
|
# IPFS Cluster REST API
|
|
9094 9104 9114 9124 9134
|
|
# IPFS Cluster P2P
|
|
9096 9106 9116 9126 9136
|
|
)
|
|
|
|
killed_count=0
|
|
killed_pids=()
|
|
|
|
# Kill all processes using these ports (LISTEN, ESTABLISHED, or any state)
|
|
for port in "${PORTS[@]}"; do
|
|
# Get all PIDs using this port in ANY TCP state
|
|
pids=$(lsof -nP -iTCP:"$port" -t 2>/dev/null || true)
|
|
if [[ -n "$pids" ]]; then
|
|
echo "Killing processes on port $port: $pids"
|
|
for pid in $pids; do
|
|
# Kill the process and all its children
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
# Also kill any children of this process
|
|
pkill -9 -P "$pid" 2>/dev/null || true
|
|
killed_pids+=("$pid")
|
|
done
|
|
killed_count=$((killed_count + 1))
|
|
fi
|
|
done
|
|
|
|
# Also kill processes by command name patterns (in case they're orphaned)
|
|
# This catches processes that might be using debros ports but not showing up in lsof
|
|
COMMANDS=("node" "ipfs" "ipfs-cluster-service" "rqlited" "olric-server" "gateway")
|
|
for cmd in "${COMMANDS[@]}"; do
|
|
# Find all processes with this command name
|
|
all_pids=$(pgrep -f "^.*$cmd.*" 2>/dev/null || true)
|
|
if [[ -n "$all_pids" ]]; then
|
|
for pid in $all_pids; do
|
|
# Check if this process is using any of our dev ports
|
|
port_match=$(lsof -nP -p "$pid" -iTCP 2>/dev/null | grep -E ":(400[1-4]|401[1-1]|410[1-4]|411[1-1]|450[1-4]|451[1-1]|500[1-4]|501[1-1]|600[1-1]|700[1-4]|701[1-1]|750[1-4]|751[1-1]|332[02]|9050|909[4-9]|910[4-9]|911[4-9]|912[4-9]|913[4-9]|909[6-9]|910[6-9]|911[6-9]|912[6-9]|913[6-9])" || true)
|
|
if [[ -n "$port_match" ]]; then
|
|
echo "Killing orphaned $cmd process (PID: $pid) using dev ports"
|
|
kill -9 "$pid" 2>/dev/null || true
|
|
pkill -9 -P "$pid" 2>/dev/null || true
|
|
killed_pids+=("$pid")
|
|
fi
|
|
done
|
|
fi
|
|
done
|
|
|
|
# Clean up PID files
|
|
PIDS_DIR="$HOME/.debros/.pids"
|
|
if [[ -d "$PIDS_DIR" ]]; then
|
|
rm -f "$PIDS_DIR"/*.pid || true
|
|
fi
|
|
|
|
# Remove duplicates and report
|
|
if [[ ${#killed_pids[@]} -gt 0 ]]; then
|
|
unique_pids=($(printf '%s\n' "${killed_pids[@]}" | sort -u))
|
|
echo "✓ Killed ${#unique_pids[@]} unique process(es) on $killed_count port(s)"
|
|
else
|
|
echo "✓ No processes found on dev ports"
|
|
fi
|
|
|
|
# Final verification: check if any ports are still in use
|
|
still_in_use=0
|
|
for port in "${PORTS[@]}"; do
|
|
pids=$(lsof -nP -iTCP:"$port" -t 2>/dev/null || true)
|
|
if [[ -n "$pids" ]]; then
|
|
echo "⚠️ Warning: Port $port still in use by: $pids"
|
|
still_in_use=$((still_in_use + 1))
|
|
fi
|
|
done
|
|
|
|
if [[ $still_in_use -eq 0 ]]; then
|
|
echo "✓ All dev ports are now free"
|
|
else
|
|
echo "⚠️ $still_in_use port(s) still in use - you may need to manually kill processes"
|
|
fi
|
|
|