Not all metastore operations are idempotent. For example, commit_txn() consists of
1. request from client to server
2. server action
3. ack to client
If network connection is broken after (or during) 2 but before 3 happens, RetryingMetastoreClient will retry the operation thus causing an attempt to commit the same txn twice (sometimes in concurrently)
The 2nd attempt is guaranteed to fail and thus return an error to the caller (which doesn't know the operation is being retried), while the first attempt has actually succeeded. Thus the caller thinks commit failed and will likely attempt to redo the transactions - not what we want in most cases.