浏览代码

HADOOP-6788. [Herriot] Exception exclusion functionality is not working
correctly. Contributed by Vinay Kumar Thota.


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

Konstantin Boudnik 15 年之前
父节点
当前提交
04a00b74f5
共有 2 个文件被更改,包括 25 次插入10 次删除
  1. 3 0
      CHANGES.txt
  2. 22 10
      src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj

+ 3 - 0
CHANGES.txt

@@ -970,6 +970,9 @@ Release 0.21.0 - Unreleased
 
   BUG FIXES
 
+    HADOOP-6788. [Herriot] Exception exclusion functionality is not working
+    correctly. (Vinay Thota via cos)
+
     HADOOP-6773. Ivy folder contains redundant files (cos)
 
     HADOOP-5379. CBZip2InputStream to throw IOException on data crc error.

+ 22 - 10
src/test/system/aop/org/apache/hadoop/test/system/DaemonProtocolAspect.aj

@@ -256,19 +256,31 @@ public aspect DaemonProtocolAspect {
   public int DaemonProtocol.getNumberOfMatchesInLogFile(String pattern,
       String[] list) throws IOException {
     StringBuffer filePattern = new StringBuffer(getFilePattern());    
-    if(list != null){
-      for(int i =0; i < list.length; ++i)
-      {
-        filePattern.append(" | grep -v " + list[i] );
+    String[] cmd = null;
+    if (list != null) {
+      StringBuffer filterExpPattern = new StringBuffer();
+      int index=0;
+      for (String excludeExp : list) {
+        if (index++ < list.length -1) {
+           filterExpPattern.append("grep -v " + excludeExp + " | ");
+        } else {
+           filterExpPattern.append("grep -vc " + excludeExp);
+        }
       }
-    }  
-    String[] cmd =
-        new String[] {
-            "bash",
-            "-c",
-            "grep -c "
+      cmd = new String[] {
+                "bash",
+                "-c",
+                "grep "
+                + pattern + " " + filePattern + " | "
+                + filterExpPattern};
+    } else {
+      cmd = new String[] {
+                "bash",
+                "-c",
+                "grep -c "
                 + pattern + " " + filePattern
                 + " | awk -F: '{s+=$2} END {print s}'" };    
+    }
     ShellCommandExecutor shexec = new ShellCommandExecutor(cmd);
     shexec.execute();
     String output = shexec.getOutput();