HADOOP-12436. GlobPattern regex library has performance issues with wildcard characters (Matthew Paduano via aw)
This commit is contained in:
parent
d6c8bad869
commit
0d77e85f0a
35
LICENSE.txt
35
LICENSE.txt
|
@ -320,6 +320,41 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
For com.google.re2j.* classes:
|
||||
---------------------------------------------------------------------
|
||||
This is a work derived from Russ Cox's RE2 in Go, whose license
|
||||
http://golang.org/LICENSE is as follows:
|
||||
|
||||
Copyright (c) 2009 The Go Authors. All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are
|
||||
met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in
|
||||
the documentation and/or other materials provided with the
|
||||
distribution.
|
||||
|
||||
* Neither the name of Google Inc. nor the names of its contributors
|
||||
may be used to endorse or promote products derived from this
|
||||
software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
For hadoop-hdfs-project/hadoop-hdfs-native-client/src/main/native/fuse-dfs/util/tree.h
|
||||
---------------------------------------------------------------------
|
||||
Copyright 2002 Niels Provos <provos@citi.umich.edu>
|
||||
|
|
|
@ -243,6 +243,9 @@ Trunk (Unreleased)
|
|||
|
||||
HADOOP-12249. pull argument parsing into a function (aw)
|
||||
|
||||
HADOOP-12436. GlobPattern regex library has performance issues with
|
||||
wildcard characters (Matthew Paduano via aw)
|
||||
|
||||
BUG FIXES
|
||||
|
||||
HADOOP-11473. test-patch says "-1 overall" even when all checks are +1
|
||||
|
|
|
@ -191,6 +191,12 @@
|
|||
<artifactId>ant</artifactId>
|
||||
<scope>test</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.re2j</groupId>
|
||||
<artifactId>re2j</artifactId>
|
||||
<version>${re2j.version}</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.protobuf</groupId>
|
||||
<artifactId>protobuf-java</artifactId>
|
||||
|
|
|
@ -18,8 +18,8 @@
|
|||
|
||||
package org.apache.hadoop.fs;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.regex.PatternSyntaxException;
|
||||
import com.google.re2j.Pattern;
|
||||
import com.google.re2j.PatternSyntaxException;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
|
@ -164,6 +164,7 @@ public class GlobPattern {
|
|||
}
|
||||
|
||||
private static void error(String message, String pattern, int pos) {
|
||||
throw new PatternSyntaxException(message, pattern, pos);
|
||||
String fullMessage = String.format("%s at pos %d", message, pos);
|
||||
throw new PatternSyntaxException(fullMessage, pattern);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -19,8 +19,6 @@
|
|||
package org.apache.hadoop.metrics2.filter;
|
||||
|
||||
import java.util.Map;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import com.google.common.collect.Maps;
|
||||
import org.apache.commons.configuration.SubsetConfiguration;
|
||||
|
@ -30,6 +28,8 @@ import org.apache.hadoop.metrics2.MetricsException;
|
|||
import org.apache.hadoop.metrics2.MetricsFilter;
|
||||
import org.apache.hadoop.metrics2.MetricsTag;
|
||||
|
||||
import com.google.re2j.Matcher;
|
||||
import com.google.re2j.Pattern;
|
||||
/**
|
||||
* Base class for pattern based filters
|
||||
*/
|
||||
|
|
|
@ -18,12 +18,12 @@
|
|||
|
||||
package org.apache.hadoop.metrics2.filter;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
import org.apache.hadoop.fs.GlobPattern;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
|
||||
import com.google.re2j.Pattern;
|
||||
/**
|
||||
* A glob pattern filter for metrics.
|
||||
*
|
||||
|
|
|
@ -18,11 +18,11 @@
|
|||
|
||||
package org.apache.hadoop.metrics2.filter;
|
||||
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import org.apache.hadoop.classification.InterfaceAudience;
|
||||
import org.apache.hadoop.classification.InterfaceStability;
|
||||
|
||||
import com.google.re2j.Pattern;
|
||||
/**
|
||||
* A regex pattern filter for metrics
|
||||
*/
|
||||
|
|
|
@ -33,7 +33,6 @@ import java.nio.ByteBuffer;
|
|||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import javax.security.auth.callback.Callback;
|
||||
import javax.security.auth.callback.CallbackHandler;
|
||||
|
@ -75,6 +74,7 @@ import org.apache.hadoop.util.ProtoUtil;
|
|||
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
import com.google.protobuf.ByteString;
|
||||
import com.google.re2j.Pattern;
|
||||
/**
|
||||
* A utility class that encapsulates SASL logic for RPC client
|
||||
*/
|
||||
|
|
|
@ -18,10 +18,10 @@
|
|||
|
||||
package org.apache.hadoop.fs;
|
||||
|
||||
import java.util.regex.PatternSyntaxException;
|
||||
import org.junit.Test;
|
||||
import static org.junit.Assert.*;
|
||||
|
||||
import com.google.re2j.PatternSyntaxException;
|
||||
/**
|
||||
* Tests for glob patterns
|
||||
*/
|
||||
|
@ -69,6 +69,11 @@ public class TestGlobPattern {
|
|||
}
|
||||
|
||||
@Test public void testInvalidPatterns() {
|
||||
shouldThrow("[", "[[]]", "[][]", "{", "\\");
|
||||
shouldThrow("[", "[[]]", "{", "\\");
|
||||
}
|
||||
|
||||
@Test(timeout=1000) public void testPathologicalPatterns() {
|
||||
String badFilename = "job_1429571161900_4222-1430338332599-tda%2D%2D+******************************+++...%270%27%28Stage-1430338580443-39-2000-SUCCEEDED-production%2Dhigh-1430338340360.jhist";
|
||||
assertMatch(true, badFilename, badFilename);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -68,6 +68,9 @@
|
|||
<jackson.version>1.9.13</jackson.version>
|
||||
<jackson2.version>2.2.3</jackson2.version>
|
||||
|
||||
<!-- com.google.re2j version -->
|
||||
<re2j.version>1.0</re2j.version>
|
||||
|
||||
<!-- ProtocolBuffer version, used to verify the protoc version and -->
|
||||
<!-- define the protobuf JAR version -->
|
||||
<protobuf.version>2.5.0</protobuf.version>
|
||||
|
|
Loading…
Reference in New Issue