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

        

Reply via email to