Uploaded image for project: 'Hadoop Common'
  1. Hadoop Common
  2. HADOOP-9786

RetryInvocationHandler#isRpcInvocation should support ProtocolTranslator

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Fixed
    • 3.0.0-alpha1
    • 2.1.0-beta
    • None
    • None
    • Reviewed

    Description

      Currently the RetryInvocationHandler uses the same RPC ids (i.e., clientId + callId) only when the invocation is a RPC invocation. To check whether an invocation is RPC, RetryInvocationHandler#isRpcInvocation directly apply Proxy#isProxyClass on RetryInvocation#currentProxy. However, if currentProxy is an instance of ProtocolTranslator (e.g., ClientNamenodeProtocolTranslatorPB), the real dynamically-generated proxy object is contained within currentProxy and needs to be retrieved by calling ProtocolTranslator#getUnderlyingProxyObject. Failing to recognize a RPC invocation can cause a retry request to have different "clientId + callId" with its initial call, and fail to hit the corresponding retry cache entry in the NameNode side.

      Attachments

        1. HADOOP-9786.001.patch
          2 kB
          Jing Zhao
        2. HADOOP-9786.002.patch
          6 kB
          Jing Zhao
        3. HADOOP-9786.003.patch
          6 kB
          Jing Zhao
        4. HADOOP-9786.4.patch
          5 kB
          Suresh Srinivas
        5. HADOOP-9786.5.patch
          5 kB
          Suresh Srinivas
        6. HADOOP-9786.6.patch
          5 kB
          Jing Zhao
        7. HADOOP-9786.7.patch
          5 kB
          Jing Zhao

        Issue Links

          Activity

            People

              jingzhao Jing Zhao
              jingzhao Jing Zhao
              Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: