Review Board 1.7.22


FLUME-989 Client SDK API

Review Request #4047 - Created Feb. 24, 2012 and submitted

Mike Percy
FLUME-989
Reviewers
Flume
flume-git
Seeking early feedback on some additional APIs to make integrating with Flume 1.x easier.

Added the following APIs:
 - AvroClient: Friendly Java interface around the Avro API
 - AvroClientBuilder: Builder class to allow easy extension of AvroClient capabilities in the future (i.e. SSL)
 - DefaultAvroClient: Implementation of the AvroClient interface

Created this stuff in a flume-ng-sdk Maven submodule and moved the Event interface to that submodule. flume-ng-core depends on flume-ng-sdk.

I also modified AvroSink to use the AvroClient API instead of the bare AvroSourceProtocol API directly.

 
Review request changed
Updated (March 12, 2012, 11:33 p.m.)
Patch updated to allow multiple RPC calls from one batch call if getBatchSize() is not respected. Also added some API docs indicating the behavior and implications of this. I also found a maven configuration param to make the Java generated from Avro RPC use String instead of CharSequence as the String type, which will result in less object copying in our code. I included that, since it primarily affects the RPC client implementation. Finally, one notable API change is that I have declared the NettyAvroRpcClient.Builder class to be protected instead of public. This is to enforce usage of the factory methods in RpcClientFactory, except for in unit tests.
Ship it!
Posted (March 13, 2012, 1:10 a.m.)
+1. Changes look good Mike. Please attach the patch to the Jira.