You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@geode.apache.org by bs...@apache.org on 2020/04/01 18:21:50 UTC

[geode] branch feature/GEODE-7926 created (now ba6436d)

This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a change to branch feature/GEODE-7926
in repository https://gitbox.apache.org/repos/asf/geode.git.


      at ba6436d  GEODE-7926: GMSMemberData is doing unnecessary reverse-DNS lookups

This branch includes the following new commits:

     new ba6436d  GEODE-7926: GMSMemberData is doing unnecessary reverse-DNS lookups

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[geode] 01/01: GEODE-7926: GMSMemberData is doing unnecessary reverse-DNS lookups

Posted by bs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bschuchardt pushed a commit to branch feature/GEODE-7926
in repository https://gitbox.apache.org/repos/asf/geode.git

commit ba6436debc4ed23b670435d9c1ab1b12846d6238
Author: Bruce Schuchardt <bs...@pivotal.io>
AuthorDate: Wed Apr 1 11:17:19 2020 -0700

    GEODE-7926: GMSMemberData is doing unnecessary reverse-DNS lookups
    
    The hostname established in GMSMemberData by its serialization method
    isn't important for Membership communications.  There's no reason to do
    an InetAddress -> hostname lookup in this method, and it's slowing
    things down when sending messages via JGroups.
---
 .../membership/gms/GMSMemberDataJUnitTest.java     | 49 +++++++++++-----------
 .../internal/membership/gms/GMSMemberData.java     |  4 +-
 2 files changed, 28 insertions(+), 25 deletions(-)

diff --git a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberDataJUnitTest.java b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberDataJUnitTest.java
index b50dcf2..592465e 100644
--- a/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberDataJUnitTest.java
+++ b/geode-membership/src/integrationTest/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberDataJUnitTest.java
@@ -14,11 +14,7 @@
  */
 package org.apache.geode.distributed.internal.membership.gms;
 
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -35,6 +31,7 @@ import org.junit.Before;
 import org.junit.Test;
 import org.junit.experimental.categories.Category;
 
+import org.apache.geode.internal.inet.LocalHostUtil;
 import org.apache.geode.internal.serialization.BufferDataOutputStream;
 import org.apache.geode.internal.serialization.DSFIDSerializer;
 import org.apache.geode.internal.serialization.DSFIDSerializerFactory;
@@ -58,13 +55,13 @@ public class GMSMemberDataJUnitTest {
   @Test
   public void testEqualsNotSameType() {
     GMSMemberData member = new GMSMemberData();
-    assertFalse(member.equals("Not a GMSMemberData"));
+    assertThat(member).isNotEqualTo("Not a GMSMemberData");
   }
 
   @Test
   public void testEqualsIsSame() {
     GMSMemberData member = new GMSMemberData();
-    assertTrue(member.equals(member));
+    assertThat(member).isEqualTo(member);
   }
 
   @Test
@@ -72,7 +69,7 @@ public class GMSMemberDataJUnitTest {
     GMSMemberData member = new GMSMemberData();
     UUID uuid = new UUID(0, 0);
     member.setUUID(uuid);
-    assertEquals(0, member.compareTo(member));
+    assertThat(member.compareTo(member)).isZero();
   }
 
   private GMSMemberData createGMSMember(byte[] inetAddress, int viewId, long msb, long lsb) {
@@ -89,7 +86,7 @@ public class GMSMemberDataJUnitTest {
   public void testCompareToInetAddressIsLongerThan() {
     GMSMemberData member1 = createGMSMember(new byte[] {1, 1, 1, 1, 1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1, 1, 1, 1}, 1, 1, 1);
-    assertEquals(1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isGreaterThan(0);
   }
 
   @Test
@@ -100,7 +97,7 @@ public class GMSMemberDataJUnitTest {
             member1.getVersionOrdinal(),
             member1.getUuidMostSignificantBits(), member1.getUuidLeastSignificantBits(),
             member1.getVmViewId());
-    assertEquals(0, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isZero();
   }
 
   @Test
@@ -109,70 +106,70 @@ public class GMSMemberDataJUnitTest {
     GMSMemberData member2 = new GMSMemberData(member1.getInetAddress(), member1.getMembershipPort(),
         member1.getVersionOrdinal(), member1.getUuidMostSignificantBits(),
         member1.getUuidLeastSignificantBits(), 100);
-    assertEquals(false, member1.equals(member2));
+    assertThat(member1).isNotEqualTo(member2);
   }
 
   @Test
   public void testCompareToInetAddressIsShorterThan() {
     GMSMemberData member1 = createGMSMember(new byte[] {1, 1, 1, 1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1, 1, 1, 1, 1}, 1, 1, 1);
-    assertEquals(-1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isLessThan(0);
   }
 
   @Test
   public void testCompareToInetAddressIsGreater() {
     GMSMemberData member1 = createGMSMember(new byte[] {1, 2, 1, 1, 1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1, 1, 1, 1, 1}, 1, 1, 1);
-    assertEquals(1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isGreaterThan(0);
   }
 
   @Test
   public void testCompareToInetAddressIsLessThan() {
     GMSMemberData member1 = createGMSMember(new byte[] {1, 1, 1, 1, 1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1, 2, 1, 1, 1}, 1, 1, 1);
-    assertEquals(-1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isLessThan(0);
   }
 
   @Test
   public void testCompareToMyViewIdLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 2, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 1, 1, 1);
-    assertEquals(1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isGreaterThan(0);
   }
 
   @Test
   public void testCompareToTheirViewIdLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 2, 1, 1);
-    assertEquals(-1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isLessThan(0);
   }
 
   @Test
   public void testCompareToMyMSBLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 1, 2, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 1, 1, 1);
-    assertEquals(1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isGreaterThan(0);
   }
 
   @Test
   public void testCompareToTheirMSBLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 1, 2, 1);
-    assertEquals(-1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isLessThan(0);
   }
 
   @Test
   public void testCompareToMyLSBLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 1, 1, 2);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 1, 1, 1);
-    assertEquals(1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isGreaterThan(0);
   }
 
   @Test
   public void testCompareToTheirLSBLarger() {
     GMSMemberData member1 = createGMSMember(new byte[] {1}, 1, 1, 1);
     GMSMemberData member2 = createGMSMember(new byte[] {1}, 1, 1, 2);
-    assertEquals(-1, member1.compareTo(member2));
+    assertThat(member1.compareTo(member2)).isLessThan(0);
   }
 
   @Test
@@ -180,7 +177,7 @@ public class GMSMemberDataJUnitTest {
     GMSMemberData member = new GMSMemberData();
     UUID uuid = new UUID(0, 0);
     member.setUUID(uuid);
-    assertNull(member.getUUID());
+    assertThat(member.getUUID()).isNull();
   }
 
   @Test
@@ -188,7 +185,7 @@ public class GMSMemberDataJUnitTest {
     GMSMemberData member = new GMSMemberData();
     UUID uuid = new UUID(1, 1);
     member.setUUID(uuid);
-    assertNotNull(member.getUUID());
+    assertThat(member.getUUID()).isNotNull();
   }
 
   /**
@@ -204,6 +201,7 @@ public class GMSMemberDataJUnitTest {
   public void testGMSMemberBackwardCompatibility() throws Exception {
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     GMSMemberData member = new GMSMemberData();
+    member.setInetAddr(LocalHostUtil.getLocalHost());
     DataOutput dataOutput = new DataOutputStream(baos);
     SerializationContext serializationContext = dsfidSerializer
         .createSerializationContext(dataOutput);
@@ -216,7 +214,10 @@ public class GMSMemberDataJUnitTest {
         .createDeserializationContext(dataInput);
     GMSMemberData newMember = new GMSMemberData();
     newMember.readEssentialData(dataInput, deserializationContext);
-    assertEquals(member.getVmKind(), newMember.getVmKind());
+    assertThat(newMember.getVmKind()).isEqualTo(member.getVmKind());
+    assertThat(newMember.getInetAddress()).isNotNull();
+    assertThat(newMember.getInetAddress().getHostAddress()).isEqualTo(newMember.getHostName());
+
 
     // vmKind should not be transmitted to a member with version GFE_90 or earlier
     dataOutput = new BufferDataOutputStream(Version.GFE_90);
@@ -227,7 +228,7 @@ public class GMSMemberDataJUnitTest {
     dataInput = new VersionedDataInputStream(stream, Version.GFE_90);
     newMember = new GMSMemberData();
     newMember.readEssentialData(dataInput, deserializationContext);
-    assertEquals(0, newMember.getVmKind());
+    assertThat(newMember.getVmKind()).isZero();
   }
 
 
diff --git a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberData.java b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberData.java
index b951191..ad00642 100644
--- a/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberData.java
+++ b/geode-membership/src/main/java/org/apache/geode/distributed/internal/membership/gms/GMSMemberData.java
@@ -589,7 +589,9 @@ public class GMSMemberData implements MemberData, Comparable<GMSMemberData> {
 
     this.inetAddr = StaticSerialization.readInetAddress(in);
     if (this.inetAddr != null) {
-      this.hostName = inetAddr.getHostName();
+      // use address as hostname at this level. getHostName() will do a reverse-dns lookup,
+      // which is very expensive
+      this.hostName = inetAddr.getHostAddress();
     }
     this.udpPort = in.readInt();
     this.vmViewId = in.readInt();