You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by re...@apache.org on 2016/01/18 11:28:40 UTC
svn commit: r1725216 -
/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
Author: reschke
Date: Mon Jan 18 10:28:40 2016
New Revision: 1725216
URL: http://svn.apache.org/viewvc?rev=1725216&view=rev
Log:
OAK-3885: enhance stability of clusterNodeInfo's machineId by de-prioritizing interfaces that appear to be virtual
Modified:
jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
Modified: jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java?rev=1725216&r1=1725215&r2=1725216&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java (original)
+++ jackrabbit/oak/trunk/oak-core/src/main/java/org/apache/jackrabbit/oak/plugins/document/ClusterNodeInfo.java Mon Jan 18 10:28:40 2016
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Enumeration;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.UUID;
@@ -902,6 +903,7 @@ public class ClusterNodeInfo {
Exception exception = null;
try {
ArrayList<String> macAddresses = new ArrayList<String>();
+ ArrayList<String> likelyVirtualMacAddresses = new ArrayList<String>();
ArrayList<String> otherAddresses = new ArrayList<String>();
String hwaFromSysProp = getHWAFromSystemProperty();
if ("".equals(hwaFromSysProp)) {
@@ -916,7 +918,14 @@ public class ClusterNodeInfo {
String str = StringUtils.convertBytesToHex(hwa);
if (hwa.length == 6) {
// likely a MAC address
- macAddresses.add(str);
+ String displayName = ni.getDisplayName().toLowerCase(Locale.ENGLISH);
+ // de-prioritize addresses that are likely to be virtual (see OAK-3885)
+ boolean looksVirtual = displayName.indexOf("virtual") >= 0 || displayName.indexOf("vpn") >= 0;
+ if (!looksVirtual) {
+ macAddresses.add(str);
+ } else {
+ likelyVirtualMacAddresses.add(str);
+ }
} else {
otherAddresses.add(str);
}
@@ -938,7 +947,8 @@ public class ClusterNodeInfo {
}
if (LOG.isDebugEnabled()) {
- LOG.debug("getMachineId(): discovered addresses: {} {}", macAddresses, otherAddresses);
+ LOG.debug("getMachineId(): discovered addresses: {} {} {}", macAddresses, likelyVirtualMacAddresses,
+ otherAddresses);
}
if (macAddresses.size() > 0) {
@@ -946,6 +956,9 @@ public class ClusterNodeInfo {
// the same one is used
Collections.sort(macAddresses);
return "mac:" + macAddresses.get(0);
+ } else if (likelyVirtualMacAddresses.size() > 0) {
+ Collections.sort(likelyVirtualMacAddresses);
+ return "mac:" + likelyVirtualMacAddresses.get(0);
} else if (otherAddresses.size() > 0) {
// try the lowest "other" address
Collections.sort(otherAddresses);