aissia/docs/implementation/configuration/error-handling.md
StillHammer f231188880 Refactor documentation structure and add language learning
- Reorganize docs/ (flatten to architecture/ and implementation/)
- Remove MonitoringModule from MVP (no app detection)
- Add LanguageLearningModule to MVP
- Create CLAUDE.md (concise project overview)
- Add language learning to README and architecture
- Update all examples to use SchedulerModule instead of MonitoringModule

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-29 07:28:34 +08:00

3.3 KiB

Error Handling & Reliability System

Points 291-310 - Error Handling - Anti-cheat validation, input responses, module failures, network issues

Engine Crash/Restart Strategy

Detection System

Health monitoring automatique :

# Health check HTTP
GET /health toutes les 30 secondes

# Redis heartbeat
PUBLISH engine:heartbeat {"engine": "factory", "timestamp": "..."}

# Timeout detection
Si pas de heartbeat depuis 60s = engine down

Recovery Automatique

Restart et state restoration :

// Engine redémarre → republish état current dans Redis
// Example: Factory Engine restart
PUBLISH factory:status {"active_productions": [...]}

// Autres engines reçoivent l'update et ajustent leur état local

Graceful Degradation

Fallback vers cache local :

// Dans chaque engine
if (!canReachEngine("economy")) {
    // Utiliser derniers prix connus en cache
    price = fallbackPriceCache.get(resource);
    logWarning("Using cached price, Economy engine unreachable");
}

Redis Failover Strategy

Persistence Configuration

Redis durability :

# Configuration Redis
save 900 1     # Save snapshot if 1+ keys changed in 15min
appendonly yes # Log toutes les commandes

Multiple Instances

High availability setup :

Primary Redis: 6379 (read/write)
Replica Redis: 6380 (read-only backup)
Si primary down → engines switch automatiquement vers replica

Message Replay

State recovery après Redis restart avec replay des messages critiques.

Anti-cheat & Validation

Server Authoritative Design

  • Toute logique métier côté serveur
  • Anti-cheat naturel via validation centralisée
  • Zero game logic côté client

Anti-cheat Psychologique

Stratégie : Cheat attempts → "bugs" simulés progressifs

class AntiCheatPsycho {
    void onCheatDetected(CheatType type) {
        switch(type) {
            case SPEED_HACK:
                simulateRandomLag(50ms, 500ms);
                break;
            case RESOURCE_HACK:
                simulateVisualGlitches(tanks, 5%);
                break;
            case DAMAGE_HACK:
                simulateDesync(movement, 2%);
                break;
        }
    }
};

Input Validation

  • V1 Thin Client : Validation authoritative serveur
  • V2 Client Prediction : Validation + réconciliation
  • Build verification : Hot-reload seulement si build réussi

Network Issues & Module Failures

Module Isolation

  • Failures localisées : Pas de cascade entre modules
  • Module autonomy : Continue avec dernières données reçues
  • Async communication : Redis Pub/Sub pour resilience

Timeout Handling

  • Fallback patterns : Cache local si engine unreachable
  • Graceful degradation : Fonctionnalité réduite vs crash total
  • State preservation : Maintien état durant failures temporaires

Sources

Documentation originale :

  • docs/global/architecture-technique.md - Section "Error Handling & Reliability"
  • docs/toCheck/architecture-modulaire.md - Anti-cheat psychologique
  • docs/architecture-technique.md - Validation patterns

Points couverts : 20 spécifications error handling détaillées