Modifying SinkRunner to be pluggable to allow for failover/replication.
-----------------------------------------------------------------------

                 Key: FLUME-952
                 URL: https://issues.apache.org/jira/browse/FLUME-952
             Project: Flume
          Issue Type: Brainstorming
          Components: Sinks+Sources
            Reporter: Juhani Connolly
             Fix For: v1.1.0


Implementing the failover sink runner the following was suggested:
1. This needs to be implemented on top of FLUME-949 which deals with removing 
the notion of a PollableSink altogether. As a result, the SinkRunner will 
become a concrete implementation that can then allow different sink handling 
policies - such as either a failover policy (needed for this issue), or load 
balancing policy (not needed for this issue). Hence the policy part needs to be 
pluggable rather than the sink runner itself. An example of such a construct is 
the ChannelSelector and ChannelProcessor implementations.

In Flume-865 I have implemented FailoverSinkRunner as a separate runner, but I 
am open to the idea of making it pluggable if it makes the code more 
maintainable.

As is, there are many differences between the requirements for Failover and a 
normal Sink runner, including configuration, initialisation, shutdown, error 
handling and event processing. If we were to make this pluggable, many hooks 
would be needed and I don't think there is that much common behavior that 
warrants using a pluggable system rather than just a solid base class.
- Adding a new sink to a runner, with configuration variables(such as priority 
or weight)
- Policy for handling process: should this just return a list of sinks to 
process like ChannelSelector and hand off the processing to Process? I think 
that the specific failover policy for each type of runner  will be different so 
this feels awkward. I would personally prefer to just pass the process call to 
the pluggable component and let it be responsible for calling process on the 
correct sinks, as well as handling errors.

Right now I am not convinced for the need to make SinkRunner pluggable, but I 
would be interested to hear other peoples  opinions

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to