Reconfiguration of AVRO or NETCAT source causes port bind exception
-------------------------------------------------------------------
Key: FLUME-1036
URL: https://issues.apache.org/jira/browse/FLUME-1036
Project: Flume
Issue Type: Bug
Components: Sinks+Sources
Affects Versions: v1.2.0
Environment: [CentOS 6.2 64-bit]
Reporter: Will McQueen
This issue occurs with a source that has binds to a port, such as NETCAT or
AVRO. In the steps below, I use AVRO as an example.
Steps:
1. Run with a props file that includes an avro source, such as a props file
with these contents:
# a = agent
# r = source
# c = channel
# k = sink
a1.sources = r1
a1.channels = c1
a1.sinks = k1
# ===SOURCES===
a1.sources.r1.type = AVRO
a1.sources.r1.bind = localhost
a1.sources.r1.port = 1473
a1.sources.r1.channels = c1
# ===CHANNELS===
a1.channels.c1.type = MEMORY
# ===SINKS===
a1.sinks.k1.type = LOGGER
a1.sinks.k1.channel = c1
2. Run the flume node
[will@localhost flume-1.2.0-incubating-SNAPSHOT]$ pwd
/home/will/git/apache/flume/flume-1.2.0-incubating-SNAPSHOT
[will@localhost flume-1.2.0-incubating-SNAPSHOT]$ bin/flume-ng node --conf conf
--conf-file conf/a1.properties --name a1
3. Simulate a reconfig of a file by just touching the props file:
[will@localhost flume-1.2.0-incubating-SNAPSHOT]$ touch conf/a1.properties
At this point, an exception is thrown because an attempt is made to bind to the
same port, even though the port number specified in config file didn't change
(actually, nothing changed but the last modification time of the file).
2012-03-19 02:17:48,573 (lifecycleSupervisor-1-1) [ERROR -
org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:210)]
Unable to start EventDrivenSourceRunner: { source:AvroSource: {
bindAddress:localhost port:1473 } } - Exception follows.
org.jboss.netty.channel.ChannelException: Failed to bind to:
localhost/127.0.0.1:1473
at
org.jboss.netty.bootstrap.ServerBootstrap.bind(ServerBootstrap.java:303)
at org.apache.avro.ipc.NettyServer.<init>(NettyServer.java:85)
at org.apache.avro.ipc.NettyServer.<init>(NettyServer.java:66)
at org.apache.flume.source.AvroSource.start(AvroSource.java:124)
at
org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:39)
at
org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:208)
--
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