Github user StephanEwen commented on the issue:
https://github.com/apache/flink/pull/2917
It's a cool fix to help Flink run in container environments.
There is one concern I have with the code, though: Previously, we decided
explicitly to encode IP addresses in the Akka URLs, because Akka requires an
exact match of the host in the URL.
That has two problems:
- All nodes need to agree to use either hostname or address. Enforcing to
use the address was possible, enforcing to use the hostname not.
- More importantly: IPv6 has multiple valid representations of the same
address. If different nodes have the same address but represent it as a string
differently, the messages would not arrive. That's why we have a "normalizing"
encoding step that makes sure all URLs would be the same. That step relied on
translating
I see two dangers now that may occur:
- If different parts of the code or the JDK do a subtle change of
behavior (i.e. resolve the InetAddress), then some nodes may have a hostname in
the URL, others an address.
- If two machines have a slightly different network configuration
(especially concerning preferences to represent/encode IPv6 addresses) and the
users set the IP address as the JobManager host, then they might create
different Akka URLs and the machines cannot talk to each other again.
I am a bit unsure how to proceed from here. Is there any way we can keep
using IP addresses in the Akka URLs? Or does that just inherently not make
sense with "dynamic hostnames" as they are used in container environments?
---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at [email protected] or file a JIRA ticket
with INFRA.
---