Minwoo Kang created HBASE-29267:
-----------------------------------

             Summary: Support shaded clients in Exception deserialization by 
prefixing shaded package in IPCUtil
                 Key: HBASE-29267
                 URL: https://issues.apache.org/jira/browse/HBASE-29267
             Project: HBase
          Issue Type: New Feature
            Reporter: Minwoo Kang
            Assignee: Minwoo Kang


Currently, when an HBase server throws an exception, it sends the class name of 
the exception to the client. The client then attempts to deserialize and 
instantiate the exception class using this name.

However, in the case of shaded clients, the original package names of 
server-side exceptions may not match those available on the client side. As a 
result, shaded clients fail to locate and load the corresponding exception 
class. When this happens, the client falls back to treating the error as a 
generic DoNotRetryIOException, which prevents proper handling and disables 
retry logic—even for retryable exceptions.

This issue becomes particularly visible during RegionServer rolling restarts. 
If a RegionServer throws an exception, the shaded client misinterprets the 
error and does not retry the request.

To address this, we propose enhancing the logic in {{IPCUtil}} to detect when 
the client is shaded. If so, the client should attempt to prefix the received 
exception class name with the shaded package prefix when trying to load the 
class. This would allow shaded clients to correctly deserialize exceptions and 
apply proper retry behavior.

This change would improve compatibility for shaded HBase clients, especially in 
environments that require binary shading for dependency isolation.



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to