Review Board 1.7.22

Making flume-ng components name-aware and user-pluggable

Review Request #3482 - Created Jan. 13, 2012 and submitted

Arvind Prabhakar
Modified all the factories and their default implementations to use specific Enums (newly added) to locate the plugin classes. See SourceType, SinkType, ChannelType for details. Modified the Source interface to directly allow a list of channels. This decommissions the fan-out channel that will be eventually replaced by the channel selector mechanism (FLUME-930).
All tests ran successfully.
Review request changed
Updated (Jan. 13, 2012, 8:40 p.m.)
Did some manual testing of failure scenario, found a few bugs with the change and fixed them. I was able to simulate a backlogged channel and drain it at a later stage without any problems.
Ship it!
Posted (Jan. 13, 2012, 10:52 p.m.)
Looks good overall.
Minor comment -
The factories allow you to call create() multiple times for a same source name/type and return the source if its already instantiated, on the other hand the unregister will remove it on first invocation. We should perhaps use refcounting or raise error on in create if object already exists.
  1. Thanks Prasad. I have filed to track this change.