Unverified Commit 6f9970b1 authored by CalvinKirs's avatar CalvinKirs Committed by GitHub
Browse files

[Feature-2574][Server]Specify Network Interface (#3186)

* [Feature-2574][Server]Specify Network Interface
This closes #2574

* code smell

* code smell

* move DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE to Constants.java
parent 6c9ac84f
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -978,5 +978,10 @@ public final class Constants {
    public static final int NORAML_NODE_STATUS = 0;
    public static final int ABNORMAL_NODE_STATUS = 1;

    /**
     * net system properties
     */
    public static final String DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE = "dolphin.scheduler.network.interface.preferred";


}
+17 −5
Original line number Diff line number Diff line
@@ -21,13 +21,11 @@ import org.slf4j.LoggerFactory;

import java.io.IOException;
import java.net.*;
import java.util.Enumeration;
import java.util.LinkedList;
import java.util.List;
import java.util.Optional;
import java.util.*;
import java.util.regex.Pattern;

import static java.util.Collections.emptyList;
import static org.apache.dolphinscheduler.common.Constants.DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE;

/**
 * NetUtils
@@ -171,9 +169,19 @@ public class NetUtils {
            logger.warn("ValidNetworkInterfaces exception", e);
        }

        NetworkInterface result = null;
        // Try to specify config NetWork Interface
        for (NetworkInterface networkInterface : validNetworkInterfaces) {
            if (isSpecifyNetworkInterface(networkInterface)) {
                result = networkInterface;
                break;
            }
        }

        if (null != result) {
            return result;
        }
        return validNetworkInterfaces.get(0);

    }

    /**
@@ -206,4 +214,8 @@ public class NetUtils {
                || !networkInterface.isUp();
    }

    private static boolean isSpecifyNetworkInterface(NetworkInterface networkInterface) {
        String preferredNetworkInterface = System.getProperty(DOLPHIN_SCHEDULER_PREFERRED_NETWORK_INTERFACE);
        return Objects.equals(networkInterface.getDisplayName(), preferredNetworkInterface);
    }
}