You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@flume.apache.org by "Hari Shreedharan (Commented) (JIRA)" <ji...@apache.org> on 2012/03/21 22:57:38 UTC

[jira] [Commented] (FLUME-1036) Reconfiguration of AVRO or NETCAT source causes port bind exception

    [ https://issues.apache.org/jira/browse/FLUME-1036?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13235075#comment-13235075 ] 

Hari Shreedharan commented on FLUME-1036:
-----------------------------------------

This seems to be a slightly serious problem. The reason for this is that when the configuration changes, we are probably not cleaning up system resources. At this point, when the conf changes we try to load new components but the issue is that we have not cleaned up the old ones. As a result the old components' sockets etc are not cleaned up immediately and we try to create a new socket to bind to the same port(in this scenario).
                
> 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