Do the put methods need to be synchronized now since internally its synchronizing on the write buffer? (Make currentWriteBufferSize transient so outside of the synch block its most recent value can be seen?)
Minor: Make the below final and do assigning at same time as declaration?
private ArrayList<Put> writeBuffer;
Otherwise patch looks great. Patch is important fix.
Now you've done the work, add a comment to HTable class javadoc to explicitly say its thread-safe?
(There are a bunch of unused imports in my HTable. Are they in yours? Remove as part of this patch? They look bad, especially in this most public of our classes).