This is an automated email from the ASF dual-hosted git repository.
szetszwo pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new 19f43c15392 HDDS-14561. SCMRatisRequest/ResponseProto should use the
shaded protobuf from Ratis (#9733)
19f43c15392 is described below
commit 19f43c15392f7c0d0a3af22f84df0c9ed573f2df
Author: Russole <[email protected]>
AuthorDate: Wed Feb 18 00:47:36 2026 +0800
HDDS-14561. SCMRatisRequest/ResponseProto should use the shaded protobuf
from Ratis (#9733)
---
hadoop-hdds/interface-server/pom.xml | 2 +
.../apache/hadoop/hdds/scm/ha/SCMRatisRequest.java | 13 ++--
.../hadoop/hdds/scm/ha/SCMRatisResponse.java | 4 +-
.../hadoop/hdds/scm/ha/io/BigIntegerCodec.java | 6 +-
.../apache/hadoop/hdds/scm/ha/io/BooleanCodec.java | 2 +-
.../hadoop/hdds/scm/ha/io/ByteStringCodec.java | 14 ++--
.../org/apache/hadoop/hdds/scm/ha/io/Codec.java | 4 +-
.../apache/hadoop/hdds/scm/ha/io/CodecFactory.java | 12 +--
.../apache/hadoop/hdds/scm/ha/io/EnumCodec.java | 9 +--
.../hdds/scm/ha/io/GeneratedMessageCodec.java | 24 +++---
.../apache/hadoop/hdds/scm/ha/io/IntegerCodec.java | 8 +-
.../apache/hadoop/hdds/scm/ha/io/ListCodec.java | 4 +-
.../apache/hadoop/hdds/scm/ha/io/LongCodec.java | 8 +-
.../hdds/scm/ha/io/ManagedSecretKeyCodec.java | 19 +++--
...yteStringCodec.java => ScmByteStringCodec.java} | 6 +-
...ageCodec.java => ScmGeneratedMessageCodec.java} | 14 ++--
.../apache/hadoop/hdds/scm/ha/io/StringCodec.java | 6 +-
.../hdds/scm/ha/io/X509CertificateCodec.java | 8 +-
.../ha/SCMRatisProtocolCompatibilityTestUtil.java | 89 ++++++++++++++++++++++
.../scm/ha/TestSCMRatisProtocolCompatibility.java | 70 +++++++----------
.../hadoop/hdds/scm/ha/TestSCMRatisRequest.java | 20 ++---
.../hadoop/hdds/scm/ha/TestSCMRatisResponse.java | 11 ++-
.../hadoop/hdds/scm/ha/io/TestBigIntegerCodec.java | 2 +-
.../hdds/scm/ha/io/TestX509CertificateCodec.java | 8 +-
24 files changed, 222 insertions(+), 141 deletions(-)
diff --git a/hadoop-hdds/interface-server/pom.xml
b/hadoop-hdds/interface-server/pom.xml
index c38927df500..b914a3d4ab4 100644
--- a/hadoop-hdds/interface-server/pom.xml
+++ b/hadoop-hdds/interface-server/pom.xml
@@ -83,6 +83,7 @@
<includes>
<include>InterSCMProtocol.proto</include>
<include>SCMUpdateProtocol.proto</include>
+ <include>SCMRatisProtocol.proto</include>
</includes>
<outputDirectory>target/generated-sources/proto-java-for-ratis</outputDirectory>
<clearOutputDirectory>false</clearOutputDirectory>
@@ -101,6 +102,7 @@
<excludes>
<exclude>InterSCMProtocol.proto</exclude>
<exclude>SCMUpdateProtocol.proto</exclude>
+ <exclude>SCMRatisProtocol.proto</exclude>
</excludes>
<outputDirectory>target/generated-sources/proto-java-for-protobuf-${protobuf.version}</outputDirectory>
<clearOutputDirectory>false</clearOutputDirectory>
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisRequest.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisRequest.java
index 28fca97e422..0eeec239c9a 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisRequest.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisRequest.java
@@ -18,8 +18,6 @@
package org.apache.hadoop.hdds.scm.ha;
import com.google.common.base.Preconditions;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.TextFormat;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.Method;
@@ -29,6 +27,8 @@
import org.apache.hadoop.hdds.scm.ha.io.CodecFactory;
import org.apache.ratis.proto.RaftProtos.StateMachineLogEntryProto;
import org.apache.ratis.protocol.Message;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.TextFormat;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -111,9 +111,8 @@ public Message encode() throws
InvalidProtocolBufferException {
}
methodBuilder.addAllArgs(args);
requestProtoBuilder.setMethod(methodBuilder.build());
- return Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- requestProtoBuilder.build().toByteArray()));
+ final SCMRatisRequestProto requestProto = requestProtoBuilder.build();
+ return Message.valueOf(requestProto.toByteString());
}
/**
@@ -122,7 +121,7 @@ public Message encode() throws
InvalidProtocolBufferException {
public static SCMRatisRequest decode(Message message)
throws InvalidProtocolBufferException {
final SCMRatisRequestProto requestProto =
- SCMRatisRequestProto.parseFrom(message.getContent().toByteArray());
+
SCMRatisRequestProto.parseFrom(message.getContent().asReadOnlyByteBuffer());
// proto2 required-equivalent checks
if (!requestProto.hasType()) {
@@ -173,7 +172,7 @@ public static String
smProtoToString(StateMachineLogEntryProto proto) {
StringBuilder builder = new StringBuilder();
try {
builder.append(TextFormat.shortDebugString(
- SCMRatisRequestProto.parseFrom(proto.getLogData().toByteArray())));
+
SCMRatisRequestProto.parseFrom(proto.getLogData().asReadOnlyByteBuffer())));
} catch (Throwable ex) {
LOG.error("smProtoToString failed", ex);
builder.append("smProtoToString failed with");
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisResponse.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisResponse.java
index 34e5bea3401..55f55cab4f5 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisResponse.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/SCMRatisResponse.java
@@ -17,12 +17,12 @@
package org.apache.hadoop.hdds.scm.ha;
-import com.google.protobuf.InvalidProtocolBufferException;
import
org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.SCMRatisResponseProto;
import org.apache.hadoop.hdds.scm.ha.io.CodecFactory;
import org.apache.ratis.protocol.Message;
import org.apache.ratis.protocol.RaftClientReply;
import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
@@ -92,7 +92,7 @@ public static SCMRatisResponse decode(RaftClientReply reply)
return new SCMRatisResponse();
}
- final SCMRatisResponseProto responseProto =
SCMRatisResponseProto.parseFrom(response.toByteArray());
+ final SCMRatisResponseProto responseProto =
SCMRatisResponseProto.parseFrom(response.asReadOnlyByteBuffer());
// proto2 required-equivalent checks
if (!responseProto.hasType()) {
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BigIntegerCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BigIntegerCodec.java
index bee5c59f008..afc7da03fa1 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BigIntegerCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BigIntegerCodec.java
@@ -17,9 +17,9 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.ProtoUtils;
import java.math.BigInteger;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* Codec for type BigInteger.
@@ -29,7 +29,7 @@ public class BigIntegerCodec implements Codec {
@Override
public ByteString serialize(Object object) {
// BigInteger returns a new byte[].
- return ProtoUtils.unsafeByteString(((BigInteger)object).toByteArray());
+ return UnsafeByteOperations.unsafeWrap(((BigInteger)
object).toByteArray());
}
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BooleanCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BooleanCodec.java
index 899d10814a4..2f79e8e9cfe 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BooleanCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/BooleanCodec.java
@@ -17,7 +17,7 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
/**
* {@link Codec} for {@code Boolean} objects.
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
index d2599a4c1ab..1ffabcf328a 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
@@ -17,23 +17,27 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
- * A dummy codec that serializes a ByteString object to ByteString.
+ * {@link Codec} implementation for non-shaded
+ * {@link com.google.protobuf.ByteString} objects.
*/
public class ByteStringCodec implements Codec {
@Override
public ByteString serialize(Object object)
throws InvalidProtocolBufferException {
- return (ByteString) object;
+ return UnsafeByteOperations.unsafeWrap(
+ ((com.google.protobuf.ByteString) object).asReadOnlyByteBuffer());
}
@Override
public Object deserialize(Class<?> type, ByteString value)
throws InvalidProtocolBufferException {
- return value;
+ return com.google.protobuf.UnsafeByteOperations.
+ unsafeWrap(value.asReadOnlyByteBuffer());
}
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/Codec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/Codec.java
index 49520ab6dd8..1a552283658 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/Codec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/Codec.java
@@ -17,8 +17,8 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
/**
* Codec interface to marshall/unmarshall data to/from {@link ByteString}.
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/CodecFactory.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/CodecFactory.java
index 1cd3ad1bf92..3141754a53c 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/CodecFactory.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/CodecFactory.java
@@ -17,9 +17,6 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.Message;
import com.google.protobuf.ProtocolMessageEnum;
import java.math.BigInteger;
import java.security.cert.X509Certificate;
@@ -29,6 +26,9 @@
import java.util.Map;
import org.apache.commons.lang3.ClassUtils;
import org.apache.hadoop.hdds.security.symmetric.ManagedSecretKey;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.Message;
/**
* Maps types to the corresponding {@link Codec} implementation.
@@ -38,7 +38,8 @@ public final class CodecFactory {
private static Map<Class<?>, Codec> codecs = new HashMap<>();
static {
- codecs.put(Message.class, new GeneratedMessageCodec());
+ codecs.put(com.google.protobuf.Message.class, new GeneratedMessageCodec());
+ codecs.put(Message.class, new ScmGeneratedMessageCodec());
codecs.put(ProtocolMessageEnum.class, new EnumCodec());
codecs.put(List.class, new ListCodec());
codecs.put(Integer.class, new IntegerCodec());
@@ -47,7 +48,8 @@ public final class CodecFactory {
codecs.put(Boolean.class, new BooleanCodec());
codecs.put(BigInteger.class, new BigIntegerCodec());
codecs.put(X509Certificate.class, new X509CertificateCodec());
- codecs.put(ByteString.class, new ByteStringCodec());
+ codecs.put(com.google.protobuf.ByteString.class, new ByteStringCodec());
+ codecs.put(ByteString.class, new ScmByteStringCodec());
codecs.put(ManagedSecretKey.class, new ManagedSecretKeyCodec());
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/EnumCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/EnumCodec.java
index 32108b2da8b..24ea6af1424 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/EnumCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/EnumCodec.java
@@ -18,12 +18,12 @@
package org.apache.hadoop.hdds.scm.ha.io;
import com.google.common.primitives.Ints;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.ProtoUtils;
import com.google.protobuf.ProtocolMessageEnum;
import java.lang.reflect.InvocationTargetException;
import org.apache.hadoop.hdds.scm.ha.ReflectionUtil;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* {@link Codec} for {@link ProtocolMessageEnum} objects.
@@ -34,8 +34,7 @@ public class EnumCodec implements Codec {
public ByteString serialize(Object object)
throws InvalidProtocolBufferException {
// toByteArray returns a new array
- return ProtoUtils.unsafeByteString(Ints.toByteArray(
- ((ProtocolMessageEnum) object).getNumber()));
+ return
UnsafeByteOperations.unsafeWrap(Ints.toByteArray(((ProtocolMessageEnum)
object).getNumber()));
}
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
index b4adf805276..14a30c874af 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
@@ -17,34 +17,36 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
import com.google.protobuf.Message;
import java.lang.reflect.InvocationTargetException;
import org.apache.hadoop.hdds.scm.ha.ReflectionUtil;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
- * {@link Codec} for {@link Message} objects.
+ * {@link Codec} implementation for non-shaded
+ * {@link com.google.protobuf.Message} objects.
*/
public class GeneratedMessageCodec implements Codec {
@Override
- public ByteString serialize(Object object) {
- return ((Message)object).toByteString();
+ public ByteString serialize(Object object)
+ throws InvalidProtocolBufferException {
+ return UnsafeByteOperations.unsafeWrap(
+ ((Message) object).toByteString().asReadOnlyByteBuffer());
}
@Override
- public Message deserialize(Class<?> type, ByteString value)
+ public Object deserialize(Class<?> type, ByteString value)
throws InvalidProtocolBufferException {
try {
- return (Message) ReflectionUtil.getMethod(type,
- "parseFrom", byte[].class)
+ return ReflectionUtil.getMethod(type, "parseFrom", byte[].class)
.invoke(null, (Object) value.toByteArray());
} catch (NoSuchMethodException | IllegalAccessException
- | InvocationTargetException ex) {
+ | InvocationTargetException ex) {
ex.printStackTrace();
- throw new InvalidProtocolBufferException(
- "Message cannot be decoded: " + ex.getMessage());
+ throw new InvalidProtocolBufferException("Message cannot be decoded: " +
ex.getMessage());
}
}
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/IntegerCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/IntegerCodec.java
index a7d00e535e0..81ccae87052 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/IntegerCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/IntegerCodec.java
@@ -18,9 +18,9 @@
package org.apache.hadoop.hdds.scm.ha.io;
import com.google.common.primitives.Ints;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.ProtoUtils;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* Encodes/decodes an integer to a byte string.
@@ -30,7 +30,7 @@ public class IntegerCodec implements Codec {
public ByteString serialize(Object object)
throws InvalidProtocolBufferException {
// toByteArray returns a new array
- return ProtoUtils.unsafeByteString(Ints.toByteArray((Integer) object));
+ return UnsafeByteOperations.unsafeWrap(Ints.toByteArray((Integer) object));
}
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ListCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ListCodec.java
index 591fb17e321..798076b6a97 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ListCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ListCodec.java
@@ -17,13 +17,13 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
import java.lang.reflect.InvocationTargetException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol.ListArgument;
import org.apache.hadoop.hdds.scm.ha.ReflectionUtil;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
/**
* {@link Codec} for {@link List} objects.
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/LongCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/LongCodec.java
index b8c35eae478..ad5792cb5a1 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/LongCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/LongCodec.java
@@ -18,9 +18,9 @@
package org.apache.hadoop.hdds.scm.ha.io;
import com.google.common.primitives.Longs;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.ProtoUtils;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* {@link Codec} for {@code Long} objects.
@@ -31,7 +31,7 @@ public class LongCodec implements Codec {
public ByteString serialize(Object object)
throws InvalidProtocolBufferException {
// toByteArray returns a new array
- return ProtoUtils.unsafeByteString(Longs.toByteArray((Long) object));
+ return UnsafeByteOperations.unsafeWrap(Longs.toByteArray((Long) object));
}
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ManagedSecretKeyCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ManagedSecretKeyCodec.java
index ec4a7c261e4..a82943f730e 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ManagedSecretKeyCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ManagedSecretKeyCodec.java
@@ -17,10 +17,11 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.hadoop.hdds.protocol.proto.SCMSecretKeyProtocolProtos;
import org.apache.hadoop.hdds.security.symmetric.ManagedSecretKey;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* A codec for {@link ManagedSecretKey} objects.
@@ -30,14 +31,20 @@ public class ManagedSecretKeyCodec implements Codec {
public ByteString serialize(Object object)
throws InvalidProtocolBufferException {
ManagedSecretKey secretKey = (ManagedSecretKey) object;
- return secretKey.toProtobuf().toByteString();
+ return UnsafeByteOperations.unsafeWrap(
+ secretKey.toProtobuf().toByteString().asReadOnlyByteBuffer());
}
@Override
public Object deserialize(Class<?> type, ByteString value)
throws InvalidProtocolBufferException {
- SCMSecretKeyProtocolProtos.ManagedSecretKey message =
- SCMSecretKeyProtocolProtos.ManagedSecretKey.parseFrom(value);
- return ManagedSecretKey.fromProtobuf(message);
+ try {
+ SCMSecretKeyProtocolProtos.ManagedSecretKey message =
+ SCMSecretKeyProtocolProtos.ManagedSecretKey.parseFrom(
+ value.asReadOnlyByteBuffer());
+ return ManagedSecretKey.fromProtobuf(message);
+ } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+ throw new InvalidProtocolBufferException("Failed to deserialize value
for " + type, e);
+ }
}
}
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmByteStringCodec.java
similarity index 85%
copy from
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
copy to
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmByteStringCodec.java
index d2599a4c1ab..2b479ff5559 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ByteStringCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmByteStringCodec.java
@@ -17,13 +17,13 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
/**
* A dummy codec that serializes a ByteString object to ByteString.
*/
-public class ByteStringCodec implements Codec {
+public class ScmByteStringCodec implements Codec {
@Override
public ByteString serialize(Object object)
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmGeneratedMessageCodec.java
similarity index 77%
copy from
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
copy to
hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmGeneratedMessageCodec.java
index b4adf805276..5a8be986fa8 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/GeneratedMessageCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/ScmGeneratedMessageCodec.java
@@ -17,19 +17,19 @@
package org.apache.hadoop.hdds.scm.ha.io;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.Message;
import java.lang.reflect.InvocationTargetException;
import org.apache.hadoop.hdds.scm.ha.ReflectionUtil;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.Message;
/**
* {@link Codec} for {@link Message} objects.
*/
-public class GeneratedMessageCodec implements Codec {
+public class ScmGeneratedMessageCodec implements Codec {
@Override
- public ByteString serialize(Object object) {
+ public ByteString serialize(Object object) throws
InvalidProtocolBufferException {
return ((Message)object).toByteString();
}
@@ -38,10 +38,10 @@ public Message deserialize(Class<?> type, ByteString value)
throws InvalidProtocolBufferException {
try {
return (Message) ReflectionUtil.getMethod(type,
- "parseFrom", byte[].class)
+ "parseFrom", byte[].class)
.invoke(null, (Object) value.toByteArray());
} catch (NoSuchMethodException | IllegalAccessException
- | InvocationTargetException ex) {
+ | InvocationTargetException ex) {
ex.printStackTrace();
throw new InvalidProtocolBufferException(
"Message cannot be decoded: " + ex.getMessage());
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/StringCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/StringCodec.java
index 47d8917872d..c53e4e82f94 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/StringCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/StringCodec.java
@@ -19,8 +19,8 @@
import static java.nio.charset.StandardCharsets.UTF_8;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.ProtoUtils;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* {@link Codec} for {@code String} objects.
@@ -29,7 +29,7 @@ public class StringCodec implements Codec {
@Override
public ByteString serialize(Object object) {
// getBytes returns a new array
- return ProtoUtils.unsafeByteString(((String) object).getBytes(UTF_8));
+ return UnsafeByteOperations.unsafeWrap(((String) object).getBytes(UTF_8));
}
@Override
diff --git
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/X509CertificateCodec.java
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/X509CertificateCodec.java
index e68eaf481b2..408e69e9a29 100644
---
a/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/X509CertificateCodec.java
+++
b/hadoop-hdds/server-scm/src/main/java/org/apache/hadoop/hdds/scm/ha/io/X509CertificateCodec.java
@@ -19,11 +19,11 @@
import static java.nio.charset.StandardCharsets.UTF_8;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.ProtoUtils;
import java.security.cert.X509Certificate;
import org.apache.hadoop.hdds.security.x509.certificate.utils.CertificateCodec;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
/**
* Codec for type X509Certificate.
@@ -36,7 +36,7 @@ public ByteString serialize(Object object)
String certString =
CertificateCodec.getPEMEncodedString((X509Certificate) object);
// getBytes returns a new array
- return ProtoUtils.unsafeByteString(certString.getBytes(UTF_8));
+ return UnsafeByteOperations.unsafeWrap(certString.getBytes(UTF_8));
} catch (Exception ex) {
throw new InvalidProtocolBufferException(
"X509Certificate cannot be decoded: " + ex.getMessage());
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/SCMRatisProtocolCompatibilityTestUtil.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/SCMRatisProtocolCompatibilityTestUtil.java
new file mode 100644
index 00000000000..aaf7ba6e1f4
--- /dev/null
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/SCMRatisProtocolCompatibilityTestUtil.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.hadoop.hdds.scm.ha;
+
+import static
org.apache.hadoop.hdds.scm.ha.TestSCMRatisProtocolCompatibility.RANDOM;
+import static
org.apache.hadoop.hdds.scm.ha.TestSCMRatisProtocolCompatibility.TYPES;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
+import com.google.protobuf.ByteString;
+import java.nio.ByteBuffer;
+import
org.apache.hadoop.hdds.protocol.proto.testing.Proto2SCMRatisProtocolForTesting;
+
+/**
+ * Tests proto2 to proto3 compatibility for SCMRatisProtocol.
+ */
+public final class SCMRatisProtocolCompatibilityTestUtil {
+
+ private SCMRatisProtocolCompatibilityTestUtil() {
+ }
+
+ static <T> ByteString randomValueProto2(Class<T> clazz) {
+ if (clazz == String.class) {
+ final int length = RANDOM.nextInt(3);
+ final StringBuilder builder = new StringBuilder(length);
+ for (int i = 0; i < length; i++) {
+ builder.append(RANDOM.nextInt(10));
+ }
+ final String string = builder.toString();
+ assertEquals(length, string.length());
+ return ByteString.copyFromUtf8(string);
+ } else if (clazz == Integer.class) {
+ final ByteBuffer buffer = ByteBuffer.allocate(4);
+ buffer.putInt(RANDOM.nextInt());
+ return ByteString.copyFrom(buffer.array());
+ } else if (clazz == byte[].class) {
+ final byte[] bytes = new byte[RANDOM.nextInt(3)];
+ RANDOM.nextBytes(bytes);
+ return ByteString.copyFrom(bytes);
+ }
+ throw new IllegalArgumentException("Unrecognized class " + clazz);
+ }
+
+ static Proto2SCMRatisProtocolForTesting.MethodArgument
randomProto2MethodArgument() {
+ final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
+ return Proto2SCMRatisProtocolForTesting.MethodArgument.newBuilder()
+ .setType(type.getName())
+ .setValue(randomValueProto2(type))
+ .build();
+ }
+
+ static Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto
randomProto2SCMRatisResponseProto() {
+ final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
+ return Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto.newBuilder()
+ .setType(type.getName())
+ .setValue(randomValueProto2(type))
+ .build();
+ }
+
+ static Proto2SCMRatisProtocolForTesting.SCMRatisRequestProto proto2Request(
+ String name, Proto2SCMRatisProtocolForTesting.RequestType type, int
numArgs) {
+ // Build request using proto2 (test-only schema)
+ final Proto2SCMRatisProtocolForTesting.Method.Builder b =
+ Proto2SCMRatisProtocolForTesting.Method.newBuilder()
+ .setName(name);
+ for (int i = 0; i < numArgs; i++) {
+ b.addArgs(randomProto2MethodArgument());
+ }
+
+ return Proto2SCMRatisProtocolForTesting.SCMRatisRequestProto.newBuilder()
+ .setType(type)
+ .setMethod(b)
+ .build();
+ }
+}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisProtocolCompatibility.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisProtocolCompatibility.java
index 3d58cecb37c..043f9f4e563 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisProtocolCompatibility.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisProtocolCompatibility.java
@@ -17,15 +17,17 @@
package org.apache.hadoop.hdds.scm.ha;
+import static
org.apache.hadoop.hdds.scm.ha.SCMRatisProtocolCompatibilityTestUtil.proto2Request;
+import static
org.apache.hadoop.hdds.scm.ha.SCMRatisProtocolCompatibilityTestUtil.randomProto2SCMRatisResponseProto;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.TextFormat;
import java.nio.ByteBuffer;
import java.util.Random;
import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
import
org.apache.hadoop.hdds.protocol.proto.testing.Proto2SCMRatisProtocolForTesting;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
import org.junit.jupiter.api.Test;
/**
@@ -35,7 +37,7 @@ public class TestSCMRatisProtocolCompatibility {
static final Random RANDOM = new Random();
static final Class<?>[] TYPES = {String.class, Integer.class, byte[].class};
- static <T> ByteString randomValue(Class<T> clazz) {
+ static <T> ByteString randomValueProto3(Class<T> clazz) {
if (clazz == String.class) {
final int length = RANDOM.nextInt(3);
final StringBuilder builder = new StringBuilder(length);
@@ -57,53 +59,22 @@ static <T> ByteString randomValue(Class<T> clazz) {
throw new IllegalArgumentException("Unrecognized class " + clazz);
}
- static Proto2SCMRatisProtocolForTesting.MethodArgument
randomProto2MethodArgument() {
- final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
- return Proto2SCMRatisProtocolForTesting.MethodArgument.newBuilder()
- .setType(type.getName())
- .setValue(randomValue(type))
- .build();
- }
-
static SCMRatisProtocol.MethodArgument randomProto3MethodArgument() {
final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
return SCMRatisProtocol.MethodArgument.newBuilder()
.setType(type.getName())
- .setValue(randomValue(type))
+ .setValue(randomValueProto3(type))
.build();
}
- static Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto
randomProto2SCMRatisResponseProto() {
- final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
- return Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto.newBuilder()
- .setType(type.getName())
- .setValue(randomValue(type))
- .build();
- }
-
static SCMRatisProtocol.SCMRatisResponseProto
randomProto3SCMRatisResponseProto() {
final Class<?> type = TYPES[RANDOM.nextInt(TYPES.length)];
return SCMRatisProtocol.SCMRatisResponseProto.newBuilder()
.setType(type.getName())
- .setValue(randomValue(type))
+ .setValue(randomValueProto3(type))
.build();
}
- static Proto2SCMRatisProtocolForTesting.SCMRatisRequestProto proto2Request(
- String name, Proto2SCMRatisProtocolForTesting.RequestType type, int
numArgs) {
- // Build request using proto2 (test-only schema)
- final Proto2SCMRatisProtocolForTesting.Method.Builder b =
Proto2SCMRatisProtocolForTesting.Method.newBuilder()
- .setName(name);
- for (int i = 0; i < numArgs; i++) {
- b.addArgs(randomProto2MethodArgument());
- }
-
- return Proto2SCMRatisProtocolForTesting.SCMRatisRequestProto.newBuilder()
- .setType(type)
- .setMethod(b)
- .build();
- }
-
static SCMRatisProtocol.SCMRatisRequestProto proto3Request(
String name, SCMRatisProtocol.RequestType type, int numArgs) {
final SCMRatisProtocol.Method.Builder b =
SCMRatisProtocol.Method.newBuilder()
@@ -155,20 +126,24 @@ static void runTestProto2RequestCanBeParsedByProto3(
}
assertEquals(proto2.toString(), proto3.toString());
- assertEquals(TextFormat.shortDebugString(proto2),
TextFormat.shortDebugString(proto3));
+ assertShortDebugString(proto2, proto3);
assertEquals(proto2,
Proto2SCMRatisProtocolForTesting.SCMRatisRequestProto.parseFrom(proto3.toByteArray()));
}
+ private static void assertByteStringEquals(com.google.protobuf.ByteString
proto2, ByteString proto3) {
+
assertEquals(UnsafeByteOperations.unsafeWrap(proto2.asReadOnlyByteBuffer()),
proto3);
+ }
+
static void
assertMethodArgument(Proto2SCMRatisProtocolForTesting.MethodArgument proto2,
SCMRatisProtocol.MethodArgument proto3) {
- assertEquals(proto2.getValue(), proto3.getValue());
assertEquals(proto2.getType(), proto3.getType());
+ assertByteStringEquals(proto2.getValue(), proto3.getValue());
}
static void
assertSCMRatisResponseProto(Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto
proto2,
SCMRatisProtocol.SCMRatisResponseProto proto3) {
- assertEquals(proto2.getValue(), proto3.getValue());
assertEquals(proto2.getType(), proto3.getType());
+ assertByteStringEquals(proto2.getValue(), proto3.getValue());
}
/**
@@ -195,7 +170,7 @@ static void runTestProto2ResponseCanBeParsedByProto3()
throws Exception {
assertSCMRatisResponseProto(proto2, proto3);
assertEquals(proto2.toString(), proto3.toString());
- assertEquals(TextFormat.shortDebugString(proto2),
TextFormat.shortDebugString(proto3));
+ assertShortDebugString(proto2, proto3);
assertEquals(proto2,
Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto.parseFrom(proto3.toByteArray()));
}
@@ -246,11 +221,12 @@ static void runTestProto3RequestCanBeParsedByProto2(
for (int i = 0; i < numArgs; i++) {
assertEquals(proto3.getMethod().getArgs(i).getType(),
proto2.getMethod().getArgs(i).getType());
- assertEquals(proto3.getMethod().getArgs(i).getValue(),
proto2.getMethod().getArgs(i).getValue());
+ assertByteStringEquals(proto2.getMethod().getArgs(i).getValue(),
+ proto3.getMethod().getArgs(i).getValue());
}
assertEquals(proto2.toString(), proto3.toString());
- assertEquals(TextFormat.shortDebugString(proto2),
TextFormat.shortDebugString(proto3));
+ assertShortDebugString(proto2, proto3);
assertEquals(proto3,
SCMRatisProtocol.SCMRatisRequestProto.parseFrom(proto2.toByteArray()));
}
@@ -268,10 +244,16 @@ static void runTestProto3ResponseCanBeParsedByProto2()
throws Exception {
Proto2SCMRatisProtocolForTesting.SCMRatisResponseProto.parseFrom(proto3.toByteArray());
assertEquals(proto3.getType(), proto2.getType());
- assertEquals(proto3.getValue(), proto2.getValue());
+ assertByteStringEquals(proto2.getValue(), proto3.getValue());
assertEquals(proto2.toString(), proto3.toString());
- assertEquals(TextFormat.shortDebugString(proto2),
TextFormat.shortDebugString(proto3));
+ assertShortDebugString(proto2, proto3);
assertEquals(proto3,
SCMRatisProtocol.SCMRatisResponseProto.parseFrom(proto2.toByteArray()));
}
+
+ private static void
assertShortDebugString(com.google.protobuf.MessageOrBuilder proto2,
+ org.apache.ratis.thirdparty.com.google.protobuf.MessageOrBuilder proto3)
{
+ assertEquals(com.google.protobuf.TextFormat.shortDebugString(proto2),
+
org.apache.ratis.thirdparty.com.google.protobuf.TextFormat.shortDebugString(proto3));
+ }
}
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisRequest.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisRequest.java
index baf5d379ebf..2f4ebf94369 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisRequest.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisRequest.java
@@ -22,8 +22,6 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
import java.util.ArrayList;
import java.util.List;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
@@ -31,6 +29,9 @@
import org.apache.hadoop.hdds.scm.ha.io.ListCodec;
import org.apache.hadoop.hdds.scm.pipeline.PipelineID;
import org.apache.ratis.protocol.Message;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
import org.junit.jupiter.api.Test;
/**
@@ -105,8 +106,7 @@ public void testDecodeMissingRequestTypeShouldFail() throws
Exception {
.build();
Message msg = Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray()));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer()));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
@@ -124,8 +124,7 @@ public void testDecodeMissingMethodShouldFail() throws
Exception {
.build();
Message msg = Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray()));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer()));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
@@ -145,8 +144,7 @@ public void testDecodeMissingMethodNameShouldFail() throws
Exception {
.build();
Message msg = Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray()));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer()));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
@@ -173,8 +171,7 @@ public void testDecodeMissingArgumentTypeShouldFail()
throws Exception {
.build();
Message msg = Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray()));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer()));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
@@ -201,8 +198,7 @@ public void testDecodeMissingArgumentValueShouldFail()
throws Exception {
.build();
Message msg = Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray()));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer()));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisResponse.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisResponse.java
index b0c67a1460e..b65aa3ac885 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisResponse.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/TestSCMRatisResponse.java
@@ -26,8 +26,6 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
import org.apache.hadoop.hdds.protocol.proto.SCMRatisProtocol;
import org.apache.ratis.protocol.ClientId;
import org.apache.ratis.protocol.Message;
@@ -37,6 +35,9 @@
import org.apache.ratis.protocol.RaftPeerId;
import org.apache.ratis.protocol.exceptions.LeaderNotReadyException;
import org.apache.ratis.protocol.exceptions.RaftException;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -108,8 +109,7 @@ public void testResponseDecodeMissingTypeShouldFail()
throws Exception {
RaftClientReply reply = mock(RaftClientReply.class);
when(reply.isSuccess()).thenReturn(true);
when(reply.getMessage()).thenReturn(Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray())));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer())));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
@@ -130,8 +130,7 @@ public void testResponseDecodeMissingValueShouldFail()
throws Exception {
RaftClientReply reply = mock(RaftClientReply.class);
when(reply.isSuccess()).thenReturn(true);
when(reply.getMessage()).thenReturn(Message.valueOf(
- org.apache.ratis.thirdparty.com.google.protobuf.ByteString.copyFrom(
- proto.toByteArray())));
+
UnsafeByteOperations.unsafeWrap(proto.toByteString().asReadOnlyByteBuffer())));
InvalidProtocolBufferException ex = assertThrows(
InvalidProtocolBufferException.class,
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestBigIntegerCodec.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestBigIntegerCodec.java
index 096b1e7f506..4142a69eb57 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestBigIntegerCodec.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestBigIntegerCodec.java
@@ -19,8 +19,8 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
-import com.google.protobuf.ByteString;
import java.math.BigInteger;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
import org.junit.jupiter.api.Test;
/**
diff --git
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestX509CertificateCodec.java
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestX509CertificateCodec.java
index 2ae1aac94ee..8b5ad7d8fa1 100644
---
a/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestX509CertificateCodec.java
+++
b/hadoop-hdds/server-scm/src/test/java/org/apache/hadoop/hdds/scm/ha/io/TestX509CertificateCodec.java
@@ -21,14 +21,14 @@
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
-import com.google.protobuf.ByteString;
-import com.google.protobuf.InvalidProtocolBufferException;
-import com.google.protobuf.ProtoUtils;
import java.security.KeyPair;
import java.security.cert.X509Certificate;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.security.SecurityConfig;
import org.apache.hadoop.security.ssl.KeyStoreTestUtil;
+import org.apache.ratis.thirdparty.com.google.protobuf.ByteString;
+import
org.apache.ratis.thirdparty.com.google.protobuf.InvalidProtocolBufferException;
+import org.apache.ratis.thirdparty.com.google.protobuf.UnsafeByteOperations;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
@@ -63,7 +63,7 @@ public void codec() throws Exception {
public void testCodecError() {
X509CertificateCodec x509CertificateCodec = new X509CertificateCodec();
- final ByteString byteString =
ProtoUtils.unsafeByteString("dummy".getBytes(UTF_8));
+ final ByteString byteString =
UnsafeByteOperations.unsafeWrap("dummy".getBytes(UTF_8));
assertThrows(InvalidProtocolBufferException.class, () ->
x509CertificateCodec.deserialize(X509Certificate.class, byteString));
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]