JHSUYU opened a new pull request, #7156: URL: https://github.com/apache/hbase/pull/7156
### Description ServerCall.setResponse() method currently swallows IOException when creating response, leaving client without any indication of server-side failure. This violates the RPC protocol requirement that server should always send a response (either success or error). This issue has existed since HBASE-14598 and continues to affect the latest branches (3.0 and 2.6). ### Background The original fix for HBASE-14598 attempted to prevent OOM errors by checking array size before allocation and throwing DoNotRetryIOException to stop client retries. However, the DoNotRetryIOException never reaches the client due to a flaw in ServerCall.setResponse(). ### Root Cause When IOException occurs during response creation (e.g., during cell block building): 1. The exception is caught in ServerCall.setResponse() 2. Only a warning is logged: "Exception while creating response" 3. The response is set to null 4. Client receives no response, causing connection closure and endless retries This particularly affects scenarios where: - `hbase.ipc.server.reservoir.enabled` is set to false - BufferOverflowException occurs in ByteBufferOutputStream.checkSizeAndGrow() - DoNotRetryIOException is thrown but never propagated to client ### Changes - Modified ServerCall.setResponse() to create a proper error response when IOException occurs - Ensures DoNotRetryIOException and other exceptions are properly communicated to clients - Added unit tests in TestServerCall ### Impact This fix ensures that: - Clients receive proper error responses and take action based on the error(e.g. stop retry) ### JIRA [HBASE-28589](https://issues.apache.org/jira/browse/HBASE-28589) -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@hbase.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org