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 <[email protected]> Authored: Wed Aug 2 15:11:31 2017 -0700 Committer: Tsz-Wo Nicholas Sze <[email protected]> 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;
