huginn created HBASE-30393:
------------------------------
Summary: Clear stale RPC response timestamps after responses
complete
Key: HBASE-30393
URL: https://issues.apache.org/jira/browse/HBASE-30393
Project: HBase
Issue Type: Bug
Components: IPC/RPC
Affects Versions: 2.4.11
Reporter: huginn
Assignee: huginn
## What happens
SimpleRpcServer can retain a stale response timestamp on a connection after a
queued RPC response has been fully written. If the connection later has another
response that cannot make progress, the stale timestamp can make the connection
appear to have been blocked longer than the current response.
## When it happens
When SimpleRpcServer sends responses through its direct-write and responder
paths, a response can be partially written and later completed on the same
connection. The responder's purge check uses the connection response timestamp
to identify calls that have not been sent for a long time.
## Impact
A client connection can be closed by the response purge path, causing RPC
failures and retries.
## Root cause
In SimpleRpcServerResponder.processResponse, lastSentTime is set when a
response remains partially written but is not cleared after the response has no
remaining bytes. A later stalled response on the same connection can therefore
inherit a timestamp from an earlier response.
## Proposed fix
Clear the response timestamp when the current response is fully written.
Preserve the timestamp while a response is making no progress, update it when a
stalled response first starts or makes progress, and add regression coverage
for completion and purge behavior.
## Reproduction
Testing evidence will be added by the reporter.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)