Github user NicoK commented on the issue:
https://github.com/apache/flink/pull/5449
Thanks @StephanEwen indeed - I also did not grasp the full intend of the change.
Looking at the code again, basically `ConnectionUtils#findConnectingAddress()` tries to
connect with a set of strategies for a given time and if that passes, it will fall back to
the heuristic. We could argue that if we do not find an interface to connect to the target
address in a given time, we may not do too much about it rather than (a) failing now, (b)
retrying forever, or (c) trying some heuristic that may work or fail later. The latter is
implemented and seems sensible - we also print warnings to the log in that case.
For the unit test, however, I think, the actual check should be reduced to "does return
something and does not block" since according to the code in `ConnectionUtils` we wouldn't
verify the heuristic was successful anyway:
```
// our attempts timed out. use the heuristic fallback
LOG.warn("Could not connect to {}. Selecting a local address using heuristics.", targetAddress);
InetAddress heuristic = findAddressUsingStrategy(AddressDetectionState.HEURISTIC, targetAddress,
true);
if (heuristic != null) {
return heuristic;
}
else {
LOG.warn("Could not find any IPv4 address that is not loopback or link-local. Using
localhost address.");
return InetAddress.getLocalHost();
}
```
We could maybe cycle through `InetAddress.getAllByName("localhost")` and verify the returned
value is in there - unless I read this wrong - but I don't know if that check is of any actual
value, to be honest.
If we wanted to test for more, the only outside sign of the heuristic strategy being used
is to look at the logs.
---