ome / omero-insight

Gradle project containing insight java client for OMERO
https://www.openmicroscopy.org/omero/
GNU General Public License v2.0
7 stars 14 forks source link

Improve the reporting of connection errors due to incorrect server addresses #449

Open sbesson opened 2 months ago

sbesson commented 2 months ago

A typical confusion for end-users who are alternating between OMERO.web and OMERO.insight is to use the OMERO.web URL instead of the server address when connecting using the Desktop client. For instance, the following connection will throw an error using OMERO.insight 5.8.6:

Screenshot 2024-10-02 at 08 36 11

While troubleshooting OMERO.insight connection and notably running into the famous 4063/4064 firewall issue, this can be particularly tricky to debug as the OMERO.insight log will have the following:

2024-10-02 08:36:08,130 DEBUG [   o.o.s.env.data.login.LoginServiceImpl] (nitializer) Failed to log onto OMERO.
Reason: No host specified. Use omero.client(HOSTNAME), ICE_CONFIG, or similar.
OMERO address: idr.openmicroscopy.org
User Name: public -- Password: ******
omero.ClientError: No host specified. Use omero.client(HOSTNAME), ICE_CONFIG, or similar.
    at omero.client.init(client.java:401)
    at omero.client.<init>(client.java:269)
    at omero.client.<init>(client.java:252)
    at omero.gateway.Gateway.createSession(Gateway.java:1021)
    at omero.gateway.Gateway.connect(Gateway.java:297)
    at org.openmicroscopy.shoola.env.data.OMEROGateway.connect(OMEROGateway.java:1428)
    at org.openmicroscopy.shoola.env.data.DataServicesFactory.connect(DataServicesFactory.java:515)
    at org.openmicroscopy.shoola.env.data.login.LoginServiceImpl.attempt(LoginServiceImpl.java:144)
    at org.openmicroscopy.shoola.env.data.login.LoginServiceImpl.login(LoginServiceImpl.java:277)
    at org.openmicroscopy.shoola.env.data.login.LoginManager.login(LoginManager.java:98)
    at org.openmicroscopy.shoola.env.init.SplashScreenInit.onEnd(SplashScreenInit.java:157)
    at org.openmicroscopy.shoola.env.init.Initializer.notifyEnd(Initializer.java:188)
    at org.openmicroscopy.shoola.env.Container.runStartupProcedure(Container.java:140)
    at org.openmicroscopy.shoola.env.Container.access$000(Container.java:68)
    at org.openmicroscopy.shoola.env.Container$1.run(Container.java:185)
    at java.lang.Thread.run(Thread.java:748)

Under the hood, the connection credentials is converted into URI within the UserCredentials class and the logs unwrap the hostname of this URI when reporting the failure https://github.com/ome/omero-insight/blob/5750f8f0e1f349bc34ab2ea8ebc822fa5627bb68/src/main/java/org/openmicroscopy/shoola/env/data/login/LoginServiceImpl.java#L200 In the scenario above, having OMERO address: idr.openmicroscopy.org is particularly deceiving as it is the correct server address has been entered. Instead the following exception (No host specified) effectively highlights the issue associated with the hostname passed to the client object.