SFTPHook builds its concurrent worker hooks (providers/sftp/src/airflow/providers/sftp/hooks/sftp.py, the two SFTPHook(ssh_conn_id=self.ssh_conn_id, ...) calls used by the multi-worker download/upload paths) from ssh_conn_id alone. Any settings the parent hook received through its constructor — remote_host, port, username, password / key file, proxy configuration and other overrides — are not passed on, so the workers connect with the connection's defaults instead.
For example, a directory can be listed through a parent hook created with an explicit remote_host, after which the workers download the files from the connection's original host.
A regression test could patch worker-hook construction, configure the parent with a different remote_host (and port/username), and assert that every worker receives the parent's effective settings.
Reported by @shubhamraj-git in review of #73419.
Drafted-by: Claude Code (Opus 5); reviewed by @potiuk before posting
SFTPHookbuilds its concurrent worker hooks (providers/sftp/src/airflow/providers/sftp/hooks/sftp.py, the twoSFTPHook(ssh_conn_id=self.ssh_conn_id, ...)calls used by the multi-worker download/upload paths) fromssh_conn_idalone. Any settings the parent hook received through its constructor —remote_host,port,username, password / key file, proxy configuration and other overrides — are not passed on, so the workers connect with the connection's defaults instead.For example, a directory can be listed through a parent hook created with an explicit
remote_host, after which the workers download the files from the connection's original host.A regression test could patch worker-hook construction, configure the parent with a different
remote_host(and port/username), and assert that every worker receives the parent's effective settings.Reported by @shubhamraj-git in review of #73419.
Drafted-by: Claude Code (Opus 5); reviewed by @potiuk before posting