Denny Ye created FLUME-1481:
-------------------------------
Summary: Custom component may not support dynamic configuration
Key: FLUME-1481
URL: https://issues.apache.org/jira/browse/FLUME-1481
Project: Flume
Issue Type: Bug
Components: Channel, Sinks+Sources
Affects Versions: v1.2.0
Reporter: Denny Ye
Fix For: v1.3.0
Flume NG provides more flexible extension at primary component. It's very
useful for users. Each custom component should implement LifecycleAware
interface in different ways.
If the startup thread blocked at 'start()' method, the component will be runs
normally. Meanwhile, dynamic configuration function will be disable with
unreachable 'synchronized' lock.
Example in my environment. Others also may meet this problem with custom
component.
{quote}
"lifecycleSupervisor-1-3" prio=10 tid=0x000000005d562000 nid=0x2a53 in
Object.wait() [0x0000000042a6b000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00002aaacc740d30> (a
org.apache.thrift.server.TNonblockingServer$SelectThread)
at java.lang.Thread.join(Thread.java:1143)
- locked <0x00002aaacc740d30> (a
org.apache.thrift.server.TNonblockingServer$SelectThread)
at java.lang.Thread.join(Thread.java:1196)
at
org.apache.thrift.server.TNonblockingServer.joinSelector(TNonblockingServer.java:170)
at
org.apache.thrift.server.TNonblockingServer.serve(TNonblockingServer.java:114)
at org.apache.flume.source.scribe.ScribeSource.start(ScribeSource.java:88)
at
org.apache.flume.source.EventDrivenSourceRunner.start(EventDrivenSourceRunner.java:44)
at
org.apache.flume.lifecycle.LifecycleSupervisor$MonitorRunnable.run(LifecycleSupervisor.java:237)
- locked {color:red}<0x00002aaacc755d78>{color} (a
org.apache.flume.source.EventDrivenSourceRunner)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
"conf-file-poller-0" prio=10 tid=0x000000005d4de000 nid=0x2a50 waiting for
monitor entry [0x0000000042869000]
java.lang.Thread.State: BLOCKED (on object monitor)
at
org.apache.flume.lifecycle.LifecycleSupervisor.unsupervise(LifecycleSupervisor.java:153)
- waiting to lock {color:red}<0x00002aaacc755d78>{color} (a
org.apache.flume.source.EventDrivenSourceRunner)
- locked <0x00002aaacc755c30> (a
org.apache.flume.lifecycle.LifecycleSupervisor)
at
org.apache.flume.node.nodemanager.DefaultLogicalNodeManager.stopAllComponents(DefaultLogicalNodeManager.java:73)
at
org.apache.flume.conf.properties.PropertiesFileConfigurationProvider.load(PropertiesFileConfigurationProvider.java:219)
at
org.apache.flume.conf.file.AbstractFileConfigurationProvider.doLoad(AbstractFileConfigurationProvider.java:123)
- locked <0x00002aaacc75bfd0> (a
org.apache.flume.conf.properties.PropertiesFileConfigurationProvider)
at
org.apache.flume.conf.file.AbstractFileConfigurationProvider.access$300(AbstractFileConfigurationProvider.java:38)
at
org.apache.flume.conf.file.AbstractFileConfigurationProvider$FileWatcherRunnable.run(AbstractFileConfigurationProvider.java:202)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
{quote}
The former doesn't release object lock and the follower cann't obtains
specified object lock. There are staying lock starvation. Dynamic configuration
function cannot apply for this component.
This issue have happening only on case : component initialization thread was
blocked at 'start' method.
--
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