Details
Description
While debugging an application consistency issue, we noticed that a single, synchronous Put request threw a NoServerForRegionException but eventually succeeded 90 seconds later. The problem is that failed put requests are not actually removed from the HTable's writeBuffer. This makes sense for asynchronous puts using setAutoFlush(false) but don't make sense for the default case where we expect synchronous operation. We should discard all failed puts for the synchronous case and provide an API so asynchronous requests can have their failed puts cleared.