oxirs_vec/real_time_embedding_pipeline/
mod.rs1pub mod config;
46pub mod consistency;
47pub mod coordination;
48pub mod monitoring;
49pub mod pipeline;
50pub mod streaming;
51pub mod traits;
52pub mod types;
53pub mod versioning;
54
55pub use config::{
57 AlertThresholds, AutoScalingConfig, BackpressureStrategy, CompressionConfig, CompressionMethod,
58 ConsistencyLevel, MonitoringConfig, PipelineConfig, QualityAssuranceConfig, RetryConfig,
59 VersionControlConfig,
60};
61
62pub use traits::{
63 Alert, AlertCategory, AlertConfig, AlertHandler, AlertSeverity, AlertThrottling,
64 ConflictResolutionFunction, ConsistencyRepairStrategy, ContentItem, EmbeddingGenerator,
65 GeneratorStatistics, HealthStatus, Inconsistency, InconsistencyDetectionAlgorithm,
66 InconsistencySeverity, InconsistencyType, IncrementalVectorIndex, IndexStatistics, MetricPoint,
67 MetricsStorage, ProcessingPriority, ProcessingResult, ProcessingStatus, RepairResult,
68 RepairStatus, Transaction, TransactionLog, TransactionStatus, TransactionType, Version,
69 VersionStorage,
70};
71
72pub use types::{
73 BackpressureState, CircuitBreakerConfig, CircuitBreakerState, CoordinationState,
74 HealthCheckResult, NodeStatus, PerformanceMetrics, PipelineStatistics, QualityMetrics,
75 RealTimeConfig, ResourceUtilization, StreamState, StreamStatus, UpdateBatch, UpdateOperation,
76 UpdatePriority, UpdateStats, VersioningStrategy,
77};
78
79pub use consistency::{
80 ConsistencyConfig, ConsistencyManager, ConsistencyStatistics, DefaultRepairStrategy,
81 InconsistencyRepairEngine,
82};
83pub use coordination::{CoordinationConfig, CoordinationStatistics, UpdateCoordinator};
84pub use monitoring::{
85 AlertManager, ConsoleAlertHandler, InMemoryMetricsStorage, MetricsCollector,
86 PipelinePerformanceMonitor,
87};
88pub use pipeline::RealTimeEmbeddingPipeline;
89pub use streaming::{StreamProcessor, StreamProcessorConfig};
90pub use versioning::{
91 InMemoryVersionStorage, VersionManager, VersionManagerConfig, VersionManagerStatistics,
92};
93
94pub use anyhow::{Context, Error, Result};
96
97#[derive(Debug, thiserror::Error)]
99pub enum PipelineError {
100 #[error("Pipeline not initialized")]
101 NotInitialized,
102
103 #[error("Pipeline already running")]
104 AlreadyRunning,
105
106 #[error("Pipeline not running")]
107 NotRunning,
108
109 #[error("Configuration error: {message}")]
110 ConfigurationError { message: String },
111
112 #[error("Stream processing error: {message}")]
113 StreamProcessingError { message: String },
114
115 #[error("Coordination error: {message}")]
116 CoordinationError { message: String },
117
118 #[error("Consistency error: {message}")]
119 ConsistencyError { message: String },
120
121 #[error("Monitoring error: {message}")]
122 MonitoringError { message: String },
123
124 #[error("Version management error: {message}")]
125 VersionError { message: String },
126
127 #[error("Resource exhausted: {resource}")]
128 ResourceExhausted { resource: String },
129
130 #[error("Timeout error: {operation}")]
131 Timeout { operation: String },
132
133 #[error("Backpressure limit exceeded")]
134 BackpressureExceeded,
135
136 #[error("Quality check failed: {reason}")]
137 QualityCheckFailed { reason: String },
138
139 #[error("Circuit breaker open for: {component}")]
140 CircuitBreakerOpen { component: String },
141}
142
143pub type PipelineResult<T> = std::result::Result<T, PipelineError>;
145
146#[cfg(test)]
147mod tests {
148 use super::*;
149
150 #[test]
151 fn test_pipeline_config_default() {
152 let config = PipelineConfig::default();
153 assert_eq!(config.max_batch_size, 1000);
154 assert_eq!(config.consistency_level, ConsistencyLevel::Session);
155 assert_eq!(config.backpressure_strategy, BackpressureStrategy::Adaptive);
156 }
157
158 #[test]
159 fn test_processing_priority_ordering() {
160 use ProcessingPriority::*;
161 assert!(Critical > High);
162 assert!(High > Normal);
163 assert!(Normal > Low);
164 }
165
166 #[test]
167 fn test_update_priority_ordering() {
168 use UpdatePriority::*;
169 assert!(Urgent > High);
170 assert!(High > Normal);
171 assert!(Normal > Background);
172 }
173
174 #[test]
175 fn test_alert_severity_ordering() {
176 use AlertSeverity::*;
177 assert!(Critical > Error);
178 assert!(Error > Warning);
179 assert!(Warning > Info);
180 }
181
182 #[test]
183 fn test_inconsistency_severity_ordering() {
184 use InconsistencySeverity::*;
185 assert!(Critical > High);
186 assert!(High > Medium);
187 assert!(Medium > Low);
188 }
189}