Currently TransactionAwareHTable constructs the delete markers that are used in handling a delete() operation. This makes it difficult to plug in different delete markers, as both the client and server must agree on which delete marker is used. This also violates the layering abstractions between client and server, as the delete marker used is a detail of the data storage, which should be encapsulated on the server side.
I propose the following separation:
- Client - responsible for coordinating the overall transaction and tracking the change set that is used.
- Server - responsible for the data storage details, including the construction and filtering of delete markers.