In current HA mechanism with FailoverProxyProvider and non HA setups with RetryProxy retry a request from the RPC layer. If the retried request has already been processed at the namenode, the subsequent attempts fail for non-idempotent operations such as create, append, delete, rename etc. This will cause application failures during HA failover, network issues etc.
This jira proposes adding retry cache at the namenode to handle these failures. More details in the comments.