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;