[catalyst] [insitu] SSH tunnel of Catalyst live connection fails because of hostname exchange.
Short
In the in-situ connection, the LIVE side is communicating it's hostname to INSITU. This makes it impossible to communicate through a tunnel (like ssh tunnel).
Longer
Setup
I'm running a simulation on a cluster with a code that has python Catalyst component. I make a live connection with Paraview on my desktop computer, but the firewalls are preventing direct access to a port. So, I open a SSH tunnel between my computer and the cluster. This makes all connections on the cluster to localhost:22222
to be connected to my computer at 22222
port. Then I provide the localhost
hostname to Catalyst to connect.
Problem
After initial contact, the InsituConnect
function then wants to connect on the 22223
port. This is OK with me, as I made the tunnel for both of them. But, the function first gets the hostnames from the LIVE (my computer) side. My computer of course returns it's hostname, let's say my-nice-desktop
. The code on the cluster gets this new hostname my-nice-desktop
, and tries to connect to it on the 22223
port. And this fails, because this hostname is unreachable. What I would want, is to connect to localhost:22223
, which would be tunneled to my desktop.
The line in question is: https://gitlab.kitware.com/paraview/paraview/blob/master/ParaViewCore/ServerManager/Core/vtkLiveInsituLink.cxx#L746
If I replace this hostname with "localhost"
everything works.
Question
Why this exchange is needed if I already provided a hostname to Catalyst?
Proposed solution:
If the this->Hostname
is already provided, use it in place of the one got from the LIVE side.