Hi,
I haven't had time yet to digg deep into HBase co-processors. So, correct me I make wrong assumptions.
Some of the features the rowlog provides which are not immediately solved by co-processors include:
* guaranteed message delivery : if a row gets updated a messages needs to be delivered even in case of node failures. If you would implement the sending of a message in a co-processor postPut call, what happens if a node fails before the co-processor gets executed. I don't think its execution is picked up by the new regions-server where the region moves to.
* atomicity : in the same area as the above feature, we want to make sure that a message is created when a row is updated, but also only when the row is updated. The co-processors are executed before or after the actual put.
* asynchronous execution : for some use cases we want to make sure a message is created when a row is updated, but that the message is delivered and acted upon in an asynchornous fashion, allowing to return the put call to the caller as fast as possible.
To conclude: I think some parts of the rowlog implementation could be handled by co-processors (like for instance preparing the row-local message information), but it will be hard to put the overall behaviour of the rowlog into just one or two co-processor calls.
Regards,
Evert Arckens.
--
Evert Arckens