Rollback Procedures

When an upgrade encounters critical issues, a rollback to the previous version may be necessary. This section provides detailed procedures for safely reverting to a previous Energylogserver version.


### Rollback Procedures

### Preparation

1. Stop all services:

```bash
systemctl stop logserver logserver-gui logserver-probe alert license-service
  1. Create snapshot:

curl -X PUT "localhost:9200/_snapshot/backup_repo/pre_upgrade_snapshot" -H 'Content-Type: application/json' -u $USER:$PASSWORD -d '
{
  "include_global_state": true

Execution

Phase 1: Package Downgrade

yum downgrade energy-logserver-data-node-[PREVIOUS_VERSION] energy-logserver-client-node-[PREVIOUS_VERSION]

Phase 2: Service Restart

systemctl start logserver
until curl -u $USER:$PASSWORD "localhost:9200/_cluster/health" | grep -q '"status":"green"'; do sleep 10; done
systemctl start logserver-gui logserver-probe alert license-service

Phase 3: Data Restoration

If data loss occurred:

curl -X POST "localhost:9200/_snapshot/backup_repo/pre_upgrade_snapshot/_restore" -u $USER:$PASSWORD

Phase 4: Configuration Restoration

If configurations were altered:

if [ -d "/backup/pre-upgrade-$(date +%Y%m%d)" ]; then
    BACKUP_DIR="/backup/pre-upgrade-$(date +%Y%m%d)"
    
    cp $BACKUP_DIR/logserver/logserver.yml /etc/logserver/
    cp $BACKUP_DIR/logserver/jvm.options /etc/logserver/
    
    cp $BACKUP_DIR/logserver-gui/logserver-gui.yml /etc/logserver-gui/
    
    cp -r $BACKUP_DIR/logserver-probe/conf.d/* /etc/logserver-probe/conf.d/
fi

Phase 5: Verification

System Health Check:

#!/bin/bash
echo "=== Post-Rollback Verification ==="

echo "Current Version:"
curl -u $USER:$PASSWORD "localhost:9200" | jq '.version.number'

services=("logserver" "logserver-gui" "logserver-probe" "alert" "license-service")
for service in "${services[@]}"; do
    status=$(systemctl is-active $service)
    echo "$service: $status"
done

echo "Index Count:"
curl -u $USER:$PASSWORD "localhost:9200/_cat/count?v"

echo "Recent Data:"
curl -u $USER:$PASSWORD "localhost:9200/*$(date +%Y.%m.%d)*/_count" | jq '.count'

echo "GUI Access Test:"
curl -I http://localhost:5601 | head -1

Performance Baseline:

time curl -u $USER:$PASSWORD "localhost:9200/_search?size=1000&q=*" > /dev/null

echo '{"test": "rollback verification", "timestamp": "'$(date -Iseconds)'"}' | \
curl -X POST "localhost:9200/rollback-test/_doc" -H 'Content-Type: application/json' -u $USER:$PASSWORD -d @-

curl -u $USER:$PASSWORD "localhost:9200/_nodes/stats/jvm" | jq '.nodes[].jvm.mem.heap_used_percent'