use crate::pod_coordination::types::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default)]
pub struct ActiveRecovery {
pub in_progress: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum CoordinatorSelection {
Random,
#[default]
Priority,
LoadBased,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum CoordinatorState {
Active,
#[default]
Standby,
Failed,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct DeadlockRecovery {
pub strategy: RecoveryStrategy,
}
#[derive(Debug, Clone, Default, serde::Serialize, serde::Deserialize)]
pub struct DeadlockRecoverySystem {
pub recovery: DeadlockRecovery,
}
impl DeadlockRecoverySystem {
pub fn new() -> Self {
Self::default()
}
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum DeadlockSeverity {
Low,
#[default]
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Default)]
pub struct DetectedDeadlock {
pub severity: DeadlockSeverity,
}
#[derive(Debug, Clone, Default)]
pub struct DistributedRecovery {
pub strategy: DistributedRecoveryStrategy,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum DistributedRecoveryStrategy {
#[default]
Centralized,
Decentralized,
Hybrid,
}
#[derive(Debug, Clone, Default)]
pub struct ExecutionContext {
pub device_id: DeviceId,
}
#[derive(Debug, Clone, Default)]
pub struct ExecutionRecord {
pub timestamp_ms: u64,
}
#[derive(Debug, Clone, Default)]
pub struct ExecutorCapabilities {
pub can_rollback: bool,
}
#[derive(Debug, Clone, Default)]
pub struct ExecutorPerformance {
pub success_rate: f64,
}
#[derive(Debug, Clone, Default)]
pub struct PhaseRecord {
pub phase: RecoveryPhase,
pub result: PhaseResult,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum PhaseResult {
#[default]
Success,
Failure,
Skipped,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryAction {
Abort,
#[default]
Retry,
Rollback,
Kill,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryConstraint {
pub type_: RecoveryConstraintType,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryConstraintType {
#[default]
Time,
Resource,
Priority,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryCoordination {
pub coordinator: RecoveryCoordinator,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryCoordinator {
pub state: CoordinatorState,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryExecutor {
pub strategy: RecoveryExecutorStrategy,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryExecutorStrategy {
#[default]
Sequential,
Parallel,
Adaptive,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryObjective {
pub max_time_ms: u64,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryOptimization {
pub algorithm: RecoveryOptimizationAlgorithm,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryOptimizationAlgorithm {
#[default]
Greedy,
Dynamic,
Heuristic,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryPhase {
#[default]
Detection,
Analysis,
Execution,
Verification,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryProgress {
pub percent_complete: f64,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryRequest {
pub deadlock: DetectedDeadlock,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryResult {
pub success: bool,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryStatistics {
pub total_recoveries: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryStrategy {
#[default]
VictimSelection,
Rollback,
Timeout,
}
#[derive(Debug, Clone, Default)]
pub struct RecoveryVerification {
pub method: RecoveryVerificationMethod,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RecoveryVerificationMethod {
#[default]
StateCheck,
Invariants,
Monitoring,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum RollbackMechanism {
#[default]
Checkpoint,
Log,
Snapshot,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum SelectionCriterion {
#[default]
LeastWork,
MostWork,
Random,
}
#[derive(Debug, Clone, Default)]
pub struct StateSynchronization {
pub protocol: SynchronizationProtocol,
}
#[derive(Debug, Clone, Default)]
pub struct StrategyStatistics {
pub success_count: u64,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum SynchronizationProtocol {
#[default]
TwoPhase,
ThreePhase,
Paxos,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum SystemHealth {
#[default]
Healthy,
Degraded,
Critical,
}
#[derive(Debug, Clone, Default)]
pub struct SystemState {
pub health: SystemHealth,
}
#[derive(Debug, Clone, Default)]
pub struct VerificationSuccessCriteria {
pub all_recovered: bool,
}
#[derive(Debug, Clone, Default)]
pub struct VictimSelection {
pub algorithm: VictimSelectionAlgorithm,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default)]
pub enum VictimSelectionAlgorithm {
YoungestTransaction,
#[default]
LeastCost,
Random,
}