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)