fix: Remove mock data fallback in production for better error visibility

- Removed mock data fallback from /signals endpoint
- Now returns HTTP 503 with clear error messages when protocol servers are unavailable
- Protocol servers are disabled in production, so dashboard will show clear error messages
- This ensures we can properly test connectivity issues and don't mask real problems
This commit is contained in:
openhands 2025-11-01 16:28:57 +00:00
parent 98a3254c88
commit 26bcc8d83f
1 changed files with 18 additions and 10 deletions

View File

@ -622,7 +622,7 @@ async def get_signals():
# Check if protocol servers are enabled before trying to connect # Check if protocol servers are enabled before trying to connect
if settings.opcua_enabled or settings.modbus_enabled: if settings.opcua_enabled or settings.modbus_enabled:
# Try to get data from protocol servers, fallback to mock data if servers are not available # Try to get data from protocol servers
try: try:
# Initialize protocol data collector # Initialize protocol data collector
from src.dashboard.protocol_clients import ProtocolDataCollector from src.dashboard.protocol_clients import ProtocolDataCollector
@ -642,18 +642,26 @@ async def get_signals():
# Clean up connections # Clean up connections
await collector.cleanup() await collector.cleanup()
# If no signals were retrieved from protocol servers, use mock data # If no signals were retrieved from protocol servers, return error
if not signals: if not signals:
logger.warning("no_signals_from_protocol_servers", fallback="using_mock_data") logger.error("no_signals_from_protocol_servers")
signals = await _generate_mock_signals(stations, pumps_by_station) raise HTTPException(
status_code=503,
detail="No signals available from protocol servers. Please check server connectivity."
)
except Exception as e: except Exception as e:
logger.error("failed_to_get_protocol_data", error=str(e), fallback="using_mock_data") logger.error("failed_to_get_protocol_data", error=str(e))
# Fallback to mock data raise HTTPException(
signals = await _generate_mock_signals(stations, pumps_by_station) status_code=503,
detail=f"Unable to connect to protocol servers: {str(e)}"
)
else: else:
# Protocol servers are disabled, use mock data # Protocol servers are disabled, return clear error
logger.info("protocol_servers_disabled", fallback="using_mock_data") logger.error("protocol_servers_disabled_in_production")
signals = await _generate_mock_signals(stations, pumps_by_station) raise HTTPException(
status_code=503,
detail="Protocol servers are disabled in production environment. No real-time data available."
)
# Add system status signals # Add system status signals
signals.extend([ signals.extend([