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