This is an automated email from the ASF dual-hosted git repository.
adoroszlai 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 c89587366e1 HDDS-15247. Remove unused ProtocolMetaInterface,
VersionedProtocol (#10247)
c89587366e1 is described below
commit c89587366e173c385759fb81d93d3cd84d553dbf
Author: Doroszlai, Attila <[email protected]>
AuthorDate: Fri May 15 16:06:34 2026 +0200
HDDS-15247. Remove unused ProtocolMetaInterface, VersionedProtocol (#10247)
---
.../org/apache/hadoop/ipc_/ProtobufRpcEngine.java | 15 +-
.../org/apache/hadoop/ipc_/ProtocolMetaInfoPB.java | 34 ---
.../ProtocolMetaInfoServerSideTranslatorPB.java | 121 ----------
.../apache/hadoop/ipc_/ProtocolMetaInterface.java | 38 ----
.../java/org/apache/hadoop/ipc_/ProtocolProxy.java | 82 +------
.../org/apache/hadoop/ipc_/ProtocolSignature.java | 253 ---------------------
.../src/main/java/org/apache/hadoop/ipc_/RPC.java | 70 ------
.../java/org/apache/hadoop/ipc_/RpcClientUtil.java | 241 --------------------
.../java/org/apache/hadoop/ipc_/RpcEngine.java | 12 -
.../org/apache/hadoop/ipc_/VersionedProtocol.java | 54 -----
...DiskBalancerProtocolClientSideTranslatorPB.java | 13 +-
.../ReconfigureProtocolClientSideTranslatorPB.java | 13 +-
.../src/main/proto/ProtocolInfo.proto | 89 --------
13 files changed, 9 insertions(+), 1026 deletions(-)
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtobufRpcEngine.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtobufRpcEngine.java
index d7d2d88259c..c2b7c4a01fc 100644
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtobufRpcEngine.java
+++
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtobufRpcEngine.java
@@ -72,7 +72,7 @@ public <T> ProtocolProxy<T> getProxy(Class<T> protocol, long
clientVersion,
throws IOException {
final Invoker invoker = new Invoker(protocol, connId, conf, factory);
return new ProtocolProxy<T>(protocol, (T) Proxy.newProxyInstance(
- protocol.getClassLoader(), new Class[] {protocol}, invoker), false);
+ protocol.getClassLoader(), new Class[] {protocol}, invoker));
}
public <T> ProtocolProxy<T> getProxy(Class<T> protocol, long clientVersion,
@@ -103,18 +103,7 @@ public <T> ProtocolProxy<T> getProxy(Class<T> protocol,
long clientVersion,
rpcTimeout, connectionRetryPolicy, fallbackToSimpleAuth,
alignmentContext);
return new ProtocolProxy<T>(protocol, (T) Proxy.newProxyInstance(
- protocol.getClassLoader(), new Class[]{protocol}, invoker), false);
- }
-
- @Override
- public ProtocolProxy<ProtocolMetaInfoPB> getProtocolMetaInfoProxy(
- ConnectionId connId, Configuration conf, SocketFactory factory)
- throws IOException {
- Class<ProtocolMetaInfoPB> protocol = ProtocolMetaInfoPB.class;
- return new ProtocolProxy<ProtocolMetaInfoPB>(protocol,
- (ProtocolMetaInfoPB) Proxy.newProxyInstance(protocol.getClassLoader(),
- new Class[] { protocol }, new Invoker(protocol, connId, conf,
- factory)), false);
+ protocol.getClassLoader(), new Class[]{protocol}, invoker));
}
protected static class Invoker implements RpcInvocationHandler {
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoPB.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoPB.java
deleted file mode 100644
index 8dc7138c2d7..00000000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoPB.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 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.ipc_;
-
-import org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.ProtocolInfoService;
-
-/**
- * Protocol to get versions and signatures for supported protocols from the
- * server.
- *
- * Note: This extends the protocolbuffer service based interface to
- * add annotations.
- */
-@ProtocolInfo(
- protocolName = "org.apache.hadoop.ipc_.ProtocolMetaInfoPB",
- protocolVersion = 1)
-public interface ProtocolMetaInfoPB extends
- ProtocolInfoService.BlockingInterface {
-}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoServerSideTranslatorPB.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoServerSideTranslatorPB.java
deleted file mode 100644
index 1e07877325f..00000000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInfoServerSideTranslatorPB.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/**
- * 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.ipc_;
-
-import org.apache.hadoop.ipc_.RPC.Server.VerProtocolImpl;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolSignatureRequestProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolSignatureResponseProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolVersionsRequestProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolVersionsResponseProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.ProtocolSignatureProto;
-import org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.ProtocolVersionProto;
-
-import com.google.protobuf.RpcController;
-import com.google.protobuf.ServiceException;
-
-/**
- * This class serves the requests for protocol versions and signatures by
- * looking them up in the server registry.
- */
-public class ProtocolMetaInfoServerSideTranslatorPB implements
- ProtocolMetaInfoPB {
-
- RPC.Server server;
-
- public ProtocolMetaInfoServerSideTranslatorPB(RPC.Server server) {
- this.server = server;
- }
-
- @Override
- public GetProtocolVersionsResponseProto getProtocolVersions(
- RpcController controller, GetProtocolVersionsRequestProto request)
- throws ServiceException {
- String protocol = request.getProtocol();
- GetProtocolVersionsResponseProto.Builder builder =
- GetProtocolVersionsResponseProto.newBuilder();
- for (RPC.RpcKind r : RPC.RpcKind.values()) {
- long[] versions;
- try {
- versions = getProtocolVersionForRpcKind(r, protocol);
- } catch (ClassNotFoundException e) {
- throw new ServiceException(e);
- }
- ProtocolVersionProto.Builder b = ProtocolVersionProto.newBuilder();
- if (versions != null) {
- b.setRpcKind(r.toString());
- for (long v : versions) {
- b.addVersions(v);
- }
- }
- builder.addProtocolVersions(b.build());
- }
- return builder.build();
- }
-
- @Override
- public GetProtocolSignatureResponseProto getProtocolSignature(
- RpcController controller, GetProtocolSignatureRequestProto request)
- throws ServiceException {
- GetProtocolSignatureResponseProto.Builder builder =
GetProtocolSignatureResponseProto
- .newBuilder();
- String protocol = request.getProtocol();
- String rpcKind = request.getRpcKind();
- long[] versions;
- try {
- versions = getProtocolVersionForRpcKind(RPC.RpcKind.valueOf(rpcKind),
- protocol);
- } catch (ClassNotFoundException e1) {
- throw new ServiceException(e1);
- }
- if (versions == null) {
- return builder.build();
- }
- for (long v : versions) {
- ProtocolSignatureProto.Builder sigBuilder = ProtocolSignatureProto
- .newBuilder();
- sigBuilder.setVersion(v);
- try {
- ProtocolSignature signature = ProtocolSignature.getProtocolSignature(
- protocol, v);
- for (int m : signature.getMethods()) {
- sigBuilder.addMethods(m);
- }
- } catch (ClassNotFoundException e) {
- throw new ServiceException(e);
- }
- builder.addProtocolSignature(sigBuilder.build());
- }
- return builder.build();
- }
-
- private long[] getProtocolVersionForRpcKind(RPC.RpcKind rpcKind,
- String protocol) throws ClassNotFoundException {
- Class<?> protocolClass = Class.forName(protocol);
- String protocolName = RPC.getProtocolName(protocolClass);
- VerProtocolImpl[] vers = server.getSupportedProtocolVersions(rpcKind,
- protocolName);
- if (vers == null) {
- return null;
- }
- long [] versions = new long[vers.length];
- for (int i=0; i<versions.length; i++) {
- versions[i] = vers[i].version;
- }
- return versions;
- }
-}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInterface.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInterface.java
deleted file mode 100644
index bcf4675d844..00000000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolMetaInterface.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * 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.ipc_;
-
-import java.io.IOException;
-
-
-/**
- * This interface is implemented by the client side translators and can be used
- * to obtain information about underlying protocol e.g. to check if a method is
- * supported on the server side.
- */
-public interface ProtocolMetaInterface {
-
- /**
- * Checks whether the given method name is supported by the server.
- * It is assumed that all method names are unique for a protocol.
- * @param methodName The name of the method
- * @return true if method is supported, otherwise false.
- * @throws IOException raised on errors performing I/O.
- */
- public boolean isMethodSupported(String methodName) throws IOException;
-}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolProxy.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolProxy.java
index 0fdd06ee47b..388bf199ccd 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolProxy.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolProxy.java
@@ -18,63 +18,22 @@
package org.apache.hadoop.ipc_;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-
-
/**
* a class wraps around a server's proxy,
- * containing a list of its supported methods.
- *
- * A list of methods with a value of null indicates that the client and server
- * have the same protocol.
*/
public class ProtocolProxy<T> {
private Class<T> protocol;
- private T proxy;
- private HashSet<Integer> serverMethods = null;
- final private boolean supportServerMethodCheck;
- private boolean serverMethodsFetched = false;
-
+ private final T proxy;
+
/**
* Constructor
*
* @param protocol protocol class
* @param proxy its proxy
- * @param supportServerMethodCheck If false proxy will never fetch server
- * methods and isMethodSupported will always return true. If true,
- * server methods will be fetched for the first call to
- * isMethodSupported.
*/
- public ProtocolProxy(Class<T> protocol, T proxy,
- boolean supportServerMethodCheck) {
+ public ProtocolProxy(Class<T> protocol, T proxy) {
this.protocol = protocol;
this.proxy = proxy;
- this.supportServerMethodCheck = supportServerMethodCheck;
- }
-
- private void fetchServerMethods(Method method) throws IOException {
- long clientVersion;
- clientVersion = RPC.getProtocolVersion(method.getDeclaringClass());
- int clientMethodsHash = ProtocolSignature.getFingerprint(method
- .getDeclaringClass().getMethods());
- ProtocolSignature serverInfo = ((VersionedProtocol) proxy)
- .getProtocolSignature(RPC.getProtocolName(protocol), clientVersion,
- clientMethodsHash);
- long serverVersion = serverInfo.getVersion();
- if (serverVersion != clientVersion) {
- throw new RPC.VersionMismatch(protocol.getName(), clientVersion,
- serverVersion);
- }
- int[] serverMethodsCodes = serverInfo.getMethods();
- if (serverMethodsCodes != null) {
- serverMethods = new HashSet<Integer>(serverMethodsCodes.length);
- for (int m : serverMethodsCodes) {
- this.serverMethods.add(Integer.valueOf(m));
- }
- }
- serverMethodsFetched = true;
}
/*
@@ -83,36 +42,5 @@ private void fetchServerMethods(Method method) throws
IOException {
public T getProxy() {
return proxy;
}
-
- /**
- * Check if a method is supported by the server or not.
- *
- * @param methodName a method's name in String format
- * @param parameterTypes a method's parameter types
- * @return true if the method is supported by the server
- * @throws IOException raised on errors performing I/O.
- */
- public synchronized boolean isMethodSupported(String methodName,
- Class<?>... parameterTypes)
- throws IOException {
- if (!supportServerMethodCheck) {
- return true;
- }
- Method method;
- try {
- method = protocol.getDeclaredMethod(methodName, parameterTypes);
- } catch (SecurityException e) {
- throw new IOException(e);
- } catch (NoSuchMethodException e) {
- throw new IOException(e);
- }
- if (!serverMethodsFetched) {
- fetchServerMethods(method);
- }
- if (serverMethods == null) { // client & server have the same protocol
- return true;
- }
- return serverMethods.contains(
- Integer.valueOf(ProtocolSignature.getFingerprint(method)));
- }
-}
\ No newline at end of file
+
+}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolSignature.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolSignature.java
deleted file mode 100644
index 370002e3ad7..00000000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/ProtocolSignature.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/**
- * 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.ipc_;
-
-import java.io.DataInput;
-import java.io.DataOutput;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.HashMap;
-
-import org.apache.hadoop.io.Writable;
-import org.apache.hadoop.io.WritableFactories;
-import org.apache.hadoop.io.WritableFactory;
-
-
-public class ProtocolSignature implements Writable {
- static { // register a ctor
- WritableFactories.setFactory
- (ProtocolSignature.class,
- new WritableFactory() {
- @Override
- public Writable newInstance() { return new ProtocolSignature(); }
- });
- }
-
- private long version;
- private int[] methods = null; // an array of method hash codes
-
- /**
- * default constructor
- */
- public ProtocolSignature() {
- }
-
- /**
- * Constructor
- *
- * @param version server version
- * @param methodHashcodes hash codes of the methods supported by server
- */
- public ProtocolSignature(long version, int[] methodHashcodes) {
- this.version = version;
- this.methods = methodHashcodes;
- }
-
- public long getVersion() {
- return version;
- }
-
- public int[] getMethods() {
- return methods;
- }
-
- @Override
- public void readFields(DataInput in) throws IOException {
- version = in.readLong();
- boolean hasMethods = in.readBoolean();
- if (hasMethods) {
- int numMethods = in.readInt();
- methods = new int[numMethods];
- for (int i=0; i<numMethods; i++) {
- methods[i] = in.readInt();
- }
- }
- }
-
- @Override
- public void write(DataOutput out) throws IOException {
- out.writeLong(version);
- if (methods == null) {
- out.writeBoolean(false);
- } else {
- out.writeBoolean(true);
- out.writeInt(methods.length);
- for (int method : methods) {
- out.writeInt(method);
- }
- }
- }
-
- /**
- * Calculate a method's hash code considering its method
- * name, returning type, and its parameter types
- *
- * @param method a method
- * @return its hash code
- */
- static int getFingerprint(Method method) {
- int hashcode = method.getName().hashCode();
- hashcode = hashcode + 31*method.getReturnType().getName().hashCode();
- for (Class<?> type : method.getParameterTypes()) {
- hashcode = 31*hashcode ^ type.getName().hashCode();
- }
- return hashcode;
- }
-
- /**
- * Convert an array of Method into an array of hash codes
- *
- * @param methods
- * @return array of hash codes
- */
- private static int[] getFingerprints(Method[] methods) {
- if (methods == null) {
- return null;
- }
- int[] hashCodes = new int[methods.length];
- for (int i = 0; i<methods.length; i++) {
- hashCodes[i] = getFingerprint(methods[i]);
- }
- return hashCodes;
- }
-
- /**
- * Get the hash code of an array of methods
- * Methods are sorted before hashcode is calculated.
- * So the returned value is irrelevant of the method order in the array.
- *
- * @param methods an array of methods
- * @return the hash code
- */
- static int getFingerprint(Method[] methods) {
- return getFingerprint(getFingerprints(methods));
- }
-
- /**
- * Get the hash code of an array of hashcodes
- * Hashcodes are sorted before hashcode is calculated.
- * So the returned value is irrelevant of the hashcode order in the array.
- *
- * @param methods an array of methods
- * @return the hash code
- */
- static int getFingerprint(int[] hashcodes) {
- Arrays.sort(hashcodes);
- return Arrays.hashCode(hashcodes);
-
- }
- private static class ProtocolSigFingerprint {
- private ProtocolSignature signature;
- private int fingerprint;
-
- ProtocolSigFingerprint(ProtocolSignature sig, int fingerprint) {
- this.signature = sig;
- this.fingerprint = fingerprint;
- }
- }
-
- /**
- * A cache that maps a protocol's name to its signature & finger print
- */
- private final static HashMap<String, ProtocolSigFingerprint>
- PROTOCOL_FINGERPRINT_CACHE =
- new HashMap<String, ProtocolSigFingerprint>();
-
- public static void resetCache() {
- PROTOCOL_FINGERPRINT_CACHE.clear();
- }
-
- /**
- * Return a protocol's signature and finger print from cache
- *
- * @param protocol a protocol class
- * @param serverVersion protocol version
- * @return its signature and finger print
- */
- private static ProtocolSigFingerprint getSigFingerprint(
- Class <?> protocol, long serverVersion) {
- String protocolName = RPC.getProtocolName(protocol);
- synchronized (PROTOCOL_FINGERPRINT_CACHE) {
- ProtocolSigFingerprint sig =
PROTOCOL_FINGERPRINT_CACHE.get(protocolName);
- if (sig == null) {
- int[] serverMethodHashcodes = getFingerprints(protocol.getMethods());
- sig = new ProtocolSigFingerprint(
- new ProtocolSignature(serverVersion, serverMethodHashcodes),
- getFingerprint(serverMethodHashcodes));
- PROTOCOL_FINGERPRINT_CACHE.put(protocolName, sig);
- }
- return sig;
- }
- }
-
- /**
- * Get a server protocol's signature
- *
- * @param clientMethodsHashCode client protocol methods hashcode
- * @param serverVersion server protocol version
- * @param protocol protocol
- * @return the server's protocol signature
- */
- public static ProtocolSignature getProtocolSignature(
- int clientMethodsHashCode,
- long serverVersion,
- Class<? extends VersionedProtocol> protocol) {
- // try to get the finger print & signature from the cache
- ProtocolSigFingerprint sig = getSigFingerprint(protocol, serverVersion);
-
- // check if the client side protocol matches the one on the server side
- if (clientMethodsHashCode == sig.fingerprint) {
- return new ProtocolSignature(serverVersion, null); // null indicates a
match
- }
-
- return sig.signature;
- }
-
- public static ProtocolSignature getProtocolSignature(String protocolName,
- long version) throws ClassNotFoundException {
- Class<?> protocol = Class.forName(protocolName);
- return getSigFingerprint(protocol, version).signature;
- }
-
- /**
- * Get a server protocol's signature
- *
- * @param server server implementation
- * @param protocol server protocol
- * @param clientVersion client's version
- * @param clientMethodsHash client's protocol's hash code
- * @return the server protocol's signature
- * @throws IOException if any error occurs
- */
- @SuppressWarnings("unchecked")
- public static ProtocolSignature getProtocolSignature(VersionedProtocol
server,
- String protocol,
- long clientVersion, int clientMethodsHash) throws IOException {
- Class<? extends VersionedProtocol> inter;
- try {
- inter = (Class<? extends VersionedProtocol>)Class.forName(protocol);
- } catch (Exception e) {
- throw new IOException(e);
- }
- long serverVersion = server.getProtocolVersion(protocol, clientVersion);
- return ProtocolSignature.getProtocolSignature(
- clientMethodsHash, serverVersion, inter);
- }
-}
diff --git a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RPC.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RPC.java
index 8f6711ccb84..610bdbac1a3 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RPC.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RPC.java
@@ -30,8 +30,6 @@
import java.net.SocketTimeoutException;
import java.io.Closeable;
import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
import java.util.Map;
import java.util.HashMap;
import java.util.concurrent.atomic.AtomicBoolean;
@@ -45,7 +43,6 @@
import org.apache.hadoop.io.Writable;
import org.apache.hadoop.io.retry.RetryPolicy;
import org.apache.hadoop.ipc_.Client.ConnectionId;
-import org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.ProtocolInfoService;
import
org.apache.hadoop.ipc_.protobuf.RpcHeaderProtos.RpcResponseHeaderProto.RpcErrorCodeProto;
import
org.apache.hadoop.ipc_.protobuf.RpcHeaderProtos.RpcResponseHeaderProto.RpcStatusProto;
import org.apache.hadoop.net.NetUtils;
@@ -57,7 +54,6 @@
import org.apache.hadoop.util.ReflectionUtils;
import org.apache.hadoop.util.Time;
-import com.google.protobuf.BlockingService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -109,38 +105,7 @@ public Writable call(Server server, String protocol,
}
static final Logger LOG = LoggerFactory.getLogger(RPC.class);
-
- /**
- * Get all superInterfaces that extend VersionedProtocol
- * @param childInterfaces
- * @return the super interfaces that extend VersionedProtocol
- */
- static Class<?>[] getSuperInterfaces(Class<?>[] childInterfaces) {
- List<Class<?>> allInterfaces = new ArrayList<Class<?>>();
- for (Class<?> childInterface : childInterfaces) {
- if (VersionedProtocol.class.isAssignableFrom(childInterface)) {
- allInterfaces.add(childInterface);
- allInterfaces.addAll(
- Arrays.asList(
- getSuperInterfaces(childInterface.getInterfaces())));
- } else {
- LOG.warn("Interface " + childInterface +
- " ignored because it does not extend VersionedProtocol");
- }
- }
- return allInterfaces.toArray(new Class[allInterfaces.size()]);
- }
-
- /**
- * Get all interfaces that the given protocol implements or extends
- * which are assignable from VersionedProtocol.
- */
- static Class<?>[] getProtocolInterfaces(Class<?> protocol) {
- Class<?>[] interfaces = protocol.getInterfaces();
- return getSuperInterfaces(interfaces);
- }
-
/**
* Get the protocol name.
* If the protocol class has a ProtocolAnnotation, then get the protocol
@@ -536,29 +501,6 @@ public static <T> ProtocolProxy<T>
getProtocolProxy(Class<T> protocol,
factory, getRpcTimeout(conf), null);
}
- /**
- * Get a protocol proxy that contains a proxy connection to a remote server
- * and a set of methods that are supported by the server.
- *
- * @param <T> Generics Type T
- * @param protocol protocol class
- * @param clientVersion client's version
- * @param connId client connection identifier
- * @param conf configuration
- * @param factory socket factory
- * @return the protocol proxy
- * @throws IOException if the far end through a RemoteException
- */
- public static <T> ProtocolProxy<T> getProtocolProxy(Class<T> protocol,
- long clientVersion, ConnectionId connId, Configuration conf,
- SocketFactory factory) throws IOException {
- if (UserGroupInformation.isSecurityEnabled()) {
- SaslRpcServer.init(conf);
- }
- return getProtocolEngine(protocol, conf).getProxy(
- protocol, clientVersion, connId, conf, factory);
- }
-
/**
* Construct a client-side proxy that implements the named protocol,
* talking to a server at the named address.
@@ -1143,18 +1085,6 @@ protected Server(String bindAddress, int port,
String portRangeConfig) throws IOException {
super(bindAddress, port, paramClass, handlerCount, numReaders,
queueSizePerHandler,
conf, serverName, secretManager, portRangeConfig);
- initProtocolMetaInfo(conf);
- }
-
- private void initProtocolMetaInfo(Configuration conf) {
- RPC.setProtocolEngine(conf, ProtocolMetaInfoPB.class,
- ProtobufRpcEngine.class);
- ProtocolMetaInfoServerSideTranslatorPB xlator =
- new ProtocolMetaInfoServerSideTranslatorPB(this);
- BlockingService protocolInfoBlockingService = ProtocolInfoService
- .newReflectiveBlockingService(xlator);
- addProtocol(RpcKind.RPC_PROTOCOL_BUFFER, ProtocolMetaInfoPB.class,
- protocolInfoBlockingService);
}
/**
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcClientUtil.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcClientUtil.java
deleted file mode 100644
index 1683e2cd681..00000000000
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcClientUtil.java
+++ /dev/null
@@ -1,241 +0,0 @@
-/**
- * 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.ipc_;
-
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.net.InetSocketAddress;
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-import java.util.concurrent.ConcurrentHashMap;
-
-import org.apache.hadoop.conf.Configuration;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolSignatureRequestProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.GetProtocolSignatureResponseProto;
-import
org.apache.hadoop.ipc_.protobuf.ProtocolInfoProtos.ProtocolSignatureProto;
-import org.apache.hadoop.net.NetUtils;
-
-import com.google.protobuf.RpcController;
-import com.google.protobuf.ServiceException;
-
-/**
- * This class maintains a cache of protocol versions and corresponding protocol
- * signatures, keyed by server address, protocol and rpc kind.
- * The cache is lazily populated.
- */
-public class RpcClientUtil {
- private static RpcController NULL_CONTROLLER = null;
- private static final int PRIME = 16777619;
-
- private static class ProtoSigCacheKey {
- private InetSocketAddress serverAddress;
- private String protocol;
- private String rpcKind;
-
- ProtoSigCacheKey(InetSocketAddress addr, String p, String rk) {
- this.serverAddress = addr;
- this.protocol = p;
- this.rpcKind = rk;
- }
-
- @Override //Object
- public int hashCode() {
- int result = 1;
- result = PRIME * result
- + ((serverAddress == null) ? 0 : serverAddress.hashCode());
- result = PRIME * result + ((protocol == null) ? 0 : protocol.hashCode());
- result = PRIME * result + ((rpcKind == null) ? 0 : rpcKind.hashCode());
- return result;
- }
-
- @Override //Object
- public boolean equals(Object other) {
- if (other == this) {
- return true;
- }
- if (other instanceof ProtoSigCacheKey) {
- ProtoSigCacheKey otherKey = (ProtoSigCacheKey) other;
- return (serverAddress.equals(otherKey.serverAddress) &&
- protocol.equals(otherKey.protocol) &&
- rpcKind.equals(otherKey.rpcKind));
- }
- return false;
- }
- }
-
- private static ConcurrentHashMap<ProtoSigCacheKey, Map<Long,
ProtocolSignature>>
- signatureMap = new ConcurrentHashMap<ProtoSigCacheKey, Map<Long,
ProtocolSignature>>();
-
- private static void putVersionSignatureMap(InetSocketAddress addr,
- String protocol, String rpcKind, Map<Long, ProtocolSignature> map) {
- signatureMap.put(new ProtoSigCacheKey(addr, protocol, rpcKind), map);
- }
-
- private static Map<Long, ProtocolSignature> getVersionSignatureMap(
- InetSocketAddress addr, String protocol, String rpcKind) {
- return signatureMap.get(new ProtoSigCacheKey(addr, protocol, rpcKind));
- }
-
- /**
- * Returns whether the given method is supported or not.
- * The protocol signatures are fetched and cached. The connection id for the
- * proxy provided is re-used.
- * @param rpcProxy Proxy which provides an existing connection id.
- * @param protocol Protocol for which the method check is required.
- * @param rpcKind The RpcKind for which the method check is required.
- * @param version The version at the client.
- * @param methodName Name of the method.
- * @return true if the method is supported, false otherwise.
- * @throws IOException raised on errors performing I/O.
- */
- public static boolean isMethodSupported(Object rpcProxy, Class<?> protocol,
- RPC.RpcKind rpcKind, long version, String methodName) throws IOException
{
- InetSocketAddress serverAddress = RPC.getServerAddress(rpcProxy);
- Map<Long, ProtocolSignature> versionMap = getVersionSignatureMap(
- serverAddress, protocol.getName(), rpcKind.toString());
-
- if (versionMap == null) {
- Configuration conf = new Configuration();
- RPC.setProtocolEngine(conf, ProtocolMetaInfoPB.class,
- ProtobufRpcEngine.class);
- ProtocolMetaInfoPB protocolInfoProxy = getProtocolMetaInfoProxy(rpcProxy,
- conf);
- GetProtocolSignatureRequestProto.Builder builder =
- GetProtocolSignatureRequestProto.newBuilder();
- builder.setProtocol(protocol.getName());
- builder.setRpcKind(rpcKind.toString());
- GetProtocolSignatureResponseProto resp;
- try {
- resp = protocolInfoProxy.getProtocolSignature(NULL_CONTROLLER,
- builder.build());
- } catch (ServiceException se) {
- throw ProtobufHelper.getRemoteException(se);
- }
- versionMap = convertProtocolSignatureProtos(resp
- .getProtocolSignatureList());
- putVersionSignatureMap(serverAddress, protocol.getName(),
- rpcKind.toString(), versionMap);
- }
- // Assuming unique method names.
- Method desiredMethod;
- Method[] allMethods = protocol.getMethods();
- desiredMethod = null;
- for (Method m : allMethods) {
- if (m.getName().equals(methodName)) {
- desiredMethod = m;
- break;
- }
- }
- if (desiredMethod == null) {
- return false;
- }
- int methodHash = ProtocolSignature.getFingerprint(desiredMethod);
- return methodExists(methodHash, version, versionMap);
- }
-
- private static Map<Long, ProtocolSignature>
- convertProtocolSignatureProtos(List<ProtocolSignatureProto> protoList) {
- Map<Long, ProtocolSignature> map = new TreeMap<Long, ProtocolSignature>();
- for (ProtocolSignatureProto p : protoList) {
- int [] methods = new int[p.getMethodsList().size()];
- int index=0;
- for (int m : p.getMethodsList()) {
- methods[index++] = m;
- }
- map.put(p.getVersion(), new ProtocolSignature(p.getVersion(), methods));
- }
- return map;
- }
-
- private static boolean methodExists(int methodHash, long version,
- Map<Long, ProtocolSignature> versionMap) {
- ProtocolSignature sig = versionMap.get(version);
- if (sig != null) {
- for (int m : sig.getMethods()) {
- if (m == methodHash) {
- return true;
- }
- }
- }
- return false;
- }
-
- // The proxy returned re-uses the underlying connection. This is a special
- // mechanism for ProtocolMetaInfoPB.
- // Don't do this for any other protocol, it might cause a security hole.
- private static ProtocolMetaInfoPB getProtocolMetaInfoProxy(Object proxy,
- Configuration conf) throws IOException {
- RpcInvocationHandler inv = (RpcInvocationHandler) Proxy
- .getInvocationHandler(proxy);
- return RPC
- .getProtocolEngine(ProtocolMetaInfoPB.class, conf)
- .getProtocolMetaInfoProxy(inv.getConnectionId(), conf,
- NetUtils.getDefaultSocketFactory(conf)).getProxy();
- }
-
- /**
- * Convert an RPC method to a string.
- * The format we want is 'MethodOuterClassShortName#methodName'.
- *
- * For example, if the method is:
- * org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos.
- * ClientNamenodeProtocol.BlockingInterface.getServerDefaults
- *
- * the format we want is:
- * ClientNamenodeProtocol#getServerDefaults
- * @param method input method.
- * @return methodToTraceString.
- */
- public static String methodToTraceString(Method method) {
- Class<?> clazz = method.getDeclaringClass();
- while (true) {
- Class<?> next = clazz.getEnclosingClass();
- if (next == null || next.getEnclosingClass() == null) break;
- clazz = next;
- }
- return clazz.getSimpleName() + "#" + method.getName();
- }
-
- /**
- * Convert an RPC class method to a string.
- * The format we want is
- * 'SecondOutermostClassShortName#OutermostClassShortName'.
- *
- * For example, if the full class name is:
- * org.apache.hadoop.hdfs.protocol.ClientProtocol.getBlockLocations
- *
- * the format we want is:
- * ClientProtocol#getBlockLocations
- * @param fullName input fullName.
- * @return toTraceName.
- */
- public static String toTraceName(String fullName) {
- int lastPeriod = fullName.lastIndexOf('.');
- if (lastPeriod < 0) {
- return fullName;
- }
- int secondLastPeriod = fullName.lastIndexOf('.', lastPeriod - 1);
- if (secondLastPeriod < 0) {
- return fullName;
- }
- return fullName.substring(secondLastPeriod + 1, lastPeriod) + "#" +
- fullName.substring(lastPeriod + 1);
- }
-}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcEngine.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcEngine.java
index 473bf78ef04..c01f94872a5 100644
--- a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcEngine.java
+++ b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/RpcEngine.java
@@ -123,16 +123,4 @@ RPC.Server getServer(Class<?> protocol, Object instance,
String bindAddress,
String portRangeConfig,
AlignmentContext alignmentContext) throws IOException;
- /**
- * Returns a proxy for ProtocolMetaInfoPB, which uses the given connection
- * id.
- * @param connId, ConnectionId to be used for the proxy.
- * @param conf, Configuration.
- * @param factory, Socket factory.
- * @return Proxy object.
- * @throws IOException raised on errors performing I/O.
- */
- ProtocolProxy<ProtocolMetaInfoPB> getProtocolMetaInfoProxy(
- ConnectionId connId, Configuration conf, SocketFactory factory)
- throws IOException;
}
diff --git
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/VersionedProtocol.java
b/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/VersionedProtocol.java
deleted file mode 100644
index a1ef030c09a..00000000000
---
a/hadoop-hdds/common/src/main/java/org/apache/hadoop/ipc_/VersionedProtocol.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * 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.ipc_;
-
-import java.io.IOException;
-
-/**
- * Superclass of all protocols that use Hadoop RPC.
- * Subclasses of this interface are also supposed to have
- * a static final long versionID field.
- */
-public interface VersionedProtocol {
-
- /**
- * Return protocol version corresponding to protocol interface.
- * @param protocol The classname of the protocol interface
- * @param clientVersion The version of the protocol that the client speaks
- * @return the version that the server will speak
- * @throws IOException if any IO error occurs
- */
- public long getProtocolVersion(String protocol,
- long clientVersion) throws IOException;
-
- /**
- * Return protocol version corresponding to protocol interface.
- * @param protocol The classname of the protocol interface
- * @param clientVersion The version of the protocol that the client speaks
- * @param clientMethodsHash the hashcode of client protocol methods
- * @return the server protocol signature containing its version and
- * a list of its supported methods
- * @see ProtocolSignature#getProtocolSignature(VersionedProtocol, String,
- * long, int) for a default implementation
- * @throws IOException raised on errors performing I/O.
- */
- public ProtocolSignature getProtocolSignature(String protocol,
- long clientVersion,
- int clientMethodsHash) throws IOException;
-}
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
index b7d4c2f7839..fd6a96a8393 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
@@ -38,10 +38,8 @@
import org.apache.hadoop.hdds.utils.LegacyHadoopConfigurationSource;
import org.apache.hadoop.ipc_.ProtobufHelper;
import org.apache.hadoop.ipc_.ProtobufRpcEngine;
-import org.apache.hadoop.ipc_.ProtocolMetaInterface;
import org.apache.hadoop.ipc_.ProtocolTranslator;
import org.apache.hadoop.ipc_.RPC;
-import org.apache.hadoop.ipc_.RpcClientUtil;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.UserGroupInformation;
@@ -51,7 +49,7 @@
@InterfaceAudience.Private
@InterfaceStability.Evolving
public class DiskBalancerProtocolClientSideTranslatorPB
- implements DiskBalancerProtocol, ProtocolMetaInterface, ProtocolTranslator
{
+ implements DiskBalancerProtocol, ProtocolTranslator {
private static final RpcController NULL_CONTROLLER = null;
@@ -173,13 +171,4 @@ public Object getUnderlyingProxyObject() {
public void close() throws IOException {
RPC.stopProxy(rpcProxy);
}
-
- @Override
- public boolean isMethodSupported(String methodName) throws IOException {
- return RpcClientUtil.isMethodSupported(rpcProxy,
DiskBalancerProtocolPB.class,
- RPC.RpcKind.RPC_PROTOCOL_BUFFER,
- RPC.getProtocolVersion(DiskBalancerProtocolPB.class), methodName);
- }
}
-
-
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/ReconfigureProtocolClientSideTranslatorPB.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/ReconfigureProtocolClientSideTranslatorPB.java
index dcaeb30d0a7..b72d2151afc 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/ReconfigureProtocolClientSideTranslatorPB.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/ReconfigureProtocolClientSideTranslatorPB.java
@@ -44,10 +44,8 @@
import org.apache.hadoop.hdds.utils.LegacyHadoopConfigurationSource;
import org.apache.hadoop.ipc_.ProtobufHelper;
import org.apache.hadoop.ipc_.ProtobufRpcEngine;
-import org.apache.hadoop.ipc_.ProtocolMetaInterface;
import org.apache.hadoop.ipc_.ProtocolTranslator;
import org.apache.hadoop.ipc_.RPC;
-import org.apache.hadoop.ipc_.RpcClientUtil;
import org.apache.hadoop.net.NetUtils;
import org.apache.hadoop.security.UserGroupInformation;
import org.slf4j.Logger;
@@ -61,7 +59,7 @@
@InterfaceAudience.Private
@InterfaceStability.Stable
public class ReconfigureProtocolClientSideTranslatorPB implements
- ProtocolMetaInterface, ReconfigureProtocol, ProtocolTranslator {
+ ReconfigureProtocol, ProtocolTranslator {
private static final Logger LOG = LoggerFactory
.getLogger(ReconfigureProtocolClientSideTranslatorPB.class);
@@ -202,13 +200,4 @@ public List<String> listReconfigureProperties() throws
IOException {
throw ProtobufHelper.getRemoteException(e);
}
}
-
- @Override
- public boolean isMethodSupported(String methodName) throws IOException {
- return RpcClientUtil.isMethodSupported(rpcProxy,
- ReconfigureProtocolPB.class,
- RPC.RpcKind.RPC_PROTOCOL_BUFFER,
- RPC.getProtocolVersion(ReconfigureProtocolPB.class),
- methodName);
- }
}
diff --git a/hadoop-hdds/interface-client/src/main/proto/ProtocolInfo.proto
b/hadoop-hdds/interface-client/src/main/proto/ProtocolInfo.proto
deleted file mode 100644
index 4758e952d01..00000000000
--- a/hadoop-hdds/interface-client/src/main/proto/ProtocolInfo.proto
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * 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.
- */
-
-/**
- * These .proto interfaces are private and stable.
- * Please see http://wiki.apache.org/hadoop/Compatibility
- * for what changes are allowed for a *stable* .proto interface.
- */
-syntax = "proto2";
-option java_package = "org.apache.hadoop.ipc_.protobuf";
-option java_outer_classname = "ProtocolInfoProtos";
-option java_generic_services = true;
-option java_generate_equals_and_hash = true;
-package hadoop.common;
-
-/**
- * Request to get protocol versions for all supported rpc kinds.
- */
-message GetProtocolVersionsRequestProto {
- required string protocol = 1; // Protocol name
-}
-
-/**
- * Protocol version with corresponding rpc kind.
- */
-message ProtocolVersionProto {
- required string rpcKind = 1; //RPC kind
- repeated uint64 versions = 2; //Protocol version corresponding to the rpc
kind.
-}
-
-/**
- * Get protocol version response.
- */
-message GetProtocolVersionsResponseProto {
- repeated ProtocolVersionProto protocolVersions = 1;
-}
-
-/**
- * Get protocol signature request.
- */
-message GetProtocolSignatureRequestProto {
- required string protocol = 1; // Protocol name
- required string rpcKind = 2; // RPC kind
-}
-
-/**
- * Get protocol signature response.
- */
-message GetProtocolSignatureResponseProto {
- repeated ProtocolSignatureProto protocolSignature = 1;
-}
-
-message ProtocolSignatureProto {
- required uint64 version = 1;
- repeated uint32 methods = 2;
-}
-
-/**
- * Protocol to get information about protocols.
- */
-service ProtocolInfoService {
- /**
- * Return protocol version corresponding to protocol interface for each
- * supported rpc kind.
- */
- rpc getProtocolVersions(GetProtocolVersionsRequestProto)
- returns (GetProtocolVersionsResponseProto);
-
- /**
- * Return protocol version corresponding to protocol interface.
- */
- rpc getProtocolSignature(GetProtocolSignatureRequestProto)
- returns (GetProtocolSignatureResponseProto);
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]