mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-01 17:17:24 -04:00
fix: improve health check validation with retries and diagnostics
- Add retry logic (up to 15 attempts over 30 seconds) - Add comprehensive diagnostics on failure - Test endpoint from inside container to isolate networking issues - Show recent logs if health check fails - Better error messages for troubleshooting
This commit is contained in:
@@ -172,23 +172,60 @@ echo ""
|
|||||||
# Step 6: Test health endpoint
|
# Step 6: Test health endpoint
|
||||||
echo "Step 6: Testing health endpoint..."
|
echo "Step 6: Testing health endpoint..."
|
||||||
|
|
||||||
# Wait a bit more for API to be ready
|
# Wait for API to be ready with retries
|
||||||
sleep 5
|
echo "Waiting for API to be ready (up to 30 seconds)..."
|
||||||
|
MAX_RETRIES=15
|
||||||
|
RETRY_COUNT=0
|
||||||
|
API_READY=false
|
||||||
|
|
||||||
if curl -f http://localhost:8080/health &> /dev/null; then
|
while [ $RETRY_COUNT -lt $MAX_RETRIES ]; do
|
||||||
|
if curl -f -s http://localhost:8080/health &> /dev/null; then
|
||||||
|
API_READY=true
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
RETRY_COUNT=$((RETRY_COUNT + 1))
|
||||||
|
echo " Attempt $RETRY_COUNT/$MAX_RETRIES..."
|
||||||
|
sleep 2
|
||||||
|
done
|
||||||
|
|
||||||
|
if [ "$API_READY" = true ]; then
|
||||||
print_status 0 "Health endpoint responding"
|
print_status 0 "Health endpoint responding"
|
||||||
|
|
||||||
# Get health details
|
# Get health details
|
||||||
HEALTH_DATA=$(curl -s http://localhost:8080/health)
|
HEALTH_DATA=$(curl -s http://localhost:8080/health)
|
||||||
echo "Health response: $HEALTH_DATA"
|
echo "Health response: $HEALTH_DATA"
|
||||||
else
|
else
|
||||||
print_status 1 "Health endpoint not responding"
|
print_status 1 "Health endpoint not responding after $MAX_RETRIES attempts"
|
||||||
print_warning "This could indicate:"
|
print_warning "Diagnostics:"
|
||||||
echo " - API server failed to start"
|
|
||||||
echo " - Port 8080 is already in use"
|
# Check if container is still running
|
||||||
echo " - MCP services failed to initialize"
|
if docker ps | grep -q ai-trader; then
|
||||||
|
echo " ✓ Container is running"
|
||||||
|
else
|
||||||
|
echo " ✗ Container has stopped"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Check if port is listening
|
||||||
|
if docker exec ai-trader netstat -tuln 2>/dev/null | grep -q ":8080"; then
|
||||||
|
echo " ✓ Port 8080 is listening inside container"
|
||||||
|
else
|
||||||
|
echo " ✗ Port 8080 is NOT listening inside container"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Try curl from inside container
|
||||||
|
echo " Testing from inside container..."
|
||||||
|
INTERNAL_TEST=$(docker exec ai-trader curl -f -s http://localhost:8080/health 2>&1)
|
||||||
|
if [ $? -eq 0 ]; then
|
||||||
|
echo " ✓ Health endpoint works inside container: $INTERNAL_TEST"
|
||||||
|
echo " ✗ Issue is with port mapping or host networking"
|
||||||
|
else
|
||||||
|
echo " ✗ Health endpoint doesn't work inside container: $INTERNAL_TEST"
|
||||||
|
echo " ✗ API server may not have started correctly"
|
||||||
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
echo "Check logs with: docker logs ai-trader"
|
echo "Recent logs:"
|
||||||
|
docker logs ai-trader 2>&1 | tail -20
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo ""
|
echo ""
|
||||||
|
|||||||
Reference in New Issue
Block a user