ERROR: No hosts currently compatible with this global configuration:

After Security update on High Sierra iMac, all my suites are now emitting this message after register, validate, and run:

REGISTERED test -> test
Valid for cylc-7.8.8

ERROR: No hosts currently compatible with this global configuration:
  suite servers -> run hosts:
    []
  suite servers -> run host select -> rank:
    random
  suite servers -> run host select -> thresholds:
    
ERROR Contact info not found for suite "test", suite not running?

the ~/.cylc/global.rc file shows no differences over quite some time with respect to the offending settings:

[suite servers]
    run ports = 43001..43100
    run hosts =
    condemned hosts =
    scan hosts =
    scan ports = 43001..43100
    auto restart delay =
    [[run host select]]
        thresholds =
        rank = random

maybe the ports?

generate a new global.rc?

generating new global.rc did not effect any change to the error messages

Your Cylc global config settings look OK. If run hosts is empty, cylc run should default to starting a scheduler on localhost. I get the same error if I set run hosts = blah where blah is a non-existent host.

Maybe your OS security update has done something horrible to your network settings, affecting host visibility??

Maybe your OS security update has done something horrible to your network settings, affecting host visibility??

Likely something along these lines, have a go at connecting to localhost:

$ ssh localhost bash -c 'hostname'

That should return the hostname of the machine. If it doesn’t try adding -v after the ssh which should provide some debug info about why the connection failed.

<$ ssh localhost bash -c ‘hostname’
executing the above command (locally, on the offending machine) did elicit the correct hostname.
executing the above command from another machine, using localhost|=ip address, did elicit the correct hostname.

i see where we/re going with this.
time to trace HostAppointer

Hmmm, is your global config overwriting the default with nothing?

Could try removing [suite servers]run hosts or setting [suite servers]run hosts=localhost.

generate a new global.rc?

No need to generate a global.rc, the defaults are baked into Cylc, you only need to define the defaults you want to change.

neither of the suggestions.olivers.sanders, e.g. “…try removing…or setting…” effected a change in the result.

Curious, I’m not sure.

Adding the --debug flag to cylc run might yield some insights to whats going on. The error you posted above seems to suggest that the HostAppointer was asked to choose a host from an empty list whereas we would expect the default run hosts=localhost.

Manually specifying the host on the CLI might bypass the issue:

$ cylc run --host=localhost <suite>

Manually specifying local host, e.g. cylc run --host=localhost test elicits same error message.

here/s what i do know:

lib/cylc/hostuserutil.py

116 def _get_host_info(self, target=None):
117 “”“Return the extended info of the current host.”""
118 if target not in self._host_exs:
119 if target is None:
120 target = socket.getfqdn() <-----

sets the ‘None’ value of target to:

('target1 ', None)
('target2 ', ‘69.1.168.192.in-addr.arpa’)

ha… the dotted quad is backwards

experimentation with the ‘target’ value (and overriding value in _get_host_info) permits the suite to run.

def _get_host_info(self, target=None):
    """Return the extended info of the current host."""
    print ("_get_host_info")
    if target not in self._host_exs:
        print ("target1   ", target)
        if target is None:
            target = socket.getfqdn()
        print ("target2   ", target)

target = ‘in-addr.arpa.192.168.1.69’

        target = '192.168.1.69'
        print ("target3   ", target)

suggestions on a robust solution?

oliver.sanders’ suggestion from another thread “Suites, MacBookAir M1 issue”

‘’‘DNS Patch
From Mac OS Catalina onwards the socket.getfqdn interface is broken for the default DNS configuration. If on a personal machine applying this patch to lib/python/hostuserutil.py should do the trick.
‘’’

DNS patch

this change permits cylc suites to run now.

hostuserutil.py
“- target = socket.getfqdn()”
“+ target = socket.gethostname()”

2 Likes

Good glad that worked.

I haven’t seen that address format come out of socket.getfqdn before, apparently it’s for IPv4 reverse DNS lookup - Reverse DNS lookup - Wikipedia which is consistent with the behaviour from Catalina onwards which give an IPv6 arpa address:

1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa
Security Update 2020-005                           10.13.6    05/16/2021, 10:31:27  

the trouble began with the update listed above.

cylc-7.8.x had been running fine before the update.