Skip to content

Latest commit

 

History

History
76 lines (62 loc) · 2.02 KB

Otomatik Rollback Scripti.md

File metadata and controls

76 lines (62 loc) · 2.02 KB

İstasyon Otomatik Başlatma

Airchain loglarının aktığı screen dışında yeni bir screen açıyoruz.

screen -S rollback

Bu screen içerisinde yeni bir dosya oluşturuyoruz.

nano check_log_and_fix.sh

Dosya içine buradaki scipti kopyalayıp yapıştırıyoruz ve ctrl x+y ile kayıt edip çıkıyoruz.

#!/bin/bash

# Define service name and log search strings
service_name="stationd"
error_patterns=(
    "with gas used"
    "ERR Error in SubmitPod Transaction Error="
    "Failed to get transaction by hash: not found"
    "Switchyard client connection error"
    "Failed to Init VRF" 
    "Failed to Transact Verify pod"
)
restart_delay=180  # Restart delay in seconds (3 minutes)

echo "Script started and it will rollback $service_name if needed..."

while true; do
  # Get the last 10 lines of service logs
  logs=$(systemctl status "$service_name" --no-pager | tail -n 10)

  # Check for error patterns in the logs
  error_found=false
  for pattern in "${error_patterns[@]}"; do
    if [[ "$logs" =~ $pattern ]]; then
      error_found=true
      break
    fi
  done

  # If an error pattern is found, perform rollback and restart
  if $error_found; then
    echo "Found error in logs, stopping $service_name..."
    systemctl stop "$service_name"
    cd ~/tracks

    echo "Service $service_name stopped, starting rollback..."
    go run cmd/main.go rollback
    go run cmd/main.go rollback
    go run cmd/main.go rollback
    echo "Rollback completed, starting $service_name..."
    systemctl start "$service_name"
    echo "Service $service_name started"
  fi

  # Sleep for the restart delay
  sleep "$restart_delay"
done

Daha sonra bu dosyaya izin vermek için

chmod +x check_log_and_fix.sh

İzin verdikden sonra sciptimizi başlatabiliriz.

./check_log_and_fix.sh

Airchain logları başka bir screende akarken bu açtığımız screen ise onu kontrol ederek benim tespit ettiğim 3 hatada otomatik rollback atacaktır.

NOT : Arada veren hatalar için tekrar başlatma yapmıyor.