You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by kl...@apache.org on 2019/01/17 23:22:21 UTC
[geode] branch develop updated: GEODE-6285: Make MBean names
immutable in loner
This is an automated email from the ASF dual-hosted git repository.
klund pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/geode.git
The following commit(s) were added to refs/heads/develop by this push:
new 73fea3c GEODE-6285: Make MBean names immutable in loner
73fea3c is described below
commit 73fea3c240a2010d549d066511d07ec54f866111
Author: Kirk Lund <kl...@apache.org>
AuthorDate: Wed Jan 16 17:02:42 2019 -0800
GEODE-6285: Make MBean names immutable in loner
Introduce new DistributedMember.getUniqueId which is immutable.
Change MBeanJMXAdapter to use getUniqueId for MBean names
instead of getId when a member name has not been specified.
---
.../geode/cache30/ClientMembershipDUnitTest.java | 5 ++++
...stemMXBeanWithNotificationsDistributedTest.java | 4 +--
.../management/RegionManagementDUnitTest.java | 3 +-
...niversalMembershipListenerAdapterDUnitTest.java | 5 ++++
.../geode/distributed/DistributedMember.java | 8 +++++-
.../membership/InternalDistributedMember.java | 18 ++++++++++++
.../distributed/internal/membership/NetMember.java | 5 ++++
.../internal/membership/gms/GMSMember.java | 17 ++++++++++--
.../geode/management/internal/MBeanJMXAdapter.java | 32 ++++++++++++----------
.../geode/management/internal/NotificationHub.java | 3 +-
.../internal/beans/DistributedSystemBridge.java | 18 ++++++++----
.../internal/beans/ManagementAdapter.java | 2 +-
.../geode/management/internal/cli/CliUtil.java | 2 +-
.../internal/cli/commands/RebalanceCommand.java | 4 +--
.../internal/cli/commands/ShowMetricsCommand.java | 8 +++---
.../management/internal/MBeanJMXAdapterTest.java | 27 ++++++++++++++++++
16 files changed, 126 insertions(+), 35 deletions(-)
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java
index 99f5db9..f7a355a 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/cache30/ClientMembershipDUnitTest.java
@@ -1582,6 +1582,11 @@ public class ClientMembershipDUnitTest extends ClientServerTestCase {
}
@Override
+ public String getUniqueId() {
+ return host;
+ }
+
+ @Override
public int compareTo(DistributedMember o) {
if ((o == null) || !(o instanceof TestDistributedMember)) {
throw new InternalGemFireException("Invalidly comparing TestDistributedMember to " + o);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
index 9527fd2..7505abf 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/DistributedSystemMXBeanWithNotificationsDistributedTest.java
@@ -22,7 +22,7 @@ import static org.apache.geode.distributed.ConfigurationProperties.JMX_MANAGER_S
import static org.apache.geode.distributed.ConfigurationProperties.NAME;
import static org.apache.geode.management.JMXNotificationType.REGION_CREATED;
import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberMBeanName;
-import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberNameOrId;
+import static org.apache.geode.management.internal.MBeanJMXAdapter.getMemberNameOrUniqueId;
import static org.apache.geode.management.internal.ManagementConstants.REGION_CREATED_PREFIX;
import static org.apache.geode.test.awaitility.GeodeAwaitility.await;
import static org.apache.geode.test.awaitility.GeodeAwaitility.getTimeout;
@@ -175,7 +175,7 @@ public class DistributedSystemMXBeanWithNotificationsDistributedTest implements
for (VM memberVM : toArray(memberVM1, memberVM2, memberVM3)) {
memberVM.invoke(() -> {
Notification notification =
- new Notification(REGION_CREATED, getMemberNameOrId(distributedMember),
+ new Notification(REGION_CREATED, getMemberNameOrUniqueId(distributedMember),
SequenceNumber.next(), System.currentTimeMillis(), REGION_CREATED_PREFIX + "/test");
NotificationBroadcasterSupport notifier = (MemberMBean) managementService.getMemberMXBean();
notifier.sendNotification(notification);
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/RegionManagementDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/RegionManagementDUnitTest.java
index df261a8..a4cf795 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/RegionManagementDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/RegionManagementDUnitTest.java
@@ -804,7 +804,8 @@ public class RegionManagementDUnitTest implements Serializable {
Cache cache = getCache();
String memberId =
- MBeanJMXAdapter.getMemberNameOrId(cache.getDistributedSystem().getDistributedMember());
+ MBeanJMXAdapter
+ .getMemberNameOrUniqueId(cache.getDistributedSystem().getDistributedMember());
ObjectName objectName = ObjectName.getInstance("GemFire:type=Member,member=" + memberId);
// List<Notification> notifications = new ArrayList<>();
diff --git a/geode-core/src/distributedTest/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java b/geode-core/src/distributedTest/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
index ab8ea70..70e6dab 100644
--- a/geode-core/src/distributedTest/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
+++ b/geode-core/src/distributedTest/java/org/apache/geode/management/UniversalMembershipListenerAdapterDUnitTest.java
@@ -1706,6 +1706,11 @@ public class UniversalMembershipListenerAdapterDUnitTest extends ClientServerTes
}
@Override
+ public String getUniqueId() {
+ return host;
+ }
+
+ @Override
public int compareTo(DistributedMember o) {
if ((o == null) || !(o instanceof FakeDistributedMember)) {
throw new InternalGemFireException("Invalidly comparing TestDistributedMember to " + o);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/DistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/DistributedMember.java
index 390ba62..754fb46 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/DistributedMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/DistributedMember.java
@@ -62,11 +62,17 @@ public interface DistributedMember extends Comparable<DistributedMember> {
int getProcessId();
/**
- * Returns a unique identifier for this member.
+ * Returns a unique identifier for this member. Note that this value may change during the life
+ * of the member.
*/
String getId();
/**
+ * Returns an immutable unique identifier for this member.
+ */
+ String getUniqueId();
+
+ /**
* Returns the durable attributes for this client.
*/
DurableClientAttributes getDurableClientAttributes();
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
index af08a51..3ef01b0 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/InternalDistributedMember.java
@@ -1191,6 +1191,24 @@ public class InternalDistributedMember implements DistributedMember, Externaliza
return toString();
}
+ @Override
+ public String getUniqueId() {
+ StringBuilder sb = new StringBuilder();
+ addFixedToString(sb);
+
+ // add version if not current
+ short version = netMbr.getVersionOrdinal();
+ if (version != Version.CURRENT.ordinal()) {
+ sb.append("(version:").append(Version.toString(version)).append(')');
+ }
+
+ if (SHOW_NETMEMBER) {
+ sb.append("[[").append(netMbr.getUniqueId()).append("]]");
+ }
+
+ return sb.toString();
+ }
+
public void setVersionObjectForTest(Version v) {
this.versionObj = v;
netMbr.setVersion(v);
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetMember.java
index 9c58271..c6da0b3 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/NetMember.java
@@ -110,4 +110,9 @@ public interface NetMember extends Comparable<NetMember> {
/** compare data that is not known to DistributedMember instances */
int compareAdditionalData(NetMember other);
+ /**
+ * Return a unique string id for this member which is immutable and will not change during the
+ * life of this member.
+ */
+ String getUniqueId();
}
diff --git a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMember.java b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMember.java
index e1df550..8f7e457 100755
--- a/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMember.java
+++ b/geode-core/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMember.java
@@ -330,8 +330,7 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
@Override
public String toString() {
StringBuilder sb = new StringBuilder(100);
- String uuid = SHOW_UUIDS ? (";uuid=" + getUUID().toStringLong())
- : ((this.uuidLSBs == 0 && this.uuidMSBs == 0) ? "; no uuid" : "; uuid set");
+ String uuid = formatUUID();
sb.append("GMSMember[addr=").append(inetAddr).append(";port=").append(udpPort)
.append(";processId=").append(processId).append(";name=").append(name).append(uuid)
@@ -339,6 +338,15 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
return sb.toString();
}
+ @Override
+ public String getUniqueId() {
+ StringBuilder sb = new StringBuilder(100);
+ sb.append("GMSMember[addr=").append(inetAddr);
+ sb.append(";processId=").append(processId);
+ sb.append(";name=").append(name);
+ sb.append(formatUUID()).append("]");
+ return sb.toString();
+ }
public int getUdpPort() {
return udpPort;
@@ -566,4 +574,9 @@ public class GMSMember implements NetMember, DataSerializableFixedID {
// some IDs do not have UUID or membership weight information
}
}
+
+ private String formatUUID() {
+ return SHOW_UUIDS ? ";uuid=" + getUUID().toStringLong()
+ : uuidLSBs == 0 && uuidMSBs == 0 ? "; no uuid" : "; uuid set";
+ }
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/MBeanJMXAdapter.java b/geode-core/src/main/java/org/apache/geode/management/internal/MBeanJMXAdapter.java
index a76a85c..656d694 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/MBeanJMXAdapter.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/MBeanJMXAdapter.java
@@ -94,7 +94,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
ObjectName newObjectName = objectName;
try {
if (!isGemFireMBean) {
- String member = getMemberNameOrId(distMember);
+ String member = getMemberNameOrUniqueId(distMember);
String objectKeyProperty = objectName.getKeyPropertyListString();
newObjectName = ObjectName.getInstance(
@@ -258,11 +258,11 @@ public class MBeanJMXAdapter implements ManagementConstants {
* @param member Member to find the name for
* @return The name used to register this member as a JMX bean.
*/
- public static String getMemberNameOrId(DistributedMember member) {
+ public static String getMemberNameOrUniqueId(DistributedMember member) {
if (member.getName() != null && !member.getName().equals("")) {
return makeCompliantName(member.getName());
}
- return makeCompliantName(member.getId());
+ return makeCompliantName(member.getUniqueId());
}
/**
@@ -403,7 +403,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getMemberMBeanName(DistributedMember member) {
return getObjectName(
- (MessageFormat.format(OBJECTNAME__MEMBER_MXBEAN, getMemberNameOrId(member))));
+ (MessageFormat.format(OBJECTNAME__MEMBER_MXBEAN, getMemberNameOrUniqueId(member))));
}
public static ObjectName getMemberMBeanName(String member) {
@@ -414,7 +414,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getRegionMBeanName(DistributedMember member, String regionPath) {
return getObjectName((MessageFormat.format(OBJECTNAME__REGION_MXBEAN,
- makeCompliantRegionPath(regionPath), getMemberNameOrId(member))));
+ makeCompliantRegionPath(regionPath), getMemberNameOrUniqueId(member))));
}
public static ObjectName getRegionMBeanName(String member, String regionPath) {
@@ -430,7 +430,8 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getDiskStoreMBeanName(DistributedMember member, String diskName) {
return getObjectName(
- (MessageFormat.format(OBJECTNAME__DISKSTORE_MXBEAN, diskName, getMemberNameOrId(member))));
+ (MessageFormat.format(OBJECTNAME__DISKSTORE_MXBEAN, diskName,
+ getMemberNameOrUniqueId(member))));
}
public static ObjectName getDiskStoreMBeanName(String member, String diskName) {
@@ -440,7 +441,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getClientServiceMBeanName(int serverPort, DistributedMember member) {
return getObjectName((MessageFormat.format(OBJECTNAME__CLIENTSERVICE_MXBEAN,
- String.valueOf(serverPort), getMemberNameOrId(member))));
+ String.valueOf(serverPort), getMemberNameOrUniqueId(member))));
}
public static ObjectName getClientServiceMBeanName(int serverPort, String member) {
@@ -451,7 +452,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getLockServiceMBeanName(DistributedMember member,
String lockServiceName) {
return getObjectName((MessageFormat.format(OBJECTNAME__LOCKSERVICE_MXBEAN, lockServiceName,
- getMemberNameOrId(member))));
+ getMemberNameOrUniqueId(member))));
}
public static ObjectName getLockServiceMBeanName(String member, String lockServiceName) {
@@ -461,7 +462,8 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getGatewayReceiverMBeanName(DistributedMember member) {
return getObjectName(
- (MessageFormat.format(OBJECTNAME__GATEWAYRECEIVER_MXBEAN, getMemberNameOrId(member))));
+ (MessageFormat.format(OBJECTNAME__GATEWAYRECEIVER_MXBEAN,
+ getMemberNameOrUniqueId(member))));
}
public static ObjectName getGatewayReceiverMBeanName(String member) {
@@ -471,7 +473,8 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getGatewaySenderMBeanName(DistributedMember member, String id) {
return getObjectName(
- (MessageFormat.format(OBJECTNAME__GATEWAYSENDER_MXBEAN, id, getMemberNameOrId(member))));
+ (MessageFormat.format(OBJECTNAME__GATEWAYSENDER_MXBEAN, id,
+ getMemberNameOrUniqueId(member))));
}
public static ObjectName getGatewaySenderMBeanName(String member, String id) {
@@ -481,7 +484,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getAsyncEventQueueMBeanName(DistributedMember member, String queueId) {
return getObjectName((MessageFormat.format(OBJECTNAME__ASYNCEVENTQUEUE_MXBEAN, queueId,
- getMemberNameOrId(member))));
+ getMemberNameOrUniqueId(member))));
}
public static ObjectName getDistributedRegionMbeanName(String regionPath) {
@@ -510,13 +513,14 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getManagerName() {
String member =
- getMemberNameOrId(InternalDistributedSystem.getConnectedInstance().getDistributedMember());
+ getMemberNameOrUniqueId(
+ InternalDistributedSystem.getConnectedInstance().getDistributedMember());
return getObjectName((MessageFormat.format(OBJECTNAME__MANAGER_MXBEAN, member)));
}
public static ObjectName getLocatorMBeanName(DistributedMember member) {
return getObjectName(
- (MessageFormat.format(OBJECTNAME__LOCATOR_MXBEAN, getMemberNameOrId(member))));
+ (MessageFormat.format(OBJECTNAME__LOCATOR_MXBEAN, getMemberNameOrUniqueId(member))));
}
public static ObjectName getLocatorMBeanName(String member) {
@@ -527,7 +531,7 @@ public class MBeanJMXAdapter implements ManagementConstants {
public static ObjectName getCacheServiceMBeanName(DistributedMember member,
String cacheServiceId) {
return getObjectName((MessageFormat.format(OBJECTNAME__CACHESERVICE_MXBEAN, cacheServiceId,
- getMemberNameOrId(member))));
+ getMemberNameOrUniqueId(member))));
}
public Map<ObjectName, Object> getLocalGemFireMBean() {
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/NotificationHub.java b/geode-core/src/main/java/org/apache/geode/management/internal/NotificationHub.java
index d6c7587..2b1bc14 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/NotificationHub.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/NotificationHub.java
@@ -67,7 +67,8 @@ public class NotificationHub {
logger = InternalDistributedSystem.getLogger();
this.listenerObjectMap = new HashMap<ObjectName, NotificationHubListener>();
memberSource = MBeanJMXAdapter
- .getMemberNameOrId(InternalDistributedSystem.getConnectedInstance().getDistributedMember());
+ .getMemberNameOrUniqueId(
+ InternalDistributedSystem.getConnectedInstance().getDistributedMember());
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
index 516c065..379e708 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/DistributedSystemBridge.java
@@ -1585,23 +1585,29 @@ public class DistributedSystemBridge {
public void memberDeparted(InternalDistributedMember id, boolean crashed) {
Notification notification = new Notification(JMXNotificationType.CACHE_MEMBER_DEPARTED,
- MBeanJMXAdapter.getMemberNameOrId(id), SequenceNumber.next(), System.currentTimeMillis(),
- ManagementConstants.CACHE_MEMBER_DEPARTED_PREFIX + MBeanJMXAdapter.getMemberNameOrId(id)
+ MBeanJMXAdapter.getMemberNameOrUniqueId(id), SequenceNumber.next(),
+ System.currentTimeMillis(),
+ ManagementConstants.CACHE_MEMBER_DEPARTED_PREFIX
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(id)
+ " has crashed = " + crashed);
systemLevelNotifEmitter.sendNotification(notification);
}
public void memberJoined(InternalDistributedMember id) {
Notification notification = new Notification(JMXNotificationType.CACHE_MEMBER_JOINED,
- MBeanJMXAdapter.getMemberNameOrId(id), SequenceNumber.next(), System.currentTimeMillis(),
- ManagementConstants.CACHE_MEMBER_JOINED_PREFIX + MBeanJMXAdapter.getMemberNameOrId(id));
+ MBeanJMXAdapter.getMemberNameOrUniqueId(id), SequenceNumber.next(),
+ System.currentTimeMillis(),
+ ManagementConstants.CACHE_MEMBER_JOINED_PREFIX
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(id));
systemLevelNotifEmitter.sendNotification(notification);
}
public void memberSuspect(InternalDistributedMember id, InternalDistributedMember whoSuspected) {
Notification notification = new Notification(JMXNotificationType.CACHE_MEMBER_SUSPECT,
- MBeanJMXAdapter.getMemberNameOrId(id), SequenceNumber.next(), System.currentTimeMillis(),
- ManagementConstants.CACHE_MEMBER_SUSPECT_PREFIX + MBeanJMXAdapter.getMemberNameOrId(id)
+ MBeanJMXAdapter.getMemberNameOrUniqueId(id), SequenceNumber.next(),
+ System.currentTimeMillis(),
+ ManagementConstants.CACHE_MEMBER_SUSPECT_PREFIX
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(id)
+ " By : " + whoSuspected.getName());
systemLevelNotifEmitter.sendNotification(notification);
}
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/beans/ManagementAdapter.java b/geode-core/src/main/java/org/apache/geode/management/internal/beans/ManagementAdapter.java
index a20f849..0d4f501 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/beans/ManagementAdapter.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/beans/ManagementAdapter.java
@@ -149,7 +149,7 @@ public class ManagementAdapter {
InternalDistributedSystem.getConnectedInstance().getDistributedMember());
memberSource = MBeanJMXAdapter
- .getMemberNameOrId(internalCache.getDistributedSystem().getDistributedMember());
+ .getMemberNameOrUniqueId(internalCache.getDistributedSystem().getDistributedMember());
// Type casting to MemberMXBean to expose only those methods described in
// the interface;
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
index 623fa19..2a6f13d 100755
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/CliUtil.java
@@ -134,7 +134,7 @@ public class CliUtil {
for (DistributedMember member : allClusterMembers) {
for (String regionAssociatedMemberName : regionAssociatedMemberNames) {
- String name = MBeanJMXAdapter.getMemberNameOrId(member);
+ String name = MBeanJMXAdapter.getMemberNameOrUniqueId(member);
if (name.equals(regionAssociatedMemberName)) {
matchedMembers.add(member);
if (!returnAll) {
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
index 9bf82e4..c7d3aaf 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/RebalanceCommand.java
@@ -384,7 +384,7 @@ public class RebalanceCommand extends InternalGfshCommand {
while (it.hasNext() && !matchFound) {
DistributedMember dsmember = (DistributedMember) it.next();
for (String memberName : membersName) {
- if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
+ if (MBeanJMXAdapter.getMemberNameOrUniqueId(dsmember).equals(memberName)) {
member = dsmember;
matchFound = true;
break;
@@ -663,7 +663,7 @@ public class RebalanceCommand extends InternalGfshCommand {
String[] memberNames = bean.getMembers();
for (DistributedMember dsmember : dsMembers) {
for (String memberName : memberNames) {
- if (MBeanJMXAdapter.getMemberNameOrId(dsmember).equals(memberName)) {
+ if (MBeanJMXAdapter.getMemberNameOrUniqueId(dsmember).equals(memberName)) {
MemberPRInfo memberAndItsPRRegions = new MemberPRInfo();
memberAndItsPRRegions.region = regionName;
memberAndItsPRRegions.dsMemberList.add(dsmember);
diff --git a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommand.java b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommand.java
index fc0351c..4dc1415 100644
--- a/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommand.java
+++ b/geode-core/src/main/java/org/apache/geode/management/internal/cli/commands/ShowMetricsCommand.java
@@ -184,7 +184,7 @@ public class ShowMetricsCommand extends GfshCommand {
if (memberMxBean == null) {
String errorMessage = CliStrings.format(CliStrings.SHOW_METRICS__ERROR, "Member MBean for "
- + MBeanJMXAdapter.getMemberNameOrId(distributedMember) + " not found");
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(distributedMember) + " not found");
return ResultModel.createError(errorMessage);
}
@@ -195,7 +195,7 @@ public class ShowMetricsCommand extends GfshCommand {
if (csMxBean == null) {
return ResultModel.createError(
CliStrings.format(CliStrings.SHOW_METRICS__CACHE__SERVER__NOT__FOUND,
- cacheServerPort, MBeanJMXAdapter.getMemberNameOrId(distributedMember)));
+ cacheServerPort, MBeanJMXAdapter.getMemberNameOrUniqueId(distributedMember)));
}
}
@@ -279,14 +279,14 @@ public class ShowMetricsCommand extends GfshCommand {
if (regionMxBean == null) {
String errorMessage = CliStrings.format(CliStrings.SHOW_METRICS__ERROR,
"Region MBean for " + regionName + " on member "
- + MBeanJMXAdapter.getMemberNameOrId(distributedMember) + " not found");
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(distributedMember) + " not found");
return ResultModel.createError(errorMessage);
}
ResultModel result = new ResultModel();
TabularResultModel metricsTable = result.addTable("metrics");
metricsTable.setHeader("Metrics for region:" + regionName + " On Member "
- + MBeanJMXAdapter.getMemberNameOrId(distributedMember));
+ + MBeanJMXAdapter.getMemberNameOrUniqueId(distributedMember));
Set<Category> categoriesToDisplay = ArrayUtils.isNotEmpty(categoriesArr)
? getCategorySet(categoriesArr) : new HashSet<>(REGION_METRIC_CATEGORIES);
diff --git a/geode-core/src/test/java/org/apache/geode/management/internal/MBeanJMXAdapterTest.java b/geode-core/src/test/java/org/apache/geode/management/internal/MBeanJMXAdapterTest.java
index 4f3a478..a95cc78 100644
--- a/geode-core/src/test/java/org/apache/geode/management/internal/MBeanJMXAdapterTest.java
+++ b/geode-core/src/test/java/org/apache/geode/management/internal/MBeanJMXAdapterTest.java
@@ -15,6 +15,7 @@
package org.apache.geode.management.internal;
+import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.doThrow;
@@ -34,7 +35,13 @@ import org.junit.Test;
import org.apache.geode.distributed.DistributedMember;
+/**
+ * Unique tests for {@link MBeanJMXAdapter}.
+ */
public class MBeanJMXAdapterTest {
+
+ private static final String UNIQUE_ID = "unique-id";
+
private ObjectName objectName;
private MBeanServer mockMBeanServer;
private DistributedMember distMember;
@@ -44,6 +51,7 @@ public class MBeanJMXAdapterTest {
mockMBeanServer = mock(MBeanServer.class);
objectName = new ObjectName("d:type=Foo,name=Bar");
distMember = mock(DistributedMember.class);
+ when(distMember.getUniqueId()).thenReturn(UNIQUE_ID);
}
@Test
@@ -86,4 +94,23 @@ public class MBeanJMXAdapterTest {
// during registration
verify(mBeanJMXAdapter, times(1)).logRegistrationWarning(any(ObjectName.class), eq(true));
}
+
+ @Test
+ public void getMemberNameOrUniqueIdReturnsNameIfProvided() {
+ String memberName = "member-name";
+ when(distMember.getName()).thenReturn(memberName);
+
+ String result = MBeanJMXAdapter.getMemberNameOrUniqueId(distMember);
+
+ assertThat(result).isEqualTo(memberName);
+ }
+
+ @Test
+ public void getMemberNameOrUniqueIdReturnsUniqueIdIfNameIsNotProvided() {
+ when(distMember.getName()).thenReturn("");
+
+ String result = MBeanJMXAdapter.getMemberNameOrUniqueId(distMember);
+
+ assertThat(result).isEqualTo(UNIQUE_ID);
+ }
}