示例#1
0
    // Register  protocol and its impl for rpc calls
    void registerProtocolAndImpl(RpcKind rpcKind, Class<?> protocolClass, Object protocolImpl) {
      String protocolName = RPC.getProtocolName(protocolClass);
      long version;

      try {
        version = RPC.getProtocolVersion(protocolClass);
      } catch (Exception ex) {
        LOG.warn("Protocol " + protocolClass + " NOT registered as cannot get protocol version ");
        return;
      }

      getProtocolImplMap(rpcKind)
          .put(
              new ProtoNameVer(protocolName, version),
              new ProtoClassProtoImpl(protocolClass, protocolImpl));
      LOG.debug(
          "RpcKind = "
              + rpcKind
              + " Protocol Name = "
              + protocolName
              + " version="
              + version
              + " ProtocolImpl="
              + protocolImpl.getClass().getName()
              + " protocolClass="
              + protocolClass.getName());
    }
 @Override
 public boolean isMethodSupported(String methodName) throws IOException {
   return RpcClientUtil.isMethodSupported(
       rpcProxy,
       ClientDatanodeProtocolPB.class,
       RPC.RpcKind.RPC_PROTOCOL_BUFFER,
       RPC.getProtocolVersion(ClientDatanodeProtocolPB.class),
       methodName);
 }
示例#3
0
 private static Object createNameNodeProxy(
     InetSocketAddress address, Configuration conf, UserGroupInformation ugi, Class<?> xface)
     throws IOException {
   RPC.setProtocolEngine(conf, xface, ProtobufRpcEngine.class);
   Object proxy =
       RPC.getProxy(
           xface,
           RPC.getProtocolVersion(xface),
           address,
           ugi,
           conf,
           NetUtils.getDefaultSocketFactory(conf));
   return proxy;
 }
示例#4
0
 public Invocation(Method method, Object[] parameters) {
   this.methodName = method.getName();
   this.parameterClasses = method.getParameterTypes();
   this.parameters = parameters;
   rpcVersion = writableRpcVersion;
   if (method.getDeclaringClass().equals(VersionedProtocol.class)) {
     // VersionedProtocol is exempted from version check.
     clientVersion = 0;
     clientMethodsHash = 0;
   } else {
     this.clientVersion = RPC.getProtocolVersion(method.getDeclaringClass());
     this.clientMethodsHash =
         ProtocolSignature.getFingerprint(method.getDeclaringClass().getMethods());
   }
   this.declaringClassProtocolName = RPC.getProtocolName(method.getDeclaringClass());
 }
示例#5
0
  private static ClientProtocol createNNProxyWithClientProtocol(
      InetSocketAddress address,
      Configuration conf,
      UserGroupInformation ugi,
      boolean withRetries,
      AtomicBoolean fallbackToSimpleAuth)
      throws IOException {
    RPC.setProtocolEngine(conf, ClientNamenodeProtocolPB.class, ProtobufRpcEngine.class);

    final RetryPolicy defaultPolicy =
        RetryUtils.getDefaultRetryPolicy(
            conf,
            HdfsClientConfigKeys.Retry.POLICY_ENABLED_KEY,
            HdfsClientConfigKeys.Retry.POLICY_ENABLED_DEFAULT,
            HdfsClientConfigKeys.Retry.POLICY_SPEC_KEY,
            HdfsClientConfigKeys.Retry.POLICY_SPEC_DEFAULT,
            SafeModeException.class.getName());

    final long version = RPC.getProtocolVersion(ClientNamenodeProtocolPB.class);
    ClientNamenodeProtocolPB proxy =
        RPC.getProtocolProxy(
                ClientNamenodeProtocolPB.class,
                version,
                address,
                ugi,
                conf,
                NetUtils.getDefaultSocketFactory(conf),
                org.apache.hadoop.ipc.Client.getTimeout(conf),
                defaultPolicy,
                fallbackToSimpleAuth)
            .getProxy();

    if (withRetries) { // create the proxy with retries

      Map<String, RetryPolicy> methodNameToPolicyMap = new HashMap<String, RetryPolicy>();
      ClientProtocol translatorProxy = new ClientNamenodeProtocolTranslatorPB(proxy);
      return (ClientProtocol)
          RetryProxy.create(
              ClientProtocol.class,
              new DefaultFailoverProxyProvider<ClientProtocol>(
                  ClientProtocol.class, translatorProxy),
              methodNameToPolicyMap,
              defaultPolicy);
    } else {
      return new ClientNamenodeProtocolTranslatorPB(proxy);
    }
  }
 static ClientDatanodeProtocolPB createClientDatanodeProtocolProxy(
     InetSocketAddress addr,
     UserGroupInformation ticket,
     Configuration conf,
     SocketFactory factory,
     int socketTimeout)
     throws IOException {
   RPC.setProtocolEngine(conf, ClientDatanodeProtocolPB.class, ProtobufRpcEngine.class);
   return RPC.getProxy(
       ClientDatanodeProtocolPB.class,
       RPC.getProtocolVersion(ClientDatanodeProtocolPB.class),
       addr,
       ticket,
       conf,
       factory,
       socketTimeout);
 }