stoty commented on a change in pull request #62:
URL: https://github.com/apache/phoenix-omid/pull/62#discussion_r468369903
##########
File path: common/src/main/java/org/apache/omid/NetworkUtils.java
##########
@@ -34,6 +36,14 @@
public static String getDefaultNetworkInterface() {
+ try (DatagramSocket s=new DatagramSocket()) {
Review comment:
We specifically don't want to bind to localhost, we want to find to the
"public" network interface that the clients can access.
The idea is that a random public IP address will be routed through the
default route, which goes through the "public" network interface, and the
clients will be able to access the server on the IP address of this "public'
interface.
This is all just hacky guesswork as there is no way to definitely know which
interface we want. What we really should do is make the public address
configurable.
As for the actual implementation:
- The DatagramSocket() constructor will bind to 0.0.0.0, the wildcard
address. (though we don't really care about the listening part)
- connect() will change the internal state of the Socket to only allow
traffic to/from that address. We don't really care about that, what we do care
about is that as a side effect, it will set the socket's localAddress to that
of the outgoing interface that 1.1.1.1 is accessible via, and which we hope is
the "public interface"
- After this, we will close the socket without having transmitted or
received a single packet on it.
Revisiting this, we'd probably have a better chance of finding the right
interface if we used an address from the ZK ensemble instead of 1.1.1.1, in
case there's some weird networking setup in the cluster.
Furthermore, I think that the method of trying to figure out the interface,
and then looking up the address of that interface is also flawed, as interfaces
may have multiple addressed bound to them. A better approach would be using
s.getLocalAddress() directly.
Completely rewriting that logic is outside the scope of this ticket, though.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]