[ https://issues.apache.org/jira/browse/FLUME-1574?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13463428#comment-13463428 ]
Denny Ye commented on FLUME-1574: --------------------------------- Flume is as blank box for client. It may hard to explain the 'data loss' to client from unreachable missing selection covered by detailed Flume structure. Attached is my flume.conf file with custom ChannelSelector and Interceptor {code:xml} //Generated by code agent.sources = e2e-src scribesource agent.channels = e2e-ch hdfs-fc-1 hdfs-fc-2 hdfs-fc-3 hdfs-fc-4 hdfs-fc-5 agent.sinks = e2e-dst hdfsSink-1 hdfsSink-2 hdfsSink-3 hdfsSink-4 hdfsSink-5 #E2E Tracking agent.sources.e2e-src.type = com.aaa.XXXXX.flume.E2ETrackSource agent.sources.e2e-src.sampleInterval = 60 agent.sources.e2e-src.channels = e2e-ch agent.sinks.e2e-dst.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.e2e-dst.hdfs.fileType = DataStream agent.sinks.e2e-dst.hdfs.txnEventMax = 1 agent.sinks.e2e-dst.hdfs.batchSize = 10 agent.sinks.e2e-dst.hdfs.rollInterval = 3600 agent.sinks.e2e-dst.hdfs.rollCount = 1000000 agent.sinks.e2e-dst.hdfs.rollSize = 0 agent.sinks.e2e-dst.hdfs.path = /XXXXX/_pendingS_/e2etrack/dt=%{dateStr} agent.sinks.e2e-dst.channel = e2e-ch #agent.channels.e2e-ch.type = org.apache.flume.channel.PseudoTxnMemoryChannel agent.channels.e2e-ch.type = com.aaa.XXXXX.flume.E2EMemoryChannel #Sources agent.sources.scribesource.type = org.apache.flume.source.scribe.ScribeSource agent.sources.scribesource.interceptors= host stamp datasource agent.sources.scribesource.interceptors.host.type = host agent.sources.scribesource.interceptors.stamp.type = timestamp agent.sources.scribesource.interceptors.datasource.type = com.aaa.XXXXX.flume.DataSourceInterceptor$Builder agent.sources.scribesource.interceptors.datasource.apiAddr = /agent.properties agent.sources.scribesource.selector.type = com.aaa.XXXXX.flume.DataSourceSelector agent.sources.scribesource.channels = hdfs-fc-1 hdfs-fc-2 hdfs-fc-3 hdfs-fc-4 hdfs-fc-5 #Sinks agent.sinks.hdfsSink-1.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.hdfsSink-1.hdfs.fileType = DataStream agent.sinks.hdfsSink-1.hdfs.txnEventMax = 1000 agent.sinks.hdfsSink-1.hdfs.batchSize = 1000000 agent.sinks.hdfsSink-1.hdfs.rollInterval = 3600 agent.sinks.hdfsSink-1.hdfs.rollCount = 1000000 agent.sinks.hdfsSink-1.hdfs.rollSize = 0 agent.sinks.hdfsSink-1.hdfs.path = /XXXXX/_pending_/%{yId}/dt=%{dateStr} agent.sinks.hdfsSink-1.hdfs.filePrefix = %H-%{host} agent.sinks.hdfsSink-1.channel = hdfs-fc-1 agent.sinks.hdfsSink-2.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.hdfsSink-2.hdfs.fileType = DataStream agent.sinks.hdfsSink-2.hdfs.txnEventMax = 1000 agent.sinks.hdfsSink-2.hdfs.batchSize = 1000000 agent.sinks.hdfsSink-2.hdfs.rollInterval = 3600 agent.sinks.hdfsSink-2.hdfs.rollCount = 1000000 agent.sinks.hdfsSink-2.hdfs.rollSize = 0 agent.sinks.hdfsSink-2.hdfs.path = /XXXXX/_pending_/%{yId}/dt=%{dateStr} agent.sinks.hdfsSink-2.hdfs.filePrefix = %H-%{host} agent.sinks.hdfsSink-2.channel = hdfs-fc-2 agent.sinks.hdfsSink-3.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.hdfsSink-3.hdfs.fileType = DataStream agent.sinks.hdfsSink-3.hdfs.txnEventMax = 1000 agent.sinks.hdfsSink-3.hdfs.batchSize = 1000000 agent.sinks.hdfsSink-3.hdfs.rollInterval = 3600 agent.sinks.hdfsSink-3.hdfs.rollCount = 1000000 agent.sinks.hdfsSink-3.hdfs.rollSize = 0 agent.sinks.hdfsSink-3.hdfs.path = /XXXXX/_pending_/%{yId}/dt=%{dateStr} agent.sinks.hdfsSink-3.hdfs.filePrefix = %H-%{host} agent.sinks.hdfsSink-3.channel = hdfs-fc-3 agent.sinks.hdfsSink-4.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.hdfsSink-4.hdfs.fileType = DataStream agent.sinks.hdfsSink-4.hdfs.txnEventMax = 1000 agent.sinks.hdfsSink-4.hdfs.batchSize = 1000000 agent.sinks.hdfsSink-4.hdfs.rollInterval = 3600 agent.sinks.hdfsSink-4.hdfs.rollCount = 1000000 agent.sinks.hdfsSink-4.hdfs.rollSize = 0 agent.sinks.hdfsSink-4.hdfs.path = /XXXXX/_pending_/%{yId}/dt=%{dateStr} agent.sinks.hdfsSink-4.hdfs.filePrefix = %H-%{host} agent.sinks.hdfsSink-4.channel = hdfs-fc-4 agent.sinks.hdfsSink-5.type = org.apache.flume.sink.hdfs.HDFSEventSink agent.sinks.hdfsSink-5.hdfs.fileType = DataStream agent.sinks.hdfsSink-5.hdfs.txnEventMax = 1000 agent.sinks.hdfsSink-5.hdfs.batchSize = 1000000 agent.sinks.hdfsSink-5.hdfs.rollInterval = 3600 agent.sinks.hdfsSink-5.hdfs.rollCount = 1000000 agent.sinks.hdfsSink-5.hdfs.rollSize = 0 agent.sinks.hdfsSink-5.hdfs.path = /XXXXX/_pendingS_/%{yId}/dt=%{dateStr} agent.sinks.hdfsSink-5.hdfs.filePrefix = %H-%{host} agent.sinks.hdfsSink-5.channel = hdfs-fc-5 #Channels agent.channels.hdfs-fc-1.capacity = 1000000 agent.channels.hdfs-fc-1.transactionCapacity = 1000 agent.channels.hdfs-fc-1.type = org.apache.flume.channel.file.FileChannel agent.channels.hdfs-fc-1.dataDirs = /var/flume/fc1/data agent.channels.hdfs-fc-1.checkpointDir = /var/flume/fc1/checkpoint agent.channels.hdfs-fc-2.capacity = 1000000 agent.channels.hdfs-fc-2.transactionCapacity = 1000 agent.channels.hdfs-fc-2.type = org.apache.flume.channel.file.FileChannel agent.channels.hdfs-fc-2.dataDirs = /var/flume/fc2/data agent.channels.hdfs-fc-2.checkpointDir = /var/flume/fc2/checkpoint agent.channels.hdfs-fc-3.capacity = 1000000 agent.channels.hdfs-fc-3.transactionCapacity = 1000 agent.channels.hdfs-fc-3.type = org.apache.flume.channel.file.FileChannel agent.channels.hdfs-fc-3.dataDirs = /var/flume/fc3/data agent.channels.hdfs-fc-3.checkpointDir = /var/flume/fc3/checkpoint agent.channels.hdfs-fc-4.capacity = 1000000 agent.channels.hdfs-fc-4.transactionCapacity = 1000 agent.channels.hdfs-fc-4.type = org.apache.flume.channel.file.FileChannel agent.channels.hdfs-fc-4.dataDirs = /var/flume/fc4/data agent.channels.hdfs-fc-4.checkpointDir = /var/flume/fc4/checkpoint agent.channels.hdfs-fc-5.capacity = 1000000 agent.channels.hdfs-fc-5.transactionCapacity = 1000 agent.channels.hdfs-fc-5.type = org.apache.flume.channel.file.FileChannel agent.channels.hdfs-fc-5.dataDirs = /var/flume/fc5/data agent.channels.hdfs-fc-5.checkpointDir = /var/flume/fc5/checkpoint {code} > Records the probable data loss while missing selected channel > ------------------------------------------------------------- > > Key: FLUME-1574 > URL: https://issues.apache.org/jira/browse/FLUME-1574 > Project: Flume > Issue Type: Improvement > Components: Channel > Affects Versions: v1.2.0 > Reporter: Denny Ye > Assignee: Denny Ye > Priority: Minor > > When I'm using custom ChannelSelector, there have many chances that it cannot > select any channels to put events into. Both required and optional channels > cannot be chosen. > Event has been discarded and client received successful message. > It's the data loss case from missing selection. > In my opinion, recording this case into log might be better method. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira