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)

Reply via email to