Open 1yuv opened 6 months ago
Hey @1yuv! I'm Dosu, a bot here to help you squash bugs, answer questions, and guide you in becoming a contributor. I'm here to assist while a human maintainer gets to your issue. How can I help you today?
To resolve the frequent failures of SSH connections to an RDBMS server from a Superset instance, follow these steps:
Verify that the SSH tunneling feature is enabled in your Superset configuration.
Ensure that the SSH tunnel properties are correctly set in the database configuration. The _handle_ssh_tunnel
method in the code handles the creation, update, and deletion of SSH tunnels based on the provided properties.
Make sure to catch and log SSH tunnel-related errors for debugging purposes. The superset/commands/database/ssh_tunnel/exceptions.py
file defines various SSH tunnel-related errors that can help you identify specific issues.
The SSHManager
class in superset/extensions/ssh.py
is responsible for creating and managing SSH tunnels. Ensure that the SSH tunnel parameters, including server address, username, and credentials (password or private key), are correctly set.
The TestConnectionDatabaseCommand
class in superset/commands/database/test_connection.py
is responsible for testing the connection to the database, including handling SSH tunnels. Ensure that the connection test is successful and that any SSH tunnel-related errors are properly handled.
Ensure that the SSH tunnel properties are correctly defined and that the SSH gateway is accessible. Adjust the following configurations in Superset's superset_config.py
to optimize the performance and stability of SSH tunnels:
SSH_TUNNEL_MANAGER_CLASS
SSH_TUNNEL_LOCAL_BIND_ADDRESS
SSH_TUNNEL_TIMEOUT_SEC
SSH_TUNNEL_PACKET_TIMEOUT_SEC
Use the SSHTunnelForm
component in the Superset frontend to configure SSH tunnel properties. This form allows you to input the SSH host, port, username, and authentication method (password or private key).
By following these steps, you should be able to resolve the frequent SSH connection failures and ensure a stable connection to your RDBMS server from the Superset instance.
To continue the conversation, mention @dosu.
This is occuring more frequently and it looks like Superset's ssh tunneling is not working as it should. Every time you refresh your dashboard, one or other chart will throw error. Below is the log thrown by superset pod.
Traceback (most recent call last):
File "/app/superset/connectors/sqla/models.py", line 1793, in query
df = self.database.get_df(sql, self.schema, mutator=assign_column_label)
File "/app/superset/models/core.py", line 581, in get_df
with self.get_raw_connection(schema=schema) as conn:
File "/usr/local/lib/python3.9/contextlib.py", line 119, in __enter__
return next(self.gen)
File "/app/superset/models/core.py", line 516, in get_raw_connection
with self.get_sqla_engine_with_context(
File "/usr/local/lib/python3.9/contextlib.py", line 119, in __enter__
return next(self.gen)
File "/app/superset/models/core.py", line 404, in get_sqla_engine_with_context
with engine_context as server_context:
File "/usr/local/lib/python3.9/site-packages/sshtunnel.py", line 1608, in __enter__
self.start()
File "/usr/local/lib/python3.9/site-packages/sshtunnel.py", line 1331, in start
self._raise(BaseSSHTunnelForwarderError,
File "/usr/local/lib/python3.9/site-packages/sshtunnel.py", line 1174, in _raise
raise exception(reason)
sshtunnel.BaseSSHTunnelForwarderError: Could not establish session to SSH gateway
Bug description
We're seeing frequent failures of ssh connections to rdbms server from superset instance.
How to reproduce the bug
While loading a dashboard with 6/7 big number charts, we're seeing this sometime in one chart and sometimes in other chart.
Screenshots/recordings
Superset version
4.0.1
Python version
3.9
Node version
16
Browser
Chrome
Additional context
This issue has been seen on 3.0.2, 4.0.0 and 4.0.1 superset instances hosted on EKS.
Log:
sshserver:sshport
point to the actual server and port where ssh tunnel was established.Checklist