You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ratis.apache.org by sz...@apache.org on 2017/08/02 22:12:17 UTC

incubator-ratis git commit: RATIS-98. Cache RaftId byte[] and String.

Repository: incubator-ratis
Updated Branches:
  refs/heads/master fb702de7c -> 1e7a06ef1


RATIS-98. Cache RaftId byte[] and String.


Project: http://git-wip-us.apache.org/repos/asf/incubator-ratis/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ratis/commit/1e7a06ef
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ratis/tree/1e7a06ef
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ratis/diff/1e7a06ef

Branch: refs/heads/master
Commit: 1e7a06ef1877e062e749adbc298e5f7a2851c990
Parents: fb702de
Author: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Authored: Wed Aug 2 15:11:31 2017 -0700
Committer: Tsz-Wo Nicholas Sze <sz...@hortonworks.com>
Committed: Wed Aug 2 15:11:31 2017 -0700

----------------------------------------------------------------------
 .../org/apache/ratis/protocol/ClientId.java     |  4 +-
 .../org/apache/ratis/protocol/RaftGroupId.java  |  4 +-
 .../java/org/apache/ratis/protocol/RaftId.java  | 49 ++++++++++++++------
 .../org/apache/ratis/protocol/RaftPeer.java     |  3 +-
 ...nedClientProtocolClientSideTranslatorPB.java |  2 +-
 .../apache/ratis/server/impl/LogAppender.java   |  3 +-
 6 files changed, 45 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
index 2af6558..a058a21 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/ClientId.java
@@ -38,7 +38,7 @@ public class ClientId extends RaftId {
   }
 
   @Override
-  public String toString() {
-    return "client-" + super.toString();
+  String createUuidString() {
+    return "client-" + super.createUuidString();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
index 0cb3a07..f75ac8f 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftGroupId.java
@@ -35,7 +35,7 @@ public class RaftGroupId extends RaftId {
   }
 
   @Override
-  public String toString() {
-    return "group-" + super.toString();
+  String createUuidString() {
+    return "group-" + super.createUuidString();
   }
 }

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
index 86d7ccc..5556c17 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftId.java
@@ -17,47 +17,70 @@
  */
 package org.apache.ratis.protocol;
 
+import org.apache.ratis.util.JavaUtils;
 import org.apache.ratis.util.Preconditions;
 
 import java.nio.ByteBuffer;
 import java.util.Objects;
 import java.util.UUID;
+import java.util.function.Supplier;
 
 public abstract class RaftId {
   public static final int BYTE_LENGTH = 16;
 
-  private final UUID uuid;
-
-  protected RaftId(UUID id) {
-    this.uuid = Objects.requireNonNull(id, "id == null");
-  }
-
-  public RaftId(byte[] data) {
+  static UUID toUuid(byte[] data) {
     Objects.requireNonNull(data, "data == null");
     Preconditions.assertTrue(data.length == BYTE_LENGTH,
         "data.length = %s != BYTE_LENGTH = %s", data.length, BYTE_LENGTH);
     ByteBuffer buffer = ByteBuffer.wrap(data);
-    this.uuid = new UUID(buffer.getLong(), buffer.getLong());
+    return new UUID(buffer.getLong(), buffer.getLong());
   }
 
-  public byte[] toBytes() {
+  static byte[] toBytes(UUID uuid) {
+    Objects.requireNonNull(uuid, "uuid == null");
     ByteBuffer buf = ByteBuffer.wrap(new byte[BYTE_LENGTH]);
     buf.putLong(uuid.getMostSignificantBits());
     buf.putLong(uuid.getLeastSignificantBits());
     return buf.array();
   }
 
+  private final UUID uuid;
+  private final byte[] uuidBytes;
+  private final Supplier<String> uuidString;
+
+  private RaftId(UUID uuid, byte[] bytes) {
+    this.uuid = uuid;
+    this.uuidBytes = bytes;
+    this.uuidString = JavaUtils.memoize(this::createUuidString);
+  }
+
+  RaftId(UUID uuid) {
+    this(uuid, toBytes(uuid));
+  }
+
+  public RaftId(byte[] uuidBytes) {
+    this(toUuid(uuidBytes), uuidBytes);
+  }
+
+  String createUuidString() {
+    return uuid.toString().toUpperCase();
+  }
+
+  public byte[] toBytes() {
+    return uuidBytes;
+  }
+
   @Override
   public String toString() {
-    return uuid.toString();
+    return uuidString.get();
   }
 
-
   @Override
   public boolean equals(Object other) {
     return other == this ||
-        (other instanceof RaftId &&
-            uuid.equals(((RaftId) other).uuid));
+        (other instanceof RaftId
+            && this.getClass() == other.getClass()
+            && uuid.equals(((RaftId) other).uuid));
   }
 
   @Override

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeer.java
----------------------------------------------------------------------
diff --git a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeer.java b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeer.java
index c2ba91d..26c9c4c 100644
--- a/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeer.java
+++ b/ratis-common/src/main/java/org/apache/ratis/protocol/RaftPeer.java
@@ -20,6 +20,7 @@ package org.apache.ratis.protocol;
 import org.apache.ratis.util.NetUtils;
 
 import java.net.InetSocketAddress;
+import java.util.Objects;
 
 /**
  * A {@link RaftPeer} is a server in a Raft cluster.
@@ -46,7 +47,7 @@ public class RaftPeer {
 
   /** Construct a peer with the given id and address. */
   public RaftPeer(RaftPeerId id, String address) {
-    this.id = id;
+    this.id = Objects.requireNonNull(id, "id == null");
     this.address = address;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
----------------------------------------------------------------------
diff --git a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
index 8d1eff2..710b691 100644
--- a/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
+++ b/ratis-hadoop/src/main/java/org/apache/ratis/hadooprpc/client/CombinedClientProtocolClientSideTranslatorPB.java
@@ -25,7 +25,6 @@ import org.apache.ratis.protocol.RaftClientReply;
 import org.apache.ratis.protocol.RaftClientRequest;
 import org.apache.ratis.protocol.ReinitializeRequest;
 import org.apache.ratis.protocol.SetConfigurationRequest;
-import org.apache.ratis.shaded.com.google.common.base.Function;
 import org.apache.ratis.shaded.com.google.protobuf.ServiceException;
 import org.apache.ratis.shaded.proto.RaftProtos.RaftClientReplyProto;
 import org.apache.ratis.util.CheckedFunction;
@@ -34,6 +33,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import java.io.IOException;
+import java.util.function.Function;
 
 
 @InterfaceAudience.Private

http://git-wip-us.apache.org/repos/asf/incubator-ratis/blob/1e7a06ef/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
----------------------------------------------------------------------
diff --git a/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java b/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
index ff071d5..36c6171 100644
--- a/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
+++ b/ratis-server/src/main/java/org/apache/ratis/server/impl/LogAppender.java
@@ -33,6 +33,7 @@ import org.apache.ratis.util.Preconditions;
 import org.apache.ratis.util.ProtoUtils;
 import org.apache.ratis.util.Timestamp;
 import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 import java.io.File;
 import java.io.FileInputStream;
@@ -47,7 +48,7 @@ import static org.apache.ratis.server.impl.RaftServerConstants.INVALID_LOG_INDEX
  * A daemon thread appending log entries to a follower peer.
  */
 public class LogAppender extends Daemon {
-  public static final Logger LOG = RaftServerImpl.LOG;
+  public static final Logger LOG = LoggerFactory.getLogger(LogAppender.class);
 
   protected final RaftServerImpl server;
   private final LeaderState leaderState;