Piotr Wiecek created FLUME-2894:
-----------------------------------
Summary: Flume components should stop in the correct order
(graceful shutdown)
Key: FLUME-2894
URL: https://issues.apache.org/jira/browse/FLUME-2894
Project: Flume
Issue Type: Improvement
Components: Channel, Node, Sinks+Sources
Affects Versions: v1.6.0
Reporter: Piotr Wiecek
Flume components should be stopped in the right way:
* stop the sources (in order to not receiving further notifications),
* wait until all events within the channels are consumed by the sinks,
* stop the channels and the sinks.
Currently, the shutdown hook stops the components in a random manner.
E.g.: SINK, CHANNEL, SOURCE.
Components are stored in the HashMap:
{code:borderStyle=solid}
Map<LifecycleAware, Supervisoree> supervisedProcesses;
...
supervisedProcesses = new HashMap<LifecycleAware, Supervisoree>();
...
@Override
public synchronized void stop() {
...
for (final Entry<LifecycleAware, Supervisoree> entry : supervisedProcesses
.entrySet()) {
if (entry.getKey().getLifecycleState().equals(LifecycleState.START)) {
entry.getValue().status.desiredState = LifecycleState.STOP;
entry.getKey().stop();
}
}
....
{code}
The problems which we can have:
* not all Events will be consumed (Sink will be stopped first)
* Source will continue to accept messages even though other components are
stopped
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)