Merge branch '1.8'

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

Branch: refs/heads/master
Commit: c521cf810b8e38ba90dcd75a3b9b27f45e829bd3
Parents: af91fbd 7f8f66d
Author: Dave Marion <dlmar...@apache.org>
Authored: Tue Jun 14 11:04:38 2016 -0400
Committer: Dave Marion <dlmar...@apache.org>
Committed: Tue Jun 14 11:04:38 2016 -0400

----------------------------------------------------------------------
 .../core/conf/AccumuloConfiguration.java        |  36 ++-
 .../apache/accumulo/core/conf/PropertyType.java |  58 ++++-
 .../core/conf/AccumuloConfigurationTest.java    |  75 ++++++
 .../main/asciidoc/chapters/administration.txt   |   5 +-
 .../java/org/apache/accumulo/proxy/Proxy.java   |   4 +-
 .../org/apache/accumulo/server/Accumulo.java    |   4 +-
 .../accumulo/server/monitor/LogService.java     |   2 +-
 .../accumulo/server/rpc/TServerUtils.java       | 154 ++++++-----
 .../org/apache/accumulo/server/util/Admin.java  |  20 +-
 .../accumulo/server/util/TServerUtilsTest.java  | 261 +++++++++++++++++++
 .../accumulo/gc/SimpleGarbageCollector.java     |  13 +-
 .../java/org/apache/accumulo/master/Master.java |   2 +-
 .../accumulo/monitor/EmbeddedWebServer.java     |   4 +
 .../org/apache/accumulo/monitor/Monitor.java    |  65 ++---
 .../org/apache/accumulo/tracer/TraceServer.java |  21 +-
 .../accumulo/test/functional/ZombieTServer.java |   4 +-
 .../test/performance/thrift/NullTserver.java    |   6 +-
 17 files changed, 595 insertions(+), 139 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/c521cf81/core/src/main/java/org/apache/accumulo/core/conf/AccumuloConfiguration.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c521cf81/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
----------------------------------------------------------------------
diff --cc core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
index bd80700,f08ab5b..5cba0be
--- a/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
+++ b/core/src/main/java/org/apache/accumulo/core/conf/PropertyType.java
@@@ -25,8 -24,16 +25,11 @@@ import java.util.regex.Matcher
  import java.util.regex.Pattern;
  
  import org.apache.accumulo.core.Constants;
+ import org.apache.accumulo.core.util.Pair;
  import org.apache.hadoop.fs.Path;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
  
 -import com.google.common.base.Function;
 -import com.google.common.base.Predicate;
 -import com.google.common.base.Predicates;
 -import com.google.common.collect.Collections2;
 -
  /**
   * Types of {@link Property} values. Each type has a short name, a 
description, and a regex which valid values match. All of these fields are 
optional.
   */
@@@ -52,8 -59,10 +55,10 @@@ public enum PropertyType 
            + "Examples of valid host lists are 
'localhost:2000,www.example.com,10.10.1.1:500' and 'localhost'.\n"
            + "Examples of invalid host lists are '', ':1000', and 
'localhost:80000'"),
  
-   PORT("port", new Bounds(1024, 65535).or(in(true, "0")),
-       "An positive integer in the range 1024-65535, not already in use or 
specified elsewhere in the configuration"),
+   @SuppressWarnings("unchecked")
 -  PORT("port", Predicates.or(new Bounds(1024, 65535), in(true, "0"), new 
PortRange("\\d{4,5}-\\d{4,5}")),
++  PORT("port", or(new Bounds(1024, 65535), in(true, "0"), new 
PortRange("\\d{4,5}-\\d{4,5}")),
+       "An positive integer in the range 1024-65535 (not already in use or 
specified elsewhere in the configuration),\n"
+           + "zero to indicate any open ephemeral port, or a range of positive 
integers specified as M-N"),
  
    COUNT("count", new Bounds(0, Integer.MAX_VALUE), "A non-negative integer in 
the range of 0-" + Integer.MAX_VALUE),
  
@@@ -113,15 -126,21 +118,20 @@@
     * @return true if value is valid or null, or if this type has no regex
     */
    public boolean isValidFormat(String value) {
 -    return predicate.apply(value);
 +    return predicate.test(value);
 +  }
 +
++  @SuppressWarnings("unchecked")
++  private static Predicate<String> or(final Predicate<String>... others) {
++    return (x) -> Arrays.stream(others).anyMatch(y -> y.test(x));
+   }
+ 
 -  private static Predicate<String> in(final boolean caseSensitive, final 
String... strings) {
 -    List<String> allowedSet = Arrays.asList(strings);
 +  private static Predicate<String> in(final boolean caseSensitive, final 
String... allowedSet) {
      if (caseSensitive) {
 -      return Predicates.in(allowedSet);
 +      return x -> Arrays.stream(allowedSet).anyMatch(y -> (x == null && y == 
null) || (x != null && x.equals(y)));
      } else {
 -      Function<String,String> toLower = new Function<String,String>() {
 -        @Override
 -        public String apply(final String input) {
 -          return input == null ? null : input.toLowerCase();
 -        }
 -      };
 -      return 
Predicates.compose(Predicates.in(Collections2.transform(allowedSet, toLower)), 
toLower);
 +      Function<String,String> toLower = x -> x == null ? null : 
x.toLowerCase();
 +      return x -> Arrays.stream(allowedSet).map(toLower).anyMatch(y -> (x == 
null && y == null) || (x != null && toLower.apply(x).equals(y)));
      }
    }
  
@@@ -241,4 -267,46 +251,46 @@@
  
    }
  
+   public static class PortRange extends Matches {
+ 
+     private static final Logger log = 
LoggerFactory.getLogger(PortRange.class);
+ 
+     public PortRange(final String pattern) {
+       super(pattern);
+     }
+ 
+     @Override
 -    public boolean apply(final String input) {
 -      if (super.apply(input)) {
++    public boolean test(final String input) {
++      if (super.test(input)) {
+         try {
+           PortRange.parse(input);
+           return true;
+         } catch (IllegalArgumentException e) {
+           return false;
+         }
+       } else {
+         return false;
+       }
+     }
+ 
+     public static Pair<Integer,Integer> parse(String portRange) {
+       int idx = portRange.indexOf('-');
+       if (idx != -1) {
+         int low = Integer.parseInt(portRange.substring(0, idx));
+         if (low < 1024) {
+           log.error("Invalid port number for low end of the range, using 
1024");
+           low = 1024;
+         }
+         int high = Integer.parseInt(portRange.substring(idx + 1));
+         if (high > 65535) {
+           log.error("Invalid port number for high end of the range, using 
65535");
+           high = 65535;
+         }
+         return new Pair<Integer,Integer>(low, high);
+       }
+       throw new IllegalArgumentException("Invalid port range specification, 
must use M-N notation.");
+     }
+ 
+   }
+ 
  }

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c521cf81/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/c521cf81/server/master/src/main/java/org/apache/accumulo/master/Master.java
----------------------------------------------------------------------

Reply via email to