Hey team:
When I read the BufferedMutator#mutate related code, this part of the code 
confused me.

At present, BufferedMutator#mutate only remind the user in the comment that it 
only supports Put/Delete, but it is not checked in the code implementation, and 
we know that the BufferedMutator is a delegation of AsyncBufferedMutator.

After in-depth analysis, although BufferedMutator is a delegation of 
AsyncBufferedMutator, BufferedMutatorOverAsyncBufferedMutator#mutate does not 
directly call AsyncBufferedMutator#mutate, instead 
AsyncBufferedMutatorImpl#mutate(List) is called. 

However,  AsyncBufferedMutatorImpl#mutate(List) is a public api, and there is 
no description of the mutate type restriction in the comments. 

Besides, AsyncBufferedMutatorImpl#mutate(List) will call the 
AsyncTable#batch(List) method, which supports the mutation types including Get, 
Put, Delete, Increment, Append, and RowMutations.


The logic of this part is really a bit confusing.

Can we discuss and optimize this part of the code?


Thanks.

Reply via email to