FLUME-1392. Inactive channels get added to source channels list causing NPE.

(Hari Shreedharan via Will McQueen)

git-svn-id: https://svn.apache.org/repos/asf/flume/trunk@1366581 
13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/flume/repo
Commit: http://git-wip-us.apache.org/repos/asf/flume/commit/4f8a537e
Tree: http://git-wip-us.apache.org/repos/asf/flume/tree/4f8a537e
Diff: http://git-wip-us.apache.org/repos/asf/flume/diff/4f8a537e

Branch: refs/heads/cdh-1.2.0+24_intuit
Commit: 4f8a537e60eb0921360deaca26e0a69e5acfcf25
Parents: 04bd30e
Author: Will McQueen <[email protected]>
Authored: Sat Jul 28 01:46:01 2012 +0000
Committer: Hari Shreedharan <[email protected]>
Committed: Fri Sep 7 13:07:37 2012 -0700

----------------------------------------------------------------------
 .../org/apache/flume/conf/FlumeConfiguration.java  |   14 ++++++++++++--
 1 files changed, 12 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flume/blob/4f8a537e/flume-ng-configuration/src/main/java/org/apache/flume/conf/FlumeConfiguration.java
----------------------------------------------------------------------
diff --git 
a/flume-ng-configuration/src/main/java/org/apache/flume/conf/FlumeConfiguration.java
 
b/flume-ng-configuration/src/main/java/org/apache/flume/conf/FlumeConfiguration.java
index 739e12d..9b209e8 100644
--- 
a/flume-ng-configuration/src/main/java/org/apache/flume/conf/FlumeConfiguration.java
+++ 
b/flume-ng-configuration/src/main/java/org/apache/flume/conf/FlumeConfiguration.java
@@ -551,6 +551,12 @@ public class FlumeConfiguration {
                 channels.addAll(srcConf.getChannels());
               }
               channels.retainAll(channelSet);
+              if(channels.isEmpty()){
+                throw new ConfigurationException(
+                        "No Channels configured for " + sourceName);
+              }
+              srcContext.put(BasicConfigurationConstants.CONFIG_CHANNELS,
+                      this.getSpaceDelimitedList(channels));
             }
             if ((configSpecified && srcConf.isNotFoundConfigClass()) ||
                 !configSpecified) {
@@ -655,6 +661,10 @@ public class FlumeConfiguration {
               sinkConf.configure(sinkContext);
 
             }
+            if(!channelSet.contains(sinkConf.getChannel())){
+              throw new ConfigurationException("Channel " +
+                      sinkConf.getChannel() + " not in active set.");
+            }
             if ((configSpecified && sinkConf.isNotFoundConfigClass()) ||
                 !configSpecified) {
               newContextMap.put(sinkName, sinkContext);
@@ -665,8 +675,8 @@ public class FlumeConfiguration {
           } catch (ConfigurationException e) {
             iter.remove();
             if (sinkConf != null) errorList.addAll(sinkConf.getErrors());
-            logger.warn("Configuration empty for: " + sinkName + ".Removed.");
-
+            logger.warn("Configuration for : " + sinkName
+                    + " has errors, and will be removed: ", e);
           }
         }
         // Filter out any sinks that have invalid channel

Reply via email to