Query-time SSH tunnel gateway failures (BaseSSHTunnelForwarderError,
raised from Database.get_sqla_engine()) were falling through to the
generic ERROR-level catch-alls in handle_api_exception.wraps and
show_unexpected_exception, producing an opaque 500 and double-logging
at ERROR for what is an expected, environment-specific failure
(analogous to a database being unreachable), not a Superset bug.
Both catch sites now recognize sshtunnel.BaseSSHTunnelForwarderError
and return a structured 400 response with
SupersetErrorType.CONNECTION_HOST_DOWN_ERROR, logging at WARNING
(with exc_info preserved) instead of ERROR.
Fixes SUPERSET-PYTHON-YY5
Fixes SUPERSET-PYTHON-T7B
Co-Authored-By: Claude <noreply@anthropic.com>