You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@aurora.apache.org by wf...@apache.org on 2015/08/30 23:55:46 UTC

[2/2] aurora git commit: Remove unused code from commons fork.

Remove unused code from commons fork.

Reviewed at https://reviews.apache.org/r/37874/


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

Branch: refs/heads/master
Commit: 85f995447703c117d0df59a8fe34d6e9045bbcd5
Parents: 782f883
Author: Bill Farner <wf...@apache.org>
Authored: Sun Aug 30 14:55:39 2015 -0700
Committer: Bill Farner <wf...@apache.org>
Committed: Sun Aug 30 14:55:39 2015 -0700

----------------------------------------------------------------------
 .../modules/LocalServiceRegistry.java           |  11 -
 .../org/apache/aurora/common/base/Closures.java |  34 -
 .../org/apache/aurora/common/base/Commands.java |  42 --
 .../aurora/common/base/MorePreconditions.java   |  54 --
 .../aurora/common/collections/Multimaps.java    | 134 ----
 .../apache/aurora/common/inject/Bindings.java   | 147 ----
 .../aurora/common/io/CompatibilityCodec.java    |  95 ---
 .../apache/aurora/common/io/ThriftCodec.java    | 104 ---
 .../apache/aurora/common/net/Environment.java   |  47 --
 .../org/apache/aurora/common/stats/Stats.java   |  60 +-
 .../aurora/common/stats/StatsProvider.java      |  19 +-
 .../aurora/common/util/BackoffDecider.java      | 663 -------------------
 .../aurora/common/util/BackoffHelper.java       |  24 +-
 .../aurora/common/util/CommandExecutor.java     |  42 --
 .../org/apache/aurora/common/util/Random.java   |  18 +-
 .../org/apache/aurora/common/util/Stat.java     | 351 ----------
 .../apache/aurora/common/util/StateMachine.java |  33 +-
 .../org/apache/aurora/common/util/Timer.java    |  71 --
 .../aurora/common/zookeeper/CandidateImpl.java  |  38 +-
 .../aurora/common/zookeeper/ServerSetImpl.java  |  72 +-
 .../common/zookeeper/SingletonService.java      |  89 +--
 .../common/zookeeper/guice/ServerSetModule.java | 267 --------
 .../guice/client/ZooKeeperClientModule.java     |  62 --
 .../modules/LifecycleModuleTest.java            |   5 +-
 .../modules/LocalServiceRegistryTest.java       |  37 +-
 .../apache/aurora/common/base/ClosuresTest.java |  60 +-
 .../apache/aurora/common/base/CommandsTest.java |  84 ---
 .../common/collections/Iterables2Test.java      |  12 -
 .../aurora/common/inject/BindingsTest.java      |  37 --
 .../aurora/common/io/CodecTestUtilities.java    |  34 -
 .../common/io/CompatibilityCodecTest.java       | 101 ---
 .../aurora/common/io/ThriftCodecTest.java       |  54 --
 .../apache/aurora/common/stats/StatsTest.java   |  16 +-
 .../aurora/common/util/BackoffDeciderTest.java  | 324 ---------
 .../aurora/common/util/StateMachineTest.java    | 140 +---
 .../common/zookeeper/CandidateImplTest.java     |  69 +-
 .../common/zookeeper/ServerSetImplTest.java     |   7 +-
 .../aurora/common/zookeeper/ServerSetsTest.java |   2 +-
 .../common/zookeeper/SingletonServiceTest.java  | 109 +--
 .../zookeeper/guice/ServerSetModuleTest.java    |  76 ---
 .../benchmark/fakes/FakeStatsProvider.java      |  15 -
 41 files changed, 66 insertions(+), 3593 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java b/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
index 027e4a7..806951b 100644
--- a/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
+++ b/commons/src/main/java/org/apache/aurora/common/application/modules/LocalServiceRegistry.java
@@ -216,17 +216,6 @@ public class LocalServiceRegistry {
     }
 
     /**
-     * Creates a primary local service.
-     *
-     * @param port Service port.
-     * @param shutdownCommand A command that will shut down the service.
-     * @return A new primary local service.
-     */
-    public static LocalService primaryService(int port, Command shutdownCommand) {
-      return new LocalService(true, ImmutableSet.<String>of(), port, shutdownCommand);
-    }
-
-    /**
      * Creates a named auxiliary service.
      *
      * @param name Service name.

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/base/Closures.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/base/Closures.java b/commons/src/main/java/org/apache/aurora/common/base/Closures.java
index d741e9c..d6cb82a 100644
--- a/commons/src/main/java/org/apache/aurora/common/base/Closures.java
+++ b/commons/src/main/java/org/apache/aurora/common/base/Closures.java
@@ -13,10 +13,8 @@
  */
 package org.apache.aurora.common.base;
 
-import com.google.common.base.Function;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
-import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.Iterables;
 
@@ -41,38 +39,6 @@ public final class Closures {
   }
 
   /**
-   * Converts a closure into a function returning {@code null}.
-   */
-  public static <T> Function<T, Void> asFunction(final ExceptionalClosure<T, ?> closure) {
-    checkNotNull(closure);
-
-    // CHECKSTYLE:OFF IllegalCatch
-    return new Function<T, Void>() {
-      @Override public Void apply(T item) {
-        try {
-          closure.execute(item);
-        } catch (Exception e) {
-          Throwables.propagate(e);
-        }
-        return null;
-      }
-    };
-    // CHECKSTYLE:ON IllegalCatch
-  }
-
-  /**
-   * Varargs equivalent of {@link #combine(Iterable)}.
-   *
-   * @param closures Closures to combine.
-   * @param <T> Type accepted by the closures.
-   * @return A single closure that will fan out all calls to {@link Closure#execute(Object)} to
-   *    the wrapped closures.
-   */
-  public static <T> Closure<T> combine(Closure<T>... closures) {
-    return combine(ImmutableList.copyOf(closures));
-  }
-
-  /**
    * Combines multiple closures into a single closure, whose calls are replicated sequentially
    * in the order that they were provided.
    * If an exception is encountered from a closure it propagates to the top-level closure and the

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/base/Commands.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/base/Commands.java b/commons/src/main/java/org/apache/aurora/common/base/Commands.java
index 6d9fc4c..8a88ae3 100644
--- a/commons/src/main/java/org/apache/aurora/common/base/Commands.java
+++ b/commons/src/main/java/org/apache/aurora/common/base/Commands.java
@@ -13,10 +13,6 @@
  */
 package org.apache.aurora.common.base;
 
-import com.google.common.collect.ImmutableList;
-
-import static com.google.common.base.Preconditions.checkNotNull;
-
 /**
  * Utility functions for working with commands.
  *
@@ -36,42 +32,4 @@ public final class Commands {
   private Commands() {
     // utility
   }
-
-  /**
-   * Converts a command into a supplier returning null.
-   *
-   * @return A supplier whose {@link Supplier#get()} will cause the given
-   *         {@code command} to be executed and {@code null} to be returned.
-   */
-  public static <E extends Exception> ExceptionalSupplier<Void, E> asSupplier(
-      final ExceptionalCommand<E> command) {
-    checkNotNull(command);
-
-    return new ExceptionalSupplier<Void, E>() {
-      @Override public Void get() throws E {
-        command.execute();
-        return null;
-      }
-    };
-  }
-
-  /**
-   * Combines multiple {@code commands} into a single command. A {@link RuntimeException} thrown
-   * during the execution of one of the commands will prevent the subsequent commands from being
-   * executed.
-   *
-   * @param commands Commands to compound.
-   * @return A command whose {@link Command#execute()} will cause the given {@code commands} to be
-   *         executed serially.
-   */
-  public static Command compound(Iterable<Command> commands) {
-    final ImmutableList<Command> executableCommands = ImmutableList.copyOf(commands);
-    return new Command() {
-      @Override public void execute() {
-        for (Command command : executableCommands) {
-          command.execute();
-        }
-      }
-    };
-  }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/base/MorePreconditions.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/base/MorePreconditions.java b/commons/src/main/java/org/apache/aurora/common/base/MorePreconditions.java
index 1fe19d4..781f97a 100644
--- a/commons/src/main/java/org/apache/aurora/common/base/MorePreconditions.java
+++ b/commons/src/main/java/org/apache/aurora/common/base/MorePreconditions.java
@@ -87,58 +87,4 @@ public final class MorePreconditions {
     Preconditions.checkArgument(!Iterables.isEmpty(argument), message, args);
     return argument;
   }
-
-  /**
-   * Checks that a double falls within a specified range, inclusive
-   *
-   * @param argument argument to validate.
-   * @param minimum minimum possible valid value for the argument.
-   * @param maximum maximum possible valid value for the argument.
-   * @param message the message template for validation exception messages where %s serves as the
-   *                sole argument placeholder.
-   * @return the argument if it is valid.
-   * @throws IllegalArgumentException if the argument falls outside of the specified range.
-   */
-  public static double checkArgumentRange(double argument, double minimum, double maximum,
-      String message) {
-    Preconditions.checkArgument(minimum <= argument, message, argument);
-    Preconditions.checkArgument(argument <= maximum, message, argument);
-    return argument;
-  }
-
-  /**
-   * Checks that an int falls within a specified range, inclusive
-   *
-   * @param argument argument to validate.
-   * @param minimum minimum possible valid value for the argument.
-   * @param maximum maximum possible valid value for the argument.
-   * @param message the message template for validation exception messages where %s serves as the
-   *                sole argument placeholder.
-   * @return the argument if it is valid.
-   * @throws IllegalArgumentException if the argument falls outside of the specified range.
-   */
-  public static int checkArgumentRange(int argument, int minimum, int maximum,
-      String message) {
-    Preconditions.checkArgument(minimum <= argument, message, argument);
-    Preconditions.checkArgument(argument <= maximum, message, argument);
-    return argument;
-  }
-
-  /**
-   * Checks that at least one of the specified arguments is true.
-   *
-   * @param message the message for validation exception messages.
-   * @param arguments one or more arguments to check.
-   * @return true if at least one of the arguments is true.
-   * @throws IllegalArgumentException if none of the arguments are true.
-   */
-  public static boolean checkArguments(String message,
-      Boolean... arguments) {
-    for (Boolean argument : arguments) {
-      if (argument) {
-        return true;
-      }
-    }
-    throw new IllegalArgumentException(message);
-  }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/collections/Multimaps.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/collections/Multimaps.java b/commons/src/main/java/org/apache/aurora/common/collections/Multimaps.java
deleted file mode 100644
index 7f94a8a..0000000
--- a/commons/src/main/java/org/apache/aurora/common/collections/Multimaps.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.collections;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-import com.google.common.collect.ArrayListMultimap;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Multimap;
-import com.google.common.collect.Multiset;
-import com.google.common.collect.Ordering;
-import com.google.common.collect.Sets;
-
-/**
- * Utility class for functions related to Multimaps in the java collections library.
- *
- * @author William Farner
- */
-public final class Multimaps {
-
-  private Multimaps() {
-    // Utility.
-  }
-
-  /**
-   * Prunes a multimap based on a predicate, returning the pruned values.  The input map will be
-   * modified.
-   *
-   * @param map The multimap to prune.
-   * @param filterRule The pruning rule.  When the predicate returns {@code false} for an entry, it
-   *    will be pruned, otherwise it will be retained.
-   * @param <K> The key type in the multimap.
-   * @param <V> The value type in the multimap.
-   * @return A new multimap, containing the pruned keys/values.
-   */
-  public static <K, V> Multimap<K, V> prune(Multimap<K, V> map,
-      Predicate<? super Collection<V>> filterRule) {
-    Preconditions.checkNotNull(map);
-    Preconditions.checkNotNull(filterRule);
-    Multimap<K, V> pruned = ArrayListMultimap.create();
-    Iterator<Map.Entry<K, Collection<V>>> asMapItr = map.asMap().entrySet().iterator();
-    while (asMapItr.hasNext()) {
-      Map.Entry<K, Collection<V>> asMapEntry = asMapItr.next();
-      if (!filterRule.apply(asMapEntry.getValue())) {
-        pruned.putAll(asMapEntry.getKey(), asMapEntry.getValue());
-        asMapItr.remove();
-      }
-    }
-
-    return pruned;
-  }
-
-  private static final class AtLeastSize implements Predicate<Collection<?>> {
-    private final int minSize;
-
-    AtLeastSize(int minSize) {
-      Preconditions.checkArgument(minSize >= 0);
-      this.minSize = minSize;
-    }
-
-    @Override
-    public boolean apply(Collection<?> c) {
-      return c.size() >= minSize;
-    }
-  }
-
-  /**
-   * Convenience method to prune key/values pairs where the size of the value collection is below a
-   * threshold.
-   *
-   * @param map The multimap to prune.
-   * @param minSize The minimum size for retained value collections.
-   * @param <K> The key type in the multimap.
-   * @param <V> The value type in the multimap.
-   * @return A new multimap, containing the pruned keys/values.
-   * @throws IllegalArgumentException if minSize < 0
-   */
-  public static <K, V> Multimap<K, V> prune(Multimap<K, V> map, int minSize) {
-    return prune(map, new AtLeastSize(minSize));
-  }
-
-  /**
-   * Returns the set of keys associated with groups of a size greater than or equal to a given size.
-   *
-   * @param map The multimap to search.
-   * @param minSize The minimum size to return associated keys for.
-   * @param <K> The key type for the multimap.
-   * @return The keys associated with groups of size greater than or equal to {@code minSize}.
-   * @throws IllegalArgumentException if minSize < 0
-   */
-  public static <K> Set<K> getLargeGroups(Multimap<K, ?> map, int minSize) {
-    return Sets.newHashSet(
-        Maps.filterValues(map.asMap(), new AtLeastSize(minSize)).keySet());
-  }
-
-  /**
-   * Returns the set of keys associated with the largest values in the multimap.
-   *
-   * @param map The multimap to search.
-   * @param topValues Number of groupings to find the keys for.
-   * @return The keys associated with the largest groups, of maximum size {@code topValues}.
-   */
-  public static <K> Set<K> getLargestGroups(Multimap<K, ?> map, int topValues) {
-    Ordering<Multiset.Entry<K>> groupOrdering = new Ordering<Multiset.Entry<K>>() {
-      @Override
-      public int compare(Multiset.Entry<K> entry1, Multiset.Entry<K> entry2) {
-        return entry1.getCount() - entry2.getCount();
-        // overflow-safe, since sizes are nonnegative
-      }
-    };
-    Set<K> topKeys = Sets.newHashSetWithExpectedSize(topValues);
-    for (Multiset.Entry<K> entry
-         : groupOrdering.greatestOf(map.keys().entrySet(), topValues)) {
-      topKeys.add(entry.getElement());
-    }
-    return topKeys;
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/inject/Bindings.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/inject/Bindings.java b/commons/src/main/java/org/apache/aurora/common/inject/Bindings.java
index f910f22..d474ef9 100644
--- a/commons/src/main/java/org/apache/aurora/common/inject/Bindings.java
+++ b/commons/src/main/java/org/apache/aurora/common/inject/Bindings.java
@@ -26,9 +26,6 @@ import com.google.inject.Key;
 import com.google.inject.Module;
 import com.google.inject.PrivateModule;
 import com.google.inject.TypeLiteral;
-import com.google.inject.binder.LinkedBindingBuilder;
-import com.google.inject.multibindings.Multibinder;
-import com.google.inject.name.Names;
 
 /**
  * A utility that helps with guice bindings.
@@ -43,14 +40,6 @@ public final class Bindings {
   }
 
   /**
-   * Equivalent to calling {@code requireBinding(binder, Key.get(required, Names.named(namedKey)))}.
-   */
-  public static void requireNamedBinding(Binder binder, Class<?> required, String namedKey) {
-    requireBinding(binder, Key.get(Preconditions.checkNotNull(required),
-        Names.named(Preconditions.checkNotNull(namedKey))));
-  }
-
-  /**
    * Equivalent to calling {@code requireBinding(binder, Key.get(required))}.
    */
   public static void requireBinding(Binder binder, Class<?> required) {
@@ -106,70 +95,6 @@ public final class Bindings {
   }
 
   /**
-   * A guice binding helper that allows for any combination of Class, TypeLiteral or Key binding
-   * without forcing guiced implementation to provide all the overloaded binding methods they would
-   * otherwise have to.
-   *
-   * @param <T> The type this helper can be used to bind implementations for.
-   */
-  public interface BindHelper<T> {
-
-    /**
-     * Associates this BindHelper with an Injector instance.
-     *
-     * @param binder The binder for the injector implementations will be bound in.
-     * @return A binding builder that can be used to bind an implementation with.
-     */
-    LinkedBindingBuilder<T> with(Binder binder);
-  }
-
-  /**
-   * Creates a BindHelper for the given binding key that can be used to bind a single instance.
-   *
-   * @param key The binding key the returned BindHelper can be use to bind implementations for.
-   * @param <T> The type the returned BindHelper can be used to bind implementations for.
-   * @return A BindHelper that can be used to bind an implementation with.
-   */
-  public static <T> BindHelper<T> binderFor(final Key<T> key) {
-    return new BindHelper<T>() {
-      public LinkedBindingBuilder<T> with(Binder binder) {
-        return binder.bind(key);
-      }
-    };
-  }
-
-  /**
-   * Creates a BindHelper for the given type that can be used to add a binding of to a set.
-   *
-   * @param type The type the returned BindHelper can be use to bind implementations for.
-   * @param <T> The type the returned BindHelper can be used to bind implementations for.
-   * @return A BindHelper that can be used to bind an implementation with.
-   */
-  public static <T> BindHelper<T> multiBinderFor(final Class<T> type) {
-    return new BindHelper<T>() {
-      public LinkedBindingBuilder<T> with(Binder binder) {
-        return Multibinder.newSetBinder(binder, type).addBinding();
-      }
-    };
-  }
-
-  /**
-   * Checks that the given annotation instance is a {@link BindingAnnotation @BindingAnnotation}.
-   *
-   * @param annotation The annotation instance to check.
-   * @param <T> The type of the binding annotation.
-   * @return The checked binding annotation.
-   * @throws NullPointerException If the given {@code annotation} is null.
-   * @throws IllegalArgumentException If the given {@code annotation} is not a
-   *     {@literal @BindingAnnotation}.
-   */
-  public static <T extends Annotation> T checkBindingAnnotation(T annotation) {
-    Preconditions.checkNotNull(annotation);
-    checkBindingAnnotation(annotation.annotationType());
-    return annotation;
-  }
-
-  /**
    * Checks that the given annotation type is a {@link BindingAnnotation @BindingAnnotation}.
    *
    * @param annotationType The annotation type to check.
@@ -225,24 +150,6 @@ public final class Bindings {
   }
 
   /**
-   * Creates a key factory that produces keys for a given annotation instance.
-   *
-   * @param annotation The annotation instance to apply to all keys.
-   * @return A key factory that creates annotated keys.
-   */
-  public static KeyFactory annotatedKeyFactory(final Annotation annotation) {
-    checkBindingAnnotation(annotation);
-    return new KeyFactory() {
-      @Override public <T> Key<T> create(Class<T> type) {
-        return Key.get(type, annotation);
-      }
-      @Override public <T> Key<T> create(TypeLiteral<T> type) {
-        return Key.get(type, annotation);
-      }
-    };
-  }
-
-  /**
    * Creates a key factory that produces keys for a given annotation type.
    *
    * @param annotationType The annotation type to apply to all keys.
@@ -259,58 +166,4 @@ public final class Bindings {
       }
     };
   }
-
-  /**
-   * A utility that helps rebind keys.
-   */
-  public static final class Rebinder {
-    private final Binder binder;
-    private final KeyFactory bindToFactory;
-
-    /**
-     * Creates a Rebinder that links bindings to keys from the given {@code bindToFactory}.
-     *
-     * @param binder A binder to rebind keys in.
-     * @param bindToFactory A factory for the rebinding key.
-     */
-    public Rebinder(Binder binder, KeyFactory bindToFactory) {
-      this.binder = Preconditions.checkNotNull(binder);
-      this.bindToFactory = Preconditions.checkNotNull(bindToFactory);
-    }
-
-    /**
-     * Rebinds the given key to another, linking bindings.
-     *
-     * @param fromKey The source key to rebind.
-     * @return The key that {@code key} was rebound to.
-     */
-    public <T> Key<T> rebind(Key<T> fromKey) {
-      Key<T> toKey = bindToFactory.create(fromKey.getTypeLiteral());
-      binder.bind(toKey).to(fromKey);
-      requireBinding(binder, fromKey);
-      return toKey;
-    }
-  }
-
-  /**
-   * Creates a Rebinder that rebinds keys to the given annotation instance.
-   *
-   * @param binder A binder to rebind keys in.
-   * @param annotation The annotation instance to rebind keys to.
-   * @return A Rebinder targeting the given {@code annotationType}.
-   */
-  public static Rebinder rebinder(Binder binder, Annotation annotation) {
-    return new Rebinder(binder, annotatedKeyFactory(annotation));
-  }
-
-  /**
-   * Creates a Rebinder that rebinds keys to the given annotation type.
-   *
-   * @param binder A binder to rebind keys in.
-   * @param annotationType The annotation type to rebind keys to.
-   * @return A Rebinder targeting the given {@code annotationType}.
-   */
-  public static Rebinder rebinder(Binder binder, Class<? extends Annotation> annotationType) {
-    return new Rebinder(binder, annotatedKeyFactory(annotationType));
-  }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/io/CompatibilityCodec.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/io/CompatibilityCodec.java b/commons/src/main/java/org/apache/aurora/common/io/CompatibilityCodec.java
deleted file mode 100644
index c49c7dd..0000000
--- a/commons/src/main/java/org/apache/aurora/common/io/CompatibilityCodec.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.io;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.PushbackInputStream;
-
-import com.google.common.base.Preconditions;
-import com.google.common.base.Predicate;
-
-/**
- * A codec that composes two codecs: a primary and a compatibility codec. It always serializes with
- * the primary codec, but can make a decision on deserialization based on the first few bytes of the
- * serialized format whether to use the compatibility codec. This allows for easier transition
- * between storage formats as the codec remains able to read the old serialized format.
- *
- * @author Attila Szegedi
- *
- * @param <T> the type of objects this codec is for.
- */
-public class CompatibilityCodec<T> implements Codec<T> {
-  private final Codec<T> primaryCodec;
-  private final Codec<T> secondaryCodec;
-  private final int prefixLength;
-  private final Predicate<byte[]> discriminator;
-
-  private CompatibilityCodec(Codec<T> primaryCodec, Codec<T> secondaryCodec, int prefixLength,
-      Predicate<byte[]> discriminator) {
-    Preconditions.checkNotNull(primaryCodec);
-    Preconditions.checkNotNull(secondaryCodec);
-    this.primaryCodec = primaryCodec;
-    this.secondaryCodec = secondaryCodec;
-    this.prefixLength = prefixLength;
-    this.discriminator = discriminator;
-  }
-
-  /**
-   * Creates a new compatibility codec instance.
-   *
-   * @param primaryCodec the codec used to serialize objects, as well as deserialize them when the
-   *          first byte of the serialized format matches the discriminator.
-   * @param secondaryCodec the codec used to deserialize objects when the first byte of the
-   *          serialized format does not match the discriminator.
-   * @param prefixLength the length, in bytes, of the prefix of the message that is inspected for
-   *          determining the format.
-   * @param discriminator a predicate that will receive an array of at most prefixLength bytes
-   *          (it can receive less if the serialized format is shorter) and has to return true
-   *          if the primary codec should be used for deserialization, otherwise false.
-   */
-  public static <T> CompatibilityCodec<T> create(Codec<T> primaryCodec, Codec<T> secondaryCodec,
-      int prefixLength, Predicate<byte[]> discriminator) {
-    return new CompatibilityCodec<T>(primaryCodec, secondaryCodec, prefixLength, discriminator);
-  }
-
-  @Override
-  public T deserialize(InputStream source) throws IOException {
-    final PushbackInputStream in = new PushbackInputStream(source, prefixLength);
-    final byte[] prefix = readAtMostPrefix(in);
-    in.unread(prefix);
-    return (discriminator.apply(prefix) ? primaryCodec : secondaryCodec).deserialize(in);
-  }
-
-  private byte[] readAtMostPrefix(InputStream in) throws IOException {
-    final byte[] prefix = new byte[prefixLength];
-    int read = 0;
-    do {
-      final int readNow = in.read(prefix, read, prefixLength - read);
-      if (readNow == -1) {
-        byte[] newprefix = new byte[read];
-        System.arraycopy(prefix, 0, newprefix, 0, read);
-        return newprefix;
-      }
-      read += readNow;
-    } while (read < prefixLength);
-    return prefix;
-  }
-
-  @Override
-  public void serialize(T item, OutputStream sink) throws IOException {
-    primaryCodec.serialize(item, sink);
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/io/ThriftCodec.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/io/ThriftCodec.java b/commons/src/main/java/org/apache/aurora/common/io/ThriftCodec.java
deleted file mode 100644
index 6644788..0000000
--- a/commons/src/main/java/org/apache/aurora/common/io/ThriftCodec.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.io;
-
-import com.google.common.base.Function;
-import com.google.common.base.Preconditions;
-import com.google.common.base.Supplier;
-import org.apache.aurora.common.base.MoreSuppliers;
-import org.apache.thrift.TBase;
-import org.apache.thrift.TException;
-import org.apache.thrift.protocol.TBinaryProtocol;
-import org.apache.thrift.protocol.TCompactProtocol;
-import org.apache.thrift.protocol.TJSONProtocol;
-import org.apache.thrift.protocol.TProtocol;
-import org.apache.thrift.transport.TIOStreamTransport;
-import org.apache.thrift.transport.TTransport;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-/**
- * A {@code Codec} that can encode and decode thrift structs.
- */
-public class ThriftCodec<T extends TBase> implements Codec<T> {
-
-  public static final Function<TTransport, TProtocol> JSON_PROTOCOL =
-        new Function<TTransport, TProtocol>() {
-          @Override public TProtocol apply(TTransport transport) {
-            return new TJSONProtocol(transport);
-          }
-        };
-
-  public static final Function<TTransport, TProtocol> BINARY_PROTOCOL =
-        new Function<TTransport, TProtocol>() {
-          @Override public TProtocol apply(TTransport transport) {
-            return new TBinaryProtocol(transport);
-          }
-        };
-
-  public static final Function<TTransport, TProtocol> COMPACT_PROTOCOL =
-      new Function<TTransport, TProtocol>() {
-        @Override public TProtocol apply(TTransport transport) {
-          return new TCompactProtocol(transport);
-        }
-      };
-
-  private final Supplier<T> templateSupplier;
-  private final Function<TTransport, TProtocol> protocolFactory;
-
-  public static <T extends TBase> ThriftCodec<T> create(final Class<T> thriftStructType,
-      Function<TTransport, TProtocol> protocolFactory) {
-    return new ThriftCodec<T>(MoreSuppliers.of(thriftStructType), protocolFactory);
-  }
-
-  /**
-   * @deprecated use {@link ThriftCodec#create(Class, Function)} instead.
-   */
-  @Deprecated
-  public ThriftCodec(final Class<T> thriftStructType,
-      Function<TTransport, TProtocol> protocolFactory) {
-    this(MoreSuppliers.of(thriftStructType), protocolFactory);
-  }
-
-  public ThriftCodec(Supplier<T> templateSupplier,
-      Function<TTransport, TProtocol> protocolFactory) {
-    this.templateSupplier = Preconditions.checkNotNull(templateSupplier);
-    this.protocolFactory = Preconditions.checkNotNull(protocolFactory);
-  }
-
-  @Override
-  public void serialize(T item, OutputStream sink) throws IOException {
-    Preconditions.checkNotNull(item);
-    Preconditions.checkNotNull(sink);
-    try {
-      item.write(protocolFactory.apply(new TIOStreamTransport(null, sink)));
-    } catch (TException e) {
-      throw new IOException("Problem serializing thrift struct: " + item, e);
-    }
-  }
-
-  @Override
-  public T deserialize(InputStream source) throws IOException {
-    Preconditions.checkNotNull(source);
-    T template = templateSupplier.get();
-    try {
-      template.read(protocolFactory.apply(new TIOStreamTransport(source, null)));
-    } catch (TException e) {
-      throw new IOException("Problem de-serializing thrift struct from stream", e);
-    }
-    return template;
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/net/Environment.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/net/Environment.java b/commons/src/main/java/org/apache/aurora/common/net/Environment.java
deleted file mode 100644
index 65fd15e..0000000
--- a/commons/src/main/java/org/apache/aurora/common/net/Environment.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.net;
-
-/**
- * Represents a network environment at the granularity of a datacenter.
- *
- * @author John Sirois
- */
-public interface Environment {
-
-  /**
-   * Returns the name of this network environment's datacenter.
-   *
-   * @return the name of this environment's datacenter
-   */
-  String dcName();
-
-  /**
-   * Creates a fully qualified hostname for a given unqualified hostname in the network
-   * environment's datacenter.  Does not confirm that the host exists.
-   *
-   * @param hostname The simple hostname to qualify.
-   * @return The fully qualified hostname.
-   */
-  String fullyQualify(String hostname);
-
-  /**
-   * Checks if a given {@code hostname} is a valid hostname for a host in this network environment;
-   * does not guarantee that the host exists in this network environment.
-   *
-   * @param hostname The simple hostname to check for membership in this network environment.
-   * @return {@code true} if the hostname is a valid hostname for this network environment.
-   */
-  boolean contains(String hostname);
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/stats/Stats.java b/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
index 2191f77..f2bd05d 100644
--- a/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
+++ b/commons/src/main/java/org/apache/aurora/common/stats/Stats.java
@@ -14,7 +14,6 @@
 package org.apache.aurora.common.stats;
 
 import java.util.Collection;
-import java.util.Map;
 import java.util.concurrent.Callable;
 import java.util.concurrent.ConcurrentLinkedQueue;
 import java.util.concurrent.ConcurrentMap;
@@ -53,7 +52,7 @@ public class Stats {
   // Store stats in the order they were registered, so that derived variables are
   // sampled after their inputs.
   private static final Collection<RecordingStat<? extends Number>> ORDERED_NUMERIC_STATS =
-      new ConcurrentLinkedQueue<RecordingStat<? extends Number>>();
+      new ConcurrentLinkedQueue<>();
 
   private static final Cache<String, RecordingStat<? extends Number>> NUMERIC_STATS =
       CacheBuilder.newBuilder().build();
@@ -128,11 +127,7 @@ public class Stats {
   /**
    * A {@link StatRegistry} that provides stats registered with the global {@link Stat}s repository.
    */
-  public static final StatRegistry STAT_REGISTRY = new StatRegistry() {
-    @Override public Iterable<RecordingStat<? extends Number>> getStats() {
-      return Stats.getNumericVariables();
-    }
-  };
+  public static final StatRegistry STAT_REGISTRY = Stats::getNumericVariables;
 
   private static class ExportStat implements Callable<RecordingStat<? extends Number>> {
     private final AtomicBoolean called = new AtomicBoolean(false);
@@ -144,7 +139,7 @@ public class Stats {
       this.name = name;
       this.stat = (stat instanceof RecordingStat)
           ? (RecordingStat<? extends Number>) stat
-          : new RecordingStatImpl<T>(stat);
+          : new RecordingStatImpl<>(stat);
     }
 
     @Override
@@ -299,27 +294,6 @@ public class Stats {
   }
 
   /**
-   * Creates and exports an {@link AtomicDouble}.
-   *
-   * @param name The name to export the stat with.
-   * @return A reference to the {@link AtomicDouble} created.
-   */
-  public static AtomicDouble exportDouble(String name) {
-    return exportDouble(name, 0.0);
-  }
-
-  /**
-   * Creates and exports an {@link AtomicDouble} with initial value.
-   *
-   * @param name The name to export the stat with.
-   * @param initialValue The initial stat value.
-   * @return A reference to the {@link AtomicDouble} created.
-   */
-  public static AtomicDouble exportDouble(String name, double initialValue) {
-    return export(name, new AtomicDouble(initialValue));
-  }
-
-  /**
    * Exports a metric that tracks the size of a collection.
    *
    * @param name Name of the stat to export.
@@ -334,34 +308,6 @@ public class Stats {
   }
 
   /**
-   * Exports a metric that tracks the size of a map.
-   *
-   * @param name Name of the stat to export.
-   * @param map Map whose size should be tracked.
-   */
-  public static void exportSize(String name, final Map<?, ?> map) {
-    export(new StatImpl<Integer>(name) {
-      @Override public Integer read() {
-        return map.size();
-      }
-    });
-  }
-
-  /**
-   * Exports a metric that tracks the size of a cache.
-   *
-   * @param name Name of the stat to export.
-   * @param cache Cache whose size should be tracked.
-   */
-  public static void exportSize(String name, final Cache<?, ?> cache) {
-    export(new StatImpl<Long>(name) {
-      @Override public Long read() {
-        return cache.size();
-      }
-    });
-  }
-
-  /**
    * Exports a 'static' statistic, which will not be registered for time series tracking.
    *
    * @param var Variable to statically export.

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java b/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
index cb1c56b..6b1fa4b 100644
--- a/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
+++ b/commons/src/main/java/org/apache/aurora/common/stats/StatsProvider.java
@@ -13,10 +13,10 @@
  */
 package org.apache.aurora.common.stats;
 
-import com.google.common.base.Supplier;
-
 import java.util.concurrent.atomic.AtomicLong;
 
+import com.google.common.base.Supplier;
+
 /**
  * A minimal interface to a Stats repository.
  *
@@ -61,21 +61,6 @@ public interface StatsProvider {
      * @param latencyMicros The elapsed time required to complete the request.
      */
     void requestComplete(long latencyMicros);
-
-    /**
-     * Accumulates the error counter and the request counter.
-     */
-    void incErrors();
-
-    /**
-     * Accumulates the reconnect counter.
-     */
-    void incReconnects();
-
-    /**
-     * Accumulates the timeout counter.
-     */
-    void incTimeouts();
   }
 
   /**

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/BackoffDecider.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/BackoffDecider.java b/commons/src/main/java/org/apache/aurora/common/util/BackoffDecider.java
deleted file mode 100644
index e11a52c..0000000
--- a/commons/src/main/java/org/apache/aurora/common/util/BackoffDecider.java
+++ /dev/null
@@ -1,663 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.util;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import com.google.common.collect.Lists;
-import org.apache.aurora.common.base.MorePreconditions;
-import org.apache.aurora.common.quantity.Amount;
-import org.apache.aurora.common.quantity.Time;
-import org.apache.aurora.common.stats.Stats;
-import org.apache.aurora.common.stats.StatsProvider;
-
-import javax.annotation.Nullable;
-import java.util.Deque;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.logging.Logger;
-
-/**
- * Handles logic for deciding whether to back off from calls to a backend.
- *
- * This works by offering a guard method {@link #shouldBackOff()}, which instructs the caller
- * whether they should avoid making the call.  The backoff logic will maintain statistics about
- * the failure rate, and push into a backoff state (silent period) when the failure rate exceeds
- * the configured threshold.  At the end of the quiet period, a recovery state will be entered,
- * during which the decider will allow traffic to ramp back up to full capacity.
- *
- * The expected use case looks something like this:
- *
- * <pre>
- * void sendRequestGuarded() {
- *   if (!decider.shouldBackOff()) {
- *     boolean success = sendRequestUnguarded();
- *     if (success) {
- *       decider.addSuccess();
- *     } else {
- *       decider.addFailure();
- *     }
- *   }
- * }
- * </pre>
- *
- * @author William Farner
- */
-public class BackoffDecider {
-  private static final Logger LOG = Logger.getLogger(BackoffDecider.class.getName());
-
-  // The group that this decider is a part of.
-  private final Iterable<BackoffDecider> deciderGroup;
-
-  private final TimedStateMachine stateMachine;
-
-  private final String name;
-
-  private final double toleratedFailureRate;
-
-  @VisibleForTesting final RequestWindow requests;
-
-  // Used to calculate backoff durations when in backoff state.
-  private final BackoffStrategy strategy;
-
-  private final Amount<Long, Time> recoveryPeriod;
-  private long previousBackoffPeriodNs = 0;
-
-  // Used for random selection during recovery period.
-  private final Random random;
-
-  private final Clock clock;
-  private final AtomicLong backoffs;
-  private final RecoveryType recoveryType;
-
-  /**
-   * Different types of recovery mechanisms to use after exiting the backoff state.
-   */
-  public static enum RecoveryType {
-    // Randomly allows traffic to flow through, with a linearly-ascending probability.
-    RANDOM_LINEAR,
-    // Allows full traffic capacity to flow during the recovery period.
-    FULL_CAPACITY
-  }
-
-  private BackoffDecider(String name, int seedSize, double toleratedFailureRate,
-      @Nullable Iterable<BackoffDecider> deciderGroup, BackoffStrategy strategy,
-      @Nullable Amount<Long, Time> recoveryPeriod,
-      long requestWindowNs, int numBuckets, RecoveryType recoveryType, StatsProvider statsProvider,
-      Random random, Clock clock) {
-    MorePreconditions.checkNotBlank(name);
-    Preconditions.checkArgument(seedSize > 0);
-    Preconditions.checkArgument(toleratedFailureRate >= 0 && toleratedFailureRate < 1.0);
-    Preconditions.checkNotNull(strategy);
-    Preconditions.checkArgument(recoveryPeriod == null || recoveryPeriod.getValue() > 0);
-    Preconditions.checkArgument(requestWindowNs > 0);
-    Preconditions.checkArgument(numBuckets > 0);
-    Preconditions.checkNotNull(recoveryType);
-    Preconditions.checkNotNull(statsProvider);
-    Preconditions.checkNotNull(random);
-    Preconditions.checkNotNull(clock);
-
-    this.name = name;
-    this.toleratedFailureRate = toleratedFailureRate;
-    this.deciderGroup = deciderGroup;
-    this.strategy = strategy;
-    this.recoveryPeriod = recoveryPeriod;
-    this.recoveryType = recoveryType;
-
-    this.random = random;
-    this.clock = clock;
-
-    this.backoffs = statsProvider.makeCounter(name + "_backoffs");
-    this.requests = new RequestWindow(requestWindowNs, numBuckets, seedSize);
-
-    this.stateMachine = new TimedStateMachine(name);
-  }
-
-  /**
-   * Checks whether the caller should back off and if not then returns immediately; otherwise the
-   * method blocks until it is safe for the caller to proceed without backing off further based on
-   * all data available at the time of this call.
-   *
-   * @return the amount of time in nanoseconds spent awaiting backoff
-   * @throws InterruptedException if the calling thread was interrupted while backing off
-   */
-  public long awaitBackoff() throws InterruptedException {
-    if (shouldBackOff()) {
-      long backoffTimeMs = stateMachine.getStateRemainingMs();
-
-      if (backoffTimeMs > 0) {
-        // Wait without holding any external locks.
-        Object waitCondition = new Object();
-        synchronized (waitCondition) {
-          waitCondition.wait(backoffTimeMs);
-        }
-        return backoffTimeMs;
-      }
-    }
-    return 0;
-  }
-
-  /**
-   * Checks whether this decider instructs the caller that it should back off from the associated
-   * backend.  This is determined based on the response history for the backend as well as the
-   * backoff state of the decider group (if configured).
-   *
-   * @return {@code true} if the decider is in backoff mode, otherwise {@code false}.
-   */
-  @SuppressWarnings("fallthrough")
-  public synchronized boolean shouldBackOff() {
-
-    boolean preventRequest;
-    switch (stateMachine.getState()) {
-      case NORMAL:
-        preventRequest = false;
-        break;
-
-      case BACKOFF:
-        if (deciderGroup != null && allOthersBackingOff()) {
-          LOG.info("Backends in group with " + name + " down, forcing back up.");
-          stateMachine.transitionUnbounded(State.FORCED_NORMAL);
-          return false;
-        } else if (stateMachine.isStateExpired()) {
-          long recoveryPeriodNs = recoveryPeriod == null ? stateMachine.getStateDurationNs()
-              : recoveryPeriod.as(Time.NANOSECONDS);
-
-          // The silent period has expired, move to recovery state (and drop to its case block).
-          stateMachine.transition(State.RECOVERY, recoveryPeriodNs);
-          LOG.info(String.format("%s recovering for %s ms", name,
-              Amount.of(recoveryPeriodNs, Time.NANOSECONDS).as(Time.MILLISECONDS)));
-        } else {
-          preventRequest = true;
-          break;
-        }
-
-      case RECOVERY:
-        if (deciderGroup != null && allOthersBackingOff()) {
-          return false;
-        } else if (stateMachine.isStateExpired()) {
-          // We have reached the end of the recovery period, return to normal.
-          stateMachine.transitionUnbounded(State.NORMAL);
-          previousBackoffPeriodNs = 0;
-          preventRequest = false;
-        } else {
-          switch (recoveryType) {
-            case RANDOM_LINEAR:
-              // In the recovery period, allow request rate to return linearly to the full load.
-              preventRequest = random.nextDouble() > stateMachine.getStateFractionComplete();
-              break;
-            case FULL_CAPACITY:
-              preventRequest = false;
-              break;
-            default:
-              throw new IllegalStateException("Unhandled recovery type " + recoveryType);
-          }
-        }
-
-        break;
-
-      case FORCED_NORMAL:
-        if (!allOthersBackingOff()) {
-          // We were in forced normal state, but at least one other backend is up, try recovering.
-          stateMachine.transition(State.RECOVERY, stateMachine.getStateDurationNs());
-          preventRequest = false;
-        } else {
-          preventRequest = true;
-        }
-
-        break;
-
-      default:
-        LOG.severe("Unrecognized state: " + stateMachine.getState());
-        preventRequest = false;
-    }
-
-    if (preventRequest) {
-      backoffs.incrementAndGet();
-    }
-    return preventRequest;
-  }
-
-  private boolean allOthersBackingOff() {
-    // Search for another decider that is not backing off.
-    for (BackoffDecider decider : deciderGroup) {
-      State deciderState = decider.stateMachine.getState();
-      boolean inBackoffState = deciderState == State.BACKOFF || deciderState == State.FORCED_NORMAL;
-      if ((decider != this) && !inBackoffState) {
-        return false;
-      }
-    }
-
-    return true;
-  }
-
-  /**
-   * Records a failed request to the backend.
-   */
-  public void addFailure() {
-    addResult(false);
-  }
-
-  /**
-   * Records a successful request to the backend.
-   */
-  public void addSuccess() {
-    addResult(true);
-  }
-
-  /**
-   * Transitions the state to BACKOFF and logs a message appropriately if it is doing so because of high fail rate
-   * or by force.
-   *
-   * @param failRate rate of request failures on this host.
-   * @param force if {@code true}, forces the transition to BACKOFF. Typically used in cases when the host
-   * was not found to be alive by LiveHostChecker.
-   */
-  public synchronized void transitionToBackOff(double failRate, boolean force) {
-    long prevBackoffMs = Amount.of(previousBackoffPeriodNs, Time.NANOSECONDS)
-        .as(Time.MILLISECONDS);
-
-    long backoffPeriodNs = Amount.of(strategy.calculateBackoffMs(prevBackoffMs), Time.MILLISECONDS)
-        .as(Time.NANOSECONDS);
-    if (!force) {
-      LOG.info(String.format("%s failure rate at %g, backing off for %s ms", name,failRate,
-          Amount.of(backoffPeriodNs, Time.NANOSECONDS).as(Time.MILLISECONDS)));
-    } else {
-      LOG.info(String.format("%s forced to back off for %s ms", name,
-          Amount.of(backoffPeriodNs, Time.NANOSECONDS).as(Time.MILLISECONDS)));
-    }
-    stateMachine.transition(State.BACKOFF, backoffPeriodNs);
-    previousBackoffPeriodNs = backoffPeriodNs;
-  }
-
-  @SuppressWarnings("fallthrough")
-  private synchronized void addResult(boolean success) {
-    // Disallow statistics updating if we are in backoff state.
-    if (stateMachine.getState() == State.BACKOFF) {
-      return;
-    }
-
-    requests.addResult(success);
-    double failRate = requests.getFailureRate();
-    boolean highFailRate = requests.isSeeded() && (failRate > toleratedFailureRate);
-
-    switch (stateMachine.getState()) {
-      case NORMAL:
-        if (!highFailRate) {
-          // No-op.
-          break;
-        } else {
-          // Artificially move into recovery state (by falling through) with a zero-duration
-          // time window, to trigger the initial backoff period.
-          stateMachine.setStateDurationNs(0);
-        }
-
-      case RECOVERY:
-        if (highFailRate) {
-          // We were trying to recover, and the failure rate is still too high.  Go back to
-          // backoff state for a longer duration.
-          requests.reset();
-
-          // transition the state machine to BACKOFF state, due to high fail rate.
-          transitionToBackOff(failRate, false);
-        } else {
-          // Do nothing.  We only exit the recovery state by expiration.
-        }
-        break;
-
-      case FORCED_NORMAL:
-        if (!highFailRate) {
-          stateMachine.transition(State.RECOVERY, stateMachine.getStateDurationNs());
-        }
-        break;
-
-      case BACKOFF:
-        throw new IllegalStateException("Backoff state may only be exited by expiration.");
-    }
-  }
-
-  /**
-   * Creates a builder object.
-   *
-   * @param name Name for the backoff decider to build.
-   * @return A builder.
-   */
-  public static Builder builder(String name) {
-    return new Builder(name);
-  }
-
-  /**
-   * Builder class to configure a BackoffDecider.
-   *
-   * The builder allows for customization of many different parameters to the BackoffDecider, while
-   * defining defaults wherever possible.  The following defaults are used:
-   *
-   * <ul>
-   * <li> seed size - The number of requests to accumulate before a backoff will be considered.
-   * 100
-   *
-   * <li> tolerated failure rate - Maximum failure rate before backing off.
-   * 0.5
-   *
-   * <li> decider group - Group this decider is a part of, to prevent complete backend failure.
-   * null (disabled)
-   *
-   * <li> strategy - Used to calculate subsequent backoff durations.
-   * TruncatedBinaryBackoff, initial 100 ms, max 10s
-   *
-   * <li> recovery period - Fixed recovery period while ramping traffic back to full capacity..
-   * null (use last backoff period)
-   *
-   * <li> request window - Duration of the sliding window of requests to track statistics for.
-   * 10 seconds
-   *
-   * <li> num buckets - The number of time slices within the request window, for stat expiration.
-   *               The sliding request window advances in intervals of request window / num buckets.
-   * 100
-   *
-   * <li> recovery type - Defines behavior during the recovery period, and how traffic is permitted.
-   * random linear
-   *
-   * <li> stat provider - The stats provider to export statistics to.
-   * Stats.STATS_PROVIDER
-   * </ul>
-   *
-   */
-  public static class Builder {
-    private String name;
-    private int seedSize = 100;
-    private double toleratedFailureRate = 0.5;
-    private Set<BackoffDecider> deciderGroup = null;
-    private BackoffStrategy strategy = new TruncatedBinaryBackoff(
-        Amount.of(100L, Time.MILLISECONDS), Amount.of(10L, Time.SECONDS));
-    private Amount<Long, Time> recoveryPeriod = null;
-    private long requestWindowNs = Amount.of(10L, Time.SECONDS).as(Time.NANOSECONDS);
-    private int numBuckets = 100;
-    private RecoveryType recoveryType = RecoveryType.RANDOM_LINEAR;
-    private StatsProvider statsProvider = Stats.STATS_PROVIDER;
-    private Random random = Random.Util.newDefaultRandom();
-    private Clock clock = Clock.SYSTEM_CLOCK;
-
-    Builder(String name) {
-      this.name = name;
-    }
-
-    /**
-     * Sets the number of requests that must be accumulated before the error rate will be
-     * calculated.  This improves the genesis problem where the first few requests are errors,
-     * causing flapping in and out of backoff state.
-     *
-     * @param seedSize Request seed size.
-     * @return A reference to the builder.
-     */
-    public Builder withSeedSize(int seedSize) {
-      this.seedSize = seedSize;
-      return this;
-    }
-
-    /**
-     * Sets the tolerated failure rate for the decider.  If the rate is exceeded for the time
-     * window, the decider begins backing off.
-     *
-     * @param toleratedRate The tolerated failure rate (between 0.0 and 1.0, exclusive).
-     * @return A reference to the builder.
-     */
-    public Builder withTolerateFailureRate(double toleratedRate) {
-      this.toleratedFailureRate = toleratedRate;
-      return this;
-    }
-
-    /**
-     * Makes the decider a part of a group.  When a decider is a part of a group, it will monitor
-     * the other deciders to ensure that all deciders do not back off at once.
-     *
-     * @param deciderGroup Group to make this decider a part of.  More deciders may be added to the
-     *     group after this call is made.
-     * @return A reference to the builder.
-     */
-    public Builder groupWith(Set<BackoffDecider> deciderGroup) {
-      this.deciderGroup = deciderGroup;
-      return this;
-    }
-
-    /**
-     * Overrides the default backoff strategy.
-     *
-     * @param strategy Backoff strategy to use.
-     * @return A reference to the builder.
-     */
-    public Builder withStrategy(BackoffStrategy strategy) {
-      this.strategy = strategy;
-      return this;
-    }
-
-    /**
-     * Overrides the default recovery period behavior.  By default, the recovery period is equal
-     * to the previous backoff period (which is equivalent to setting the recovery period to null
-     * here).  A non-null value here will assign a fixed recovery period.
-     *
-     * @param recoveryPeriod Fixed recovery period.
-     * @return A reference to the builder.
-     */
-    public Builder withRecoveryPeriod(@Nullable Amount<Long, Time> recoveryPeriod) {
-      this.recoveryPeriod = recoveryPeriod;
-      return this;
-    }
-
-    /**
-     * Sets the time window over which to analyze failures.  Beyond the time window, request history
-     * is discarded (and ignored).
-     *
-     * @param requestWindow The analysis time window.
-     * @return A reference to the builder.
-     */
-    public Builder withRequestWindow(Amount<Long, Time> requestWindow) {
-      this.requestWindowNs = requestWindow.as(Time.NANOSECONDS);
-      return this;
-    }
-
-    /**
-     * Sets the number of time slices that the decider will use to partition aggregate statistics.
-     *
-     * @param numBuckets Bucket count.
-     * @return A reference to the builder.
-     */
-    public Builder withBucketCount(int numBuckets) {
-      this.numBuckets = numBuckets;
-      return this;
-    }
-
-    /**
-     * Sets the recovery mechanism to use when in the recovery period.
-     *
-     * @param recoveryType The recovery mechanism to use.
-     * @return A reference to the builder.
-     */
-    public Builder withRecoveryType(RecoveryType recoveryType) {
-      this.recoveryType = recoveryType;
-      return this;
-    }
-
-    /**
-     * Sets the stats provider that statistics should be exported to.
-     *
-     * @param statsProvider Stats provider to use.
-     * @return A reference to the builder.
-     */
-    public Builder withStatsProvider(StatsProvider statsProvider) {
-      this.statsProvider = statsProvider;
-      return this;
-    }
-
-    @VisibleForTesting public Builder withRandom(Random random) {
-      this.random = random;
-      return this;
-    }
-
-    @VisibleForTesting public Builder withClock(Clock clock) {
-      this.clock = clock;
-      return this;
-    }
-
-    /**
-     * Gets a reference to the built decider object.
-     * @return A decider object.
-     */
-    public BackoffDecider build() {
-      BackoffDecider decider =  new BackoffDecider(name, seedSize, toleratedFailureRate,
-          deciderGroup, strategy, recoveryPeriod, requestWindowNs, numBuckets, recoveryType,
-          statsProvider, random, clock);
-      if (deciderGroup != null) deciderGroup.add(decider);
-      return decider;
-    }
-  }
-
-  private class TimeSlice {
-    int requestCount = 0;
-    int failureCount = 0;
-    final long bucketStartNs;
-
-    public TimeSlice() {
-      bucketStartNs = clock.nowNanos();
-    }
-  }
-
-  class RequestWindow {
-    // These store the sum of the respective fields contained within buckets.  Doing so removes the
-    // need to accumulate the counts within the buckets every time the backoff state is
-    // recalculated.
-    @VisibleForTesting long totalRequests = 0;
-    @VisibleForTesting long totalFailures = 0;
-
-    private final long durationNs;
-    private final long bucketLengthNs;
-    private final int seedSize;
-
-    // Stores aggregate request/failure counts for time slices.
-    private final Deque<TimeSlice> buckets = Lists.newLinkedList();
-
-    RequestWindow(long durationNs, int bucketCount, int seedSize) {
-      this.durationNs = durationNs;
-      this.bucketLengthNs = durationNs / bucketCount;
-      buckets.addFirst(new TimeSlice());
-      this.seedSize = seedSize;
-    }
-
-    void reset() {
-      totalRequests = 0;
-      totalFailures = 0;
-      buckets.clear();
-      buckets.addFirst(new TimeSlice());
-    }
-
-    void addResult(boolean success) {
-      maybeShuffleBuckets();
-      buckets.peekFirst().requestCount++;
-      totalRequests++;
-
-      if (!success) {
-        buckets.peekFirst().failureCount++;
-        totalFailures++;
-      }
-    }
-
-    void maybeShuffleBuckets() {
-      // Check if the first bucket is still relevant.
-      if (clock.nowNanos() - buckets.peekFirst().bucketStartNs >= bucketLengthNs) {
-
-        // Remove old buckets.
-        while (!buckets.isEmpty()
-               && buckets.peekLast().bucketStartNs < clock.nowNanos() - durationNs) {
-          TimeSlice removed = buckets.removeLast();
-          totalRequests -= removed.requestCount;
-          totalFailures -= removed.failureCount;
-        }
-
-        buckets.addFirst(new TimeSlice());
-      }
-    }
-
-    boolean isSeeded() {
-      return totalRequests >= seedSize;
-    }
-
-    double getFailureRate() {
-      return totalRequests == 0 ? 0 : ((double) totalFailures) / totalRequests;
-    }
-  }
-
-  private static enum State {
-    NORMAL,        // All requests are being permitted.
-    BACKOFF,       // Quiet period while waiting for backend to recover/improve.
-    RECOVERY,      // Ramping period where an ascending fraction of requests is being permitted.
-    FORCED_NORMAL  // All other backends in the group are backing off, so this one is forced normal.
-  }
-  private class TimedStateMachine {
-    final StateMachine<State> stateMachine;
-
-    private long stateEndNs;
-    private long stateDurationNs;
-
-    TimedStateMachine(String name) {
-      stateMachine = StateMachine.<State>builder(name + "_backoff_state_machine")
-          .addState(State.NORMAL, State.BACKOFF, State.FORCED_NORMAL)
-          .addState(State.BACKOFF, State.RECOVERY, State.FORCED_NORMAL)
-          .addState(State.RECOVERY, State.NORMAL, State.BACKOFF, State.FORCED_NORMAL)
-          .addState(State.FORCED_NORMAL, State.RECOVERY)
-          .initialState(State.NORMAL)
-          .build();
-    }
-
-    State getState() {
-      return stateMachine.getState();
-    }
-
-    void transitionUnbounded(State state) {
-      stateMachine.transition(state);
-    }
-
-    void transition(State state, long durationNs) {
-      transitionUnbounded(state);
-      this.stateEndNs = clock.nowNanos() + durationNs;
-      this.stateDurationNs = durationNs;
-    }
-
-    long getStateDurationNs() {
-      return stateDurationNs;
-    }
-
-    long getStateDurationMs() {
-      return Amount.of(stateDurationNs, Time.NANOSECONDS).as(Time.MILLISECONDS);
-    }
-
-    void setStateDurationNs(long stateDurationNs) {
-      this.stateDurationNs = stateDurationNs;
-    }
-
-    long getStateRemainingNs() {
-      return stateEndNs - clock.nowNanos();
-    }
-
-    long getStateRemainingMs() {
-      return Amount.of(getStateRemainingNs(), Time.NANOSECONDS).as(Time.MILLISECONDS);
-    }
-
-    double getStateFractionComplete() {
-      return 1.0 - ((double) getStateRemainingNs()) / stateDurationNs;
-    }
-
-    boolean isStateExpired() {
-      return clock.nowNanos() > stateEndNs;
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/BackoffHelper.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/BackoffHelper.java b/commons/src/main/java/org/apache/aurora/common/util/BackoffHelper.java
index 8f31ea7..e789f80 100644
--- a/commons/src/main/java/org/apache/aurora/common/util/BackoffHelper.java
+++ b/commons/src/main/java/org/apache/aurora/common/util/BackoffHelper.java
@@ -13,14 +13,15 @@
  */
 package org.apache.aurora.common.util;
 
+import java.util.logging.Logger;
+
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.Preconditions;
+
 import org.apache.aurora.common.base.ExceptionalSupplier;
 import org.apache.aurora.common.quantity.Amount;
 import org.apache.aurora.common.quantity.Time;
 
-import java.util.logging.Logger;
-
 /**
  * A utility for dealing with backoffs of retryable actions.
  *
@@ -57,25 +58,6 @@ public class BackoffHelper {
   }
 
   /**
-   * Creates a new BackoffHelper that uses truncated binary backoff starting at the given
-   * {@code initialBackoff} and maxing out at the given {@code maxBackoff}. This will either:
-   * <ul>
-   *   <li>{@code stopAtMax == true} : throw {@code BackoffExpiredException} when maxBackoff is
-   *   reached</li>
-   *   <li>{@code stopAtMax == false} : continue backing off with maxBackoff</li>
-   * </ul>
-   *
-   * @param initialBackoff the initial amount of time to back off
-   * @param maxBackoff the maximum amount of time to back off
-   * @param stopAtMax if true, this will throw {@code BackoffStoppedException} when the max backoff is
-   * reached
-   */
-  public BackoffHelper(Amount<Long, Time> initialBackoff, Amount<Long, Time> maxBackoff,
-      boolean stopAtMax) {
-    this(new TruncatedBinaryBackoff(initialBackoff, maxBackoff, stopAtMax));
-  }
-
-  /**
    * Creates a BackoffHelper that uses the given {@code backoffStrategy} to calculate backoffs
    * between retries.
    *

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/CommandExecutor.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/CommandExecutor.java b/commons/src/main/java/org/apache/aurora/common/util/CommandExecutor.java
deleted file mode 100644
index e591721..0000000
--- a/commons/src/main/java/org/apache/aurora/common/util/CommandExecutor.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.util;
-
-import org.apache.aurora.common.base.ExceptionalCommand;
-import org.apache.aurora.common.quantity.Amount;
-import org.apache.aurora.common.quantity.Time;
-
-/**
- * Asynchronous executor of enqueued tasks in a rate limited manner.
- *
- * @author Srinivasan Rajagopal
- */
-public interface CommandExecutor {
-
-  /**
-   * Enqueue a task to be executed with retry semantics defined.
-   *
-   * @param name Human readable name for this task.
-   * @param task task to execute.
-   * @param exceptionClass Concrete exception type.
-   * @param maxTries num of tries in case of failure.
-   * @param retryDelay interval between retries in case of failure.
-   */
-  <E extends Exception> void execute(
-      String name,
-      ExceptionalCommand<E> task,
-      Class<E> exceptionClass,
-      int maxTries,
-      Amount<Long, Time> retryDelay);
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/Random.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/Random.java b/commons/src/main/java/org/apache/aurora/common/util/Random.java
index a1f1496..90d111e 100644
--- a/commons/src/main/java/org/apache/aurora/common/util/Random.java
+++ b/commons/src/main/java/org/apache/aurora/common/util/Random.java
@@ -25,17 +25,17 @@ public interface Random {
   /**
    * @see java.util.Random#nextDouble()
    */
-  public double nextDouble();
+  double nextDouble();
 
   /**
    * @see java.util.Random#nextInt(int)
    */
-  public int nextInt(int n);
+  int nextInt(int n);
 
   /**
    * A Random that wraps a java.util.Random.
    */
-  static class SystemRandom implements Random {
+  class SystemRandom implements Random {
     private final java.util.Random rand;
 
     public SystemRandom(java.util.Random rand) {
@@ -54,7 +54,7 @@ public interface Random {
   }
 
   // Utility class.
-  public static class Util {
+  class Util {
     private Util() {}
 
     /**
@@ -64,15 +64,5 @@ public interface Random {
     public static Random newDefaultRandom() {
       return new SystemRandom(new java.util.Random());
     }
-
-    /**
-     * Adapts a java.util.Random into a Random.
-     *
-     * @param rand The java.util.Random to adapt.
-     * @return A new Random.
-     */
-    public static Random fromSystemRandom(java.util.Random rand) {
-      return new SystemRandom(rand);
-    }
   }
 }

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/Stat.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/Stat.java b/commons/src/main/java/org/apache/aurora/common/util/Stat.java
deleted file mode 100644
index 2fec9d9..0000000
--- a/commons/src/main/java/org/apache/aurora/common/util/Stat.java
+++ /dev/null
@@ -1,351 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.util;
-
-//***************************************************************
-//
-
-import java.io.DataInput;
-import java.io.DataInputStream;
-import java.io.DataOutput;
-import java.io.DataOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.Serializable;
-import java.text.NumberFormat;
-
-/**
- * This class is designed to provide basic statistics collection.
- * For each instance of this object statistics and be added to it
- * then the sum, mean, std dev, min and max can be gathered at the
- * end. To reuse this object, a clear method can be called to reset
- * the statistics.
- */
-public class Stat implements Serializable {
-
-  /**
-   * Add a number to the statistics collector.
-   * doubles are used for all collections.
-   *
-   * @param x number added to the statistics.
-   */
-  public void addNumber(int x) {
-    addNumber((double) x);
-  }
-
-  /**
-   * Add a number to the statistics collector.
-   * doubles are used for all collections.
-   *
-   * @param x number added to the statistics.
-   */
-  public void addNumber(float x) {
-    addNumber((double) x);
-  }
-
-  /**
-   * Add a number to the statistics collector.
-   * doubles are used for all collections.
-   *
-   * @param x number added to the statistics.
-   */
-  public synchronized void addNumber(double x) {
-    if (_max < x) {
-      _max = x;
-    }
-    if (_min > x) {
-      _min = x;
-    }
-
-    _sum += x;
-    _sumOfSq += (x * x);
-    _number++;
-
-    return;
-  }
-
-
-  /**
-   * Clear the statistics counters...
-   */
-  public void clear() {
-    _max = 0;
-    _min = Double.MAX_VALUE;
-    _number = 0;
-    _mean = 0;
-    _stdDev = 0;
-    _sum = 0;
-    _sumOfSq = 0;
-  }
-
-
-  /**
-   * Create a string representation of the
-   * statistics collected so far. NOTE this
-   * is formatted and may not suit all needs
-   * and thus the user should just call the
-   * needed methods to get mean, std dev, etc.
-   * and format the data as needed.
-   *
-   * @return String Java string formatted output of results.
-   */
-  public String toString() {
-    return toString(false);
-  }
-
-
-  /**
-   * Create a string representation of the
-   * statistics collected so far. The results
-   * are formatted in percentage format if
-   * passed in true, otherwise the results
-   * are the same as the toString call. NOTE this
-   * is formatted and may not suit all needs
-   * and thus the user should just call the
-   * needed methods to get mean, std dev, etc.
-   * and format the data as needed.
-   *
-   * @param percent Format as percentages if set to true.
-   * @return String Java string formatted output of results.
-   */
-  public String toString(boolean percent) {
-    calculate();
-    NumberFormat nf = NumberFormat.getInstance();
-    nf.setMaximumFractionDigits(4);
-
-    if (_number > 1) {
-      StringBuffer results = new StringBuffer();
-      if (percent) {
-        results.append("Number:" + nf.format(_number * 100) + "%");
-      } else {
-        results.append("Number:" + nf.format(_number));
-      }
-
-      if (percent) {
-        results.append(" Max:" + nf.format(_max * 100) + "%");
-      } else {
-        results.append(" Max:" + nf.format(_max));
-      }
-
-      if (percent) {
-        results.append(" Min:" + nf.format(_min * 100) + "%");
-      } else {
-        results.append(" Min:" + nf.format(_min));
-      }
-
-      if (percent) {
-        results.append(" Mean:" + nf.format(_mean * 100) + "%");
-      } else {
-        results.append(" Mean:" + nf.format(_mean));
-      }
-
-      results.append(" Sum:" + nf.format(_sum));
-      results.append(" STD:" + nf.format(_stdDev));
-      return results.toString();
-    } else if (_number == 1) {
-      if (percent) {
-        return ("Number:" + nf.format(_sum * 100) + "%");
-      } else {
-        return ("Number:" + nf.format(_sum));
-      }
-    } else {
-      return ("Number: N/A");
-    }
-  }
-
-
-  private void calculate() {
-    getMean();
-    getStandardDev();
-  }
-
-
-  /**
-   * Get the max data element added to the statistics
-   * object so far.
-   *
-   * @return double - Maximum entry added so far.
-   */
-  public double getMax() {
-    return _max;
-  }
-
-
-  /**
-   * Get the min data element added to the statistics
-   * object so far.
-   *
-   * @return double - Min entry added so far.
-   */
-  public double getMin() {
-    return _min;
-  }
-
-
-  /**
-   * Get the number of data elements added to the statistics
-   * object so far.
-   *
-   * @return double - Number of entries added so far.
-   */
-  public long getNumberOfElements() {
-    return _number;
-  }
-
-
-  /**
-   * Get the average or mean of data elements added to the
-   * statistics object so far.
-   *
-   * @return double - Mean of entries added so far.
-   */
-  public double getMean() {
-    if (_number > 0) {
-      _mean = _sum / _number;
-    }
-    return _mean;
-  }
-
-  /**
-   * Get the ratio of the sum of elements divided by the number
-   * of elements added * 100
-   *
-   * @return double - Percent of entries added so far.
-   */
-  public double getPercent() {
-    if (_number > 0) {
-      _mean = _sum / _number;
-    }
-    _mean = _mean * 100;
-    return _mean;
-  }
-
-
-  /**
-   * Get the sum or mean of data elements added to the
-   * statistics object so far.
-   *
-   * @return double - Sum of entries added so far.
-   */
-  public double getSum() {
-    return _sum;
-  }
-
-
-  /**
-   * Get the sum of the squares of the data elements added
-   * to the statistics object so far.
-   *
-   * @return double - Sum of the squares of the entries added so far.
-   */
-  public double getSumOfSq() {
-    return _sumOfSq;
-  }
-
-
-  /**
-   * Get the standard deviation of the data elements added
-   * to the statistics object so far.
-   *
-   * @return double - Sum of the standard deviation of the entries added so far.
-   */
-  public double getStandardDev() {
-    if (_number > 1) {
-      _stdDev = Math.sqrt((_sumOfSq - ((_sum * _sum) / _number)) / (_number - 1));
-    }
-    return _stdDev;
-  }
-
-
-  /**
-   * Read the data from the InputStream so it can be used to populate
-   * the current objects state.
-   *
-   * @param in java.io.InputStream to write to.
-   * @throws IOException
-   */
-  public void readFromDataInput(InputStream in) throws IOException {
-    DataInput di = new DataInputStream(in);
-    readFromDataInput(di);
-    return;
-  }
-
-
-  /**
-   * Read the data from the DataInput so it can be used to populate
-   * the current objects state.
-   *
-   * @param in java.io.InputStream to write to.
-   * @throws IOException
-   */
-  public void readFromDataInput(DataInput in) throws IOException {
-    _max = in.readDouble();
-    _min = in.readDouble();
-    _number = in.readLong();
-    _mean = in.readDouble();
-    _stdDev = in.readDouble();
-    _sum = in.readDouble();
-    _sumOfSq = in.readDouble();
-    return;
-  }
-
-
-  /**
-   * Write the data to the output steam so it can be streamed to an
-   * other process, wire or storage median in a format that another Stats
-   * object can read.
-   *
-   * @param out java.io.OutputStream to write to.
-   * @throws IOException
-   */
-  public void writeToDataOutput(OutputStream out) throws IOException {
-    DataOutput dout = new DataOutputStream(out);
-    writeToDataOutput(dout);
-    return;
-
-  }
-
-
-  /**
-   * Write the data to the data output object so it can be written to an
-   * other process, wire or storage median in a format that another Stats
-   * object can read.
-   *
-   * @param out java.io.DataOutput to write to.
-   * @throws IOException
-   */
-  public void writeToDataOutput(DataOutput out) throws IOException {
-    out.writeDouble(_max);
-    out.writeDouble(_min);
-    out.writeLong(_number);
-    out.writeDouble(_mean);
-    out.writeDouble(_stdDev);
-    out.writeDouble(_sum);
-    out.writeDouble(_sumOfSq);
-    return;
-  }
-
-
-  // ************************************
-  private static final long serialVersionUID = 1L;
-  private double      _max = 0 ;
-  private double      _min = Double.MAX_VALUE ;
-  private long        _number = 0 ;
-  private double      _mean = 0 ;
-  private double      _stdDev = 0 ;
-  private double      _sum = 0 ;
-  private double      _sumOfSq ;
-}
-

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/StateMachine.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/StateMachine.java b/commons/src/main/java/org/apache/aurora/common/util/StateMachine.java
index 89046da..9fbfbb9 100644
--- a/commons/src/main/java/org/apache/aurora/common/util/StateMachine.java
+++ b/commons/src/main/java/org/apache/aurora/common/util/StateMachine.java
@@ -31,14 +31,13 @@ import com.google.common.collect.Iterables;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Multimap;
 
-import org.apache.commons.lang.builder.HashCodeBuilder;
-
 import org.apache.aurora.common.base.Closure;
 import org.apache.aurora.common.base.Closures;
-import org.apache.aurora.common.base.ExceptionalSupplier;
+import org.apache.commons.lang.builder.HashCodeBuilder;
 
 import static com.google.common.base.Preconditions.checkArgument;
 import static com.google.common.base.Preconditions.checkNotNull;
+
 import static org.apache.aurora.common.base.MorePreconditions.checkNotBlank;
 
 /**
@@ -132,34 +131,6 @@ public class StateMachine<T> {
   }
 
   /**
-   * Executes the supplied {@code work} if the state machine is in the {@code expectedState},
-   * postponing any concurrently requested {@link #transition(Object)} until after the execution of
-   * the work.
-   *
-   * @param expectedState The expected state the work should be performed in.
-   * @param work The work to perform in the {@code expectedState}.
-   * @param <O> The type returned by the unit of work.
-   * @param <E> The type of exception that may be thrown by the unit of work.
-   * @return The result of the unit of work if the current state is the {@code expectedState}.
-   * @throws IllegalStateException if the current state is not the {@code expectedState}.
-   * @throws E if the unit of work throws.
-   */
-  public <O, E extends Exception> O doInState(T expectedState, ExceptionalSupplier<O, E> work)
-      throws E {
-
-    checkNotNull(expectedState);
-    checkNotNull(work);
-
-    readLock.lock();
-    try {
-      checkState(expectedState);
-      return work.get();
-    } finally {
-      readLock.unlock();
-    }
-  }
-
-  /**
    * Transitions the machine into state {@code nextState}.
    *
    * @param nextState The state to move into.

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/util/Timer.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/util/Timer.java b/commons/src/main/java/org/apache/aurora/common/util/Timer.java
deleted file mode 100644
index 15602ac..0000000
--- a/commons/src/main/java/org/apache/aurora/common/util/Timer.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.aurora.common.util;
-
-import org.apache.aurora.common.base.Commands;
-import org.apache.aurora.common.base.ExceptionalCommand;
-import org.apache.aurora.common.base.ExceptionalSupplier;
-import org.apache.aurora.common.stats.SlidingStats;
-
-/**
- * A utility for timing blocks of code.
- *
- * <p>TODO(John Sirois): consider instead:
- * <T, E extends Exception> Pair<T, Long> doTimed(ExceptionalSupplier<T, E> timedWork) throws E
- * or a subinterface of Command/Closure/Supplier/Function that exposes a timing method as other ways
- * to factor in timing.
- *
- * @author John Sirois
- */
-public final class Timer {
-
-  /**
-   * Times the block of code encapsulated by {@code timedWork} recoding the result in {@code stat}.
-   *
-   * @param stat the stat to record the timing with
-   * @param timedWork the code to time
-   * @param <E> the type of exception {@code timedWork} may throw
-   * @throws E if {@code timedWork} throws
-   */
-  public static <E extends Exception> void doTimed(SlidingStats stat,
-      final ExceptionalCommand<E> timedWork) throws E {
-    doTimed(stat, Commands.asSupplier(timedWork));
-  }
-
-  /**
-   * Times the block of code encapsulated by {@code timedWork} recoding the result in {@code stat}.
-   *
-   * @param stat the stat to record the timing with
-   * @param timedWork the code to time
-   * @param <T> the type of result {@code timedWork} returns
-   * @param <E> the type of exception {@code timedWork} may throw
-   * @return the result of {@code timedWork} if it completes normally
-   * @throws E if {@code timedWork} throws
-   */
-  public static <T, E extends Exception> T doTimed(SlidingStats stat,
-      ExceptionalSupplier<T, E> timedWork) throws E {
-    StartWatch timer = new StartWatch();
-    timer.start();
-    try {
-      return timedWork.get();
-    } finally {
-      timer.stop();
-      stat.accumulate(timer.getTime());
-    }
-  }
-
-  private Timer() {
-    // utility
-  }
-}

http://git-wip-us.apache.org/repos/asf/aurora/blob/85f99544/commons/src/main/java/org/apache/aurora/common/zookeeper/CandidateImpl.java
----------------------------------------------------------------------
diff --git a/commons/src/main/java/org/apache/aurora/common/zookeeper/CandidateImpl.java b/commons/src/main/java/org/apache/aurora/common/zookeeper/CandidateImpl.java
index e16a64d..b10a403 100644
--- a/commons/src/main/java/org/apache/aurora/common/zookeeper/CandidateImpl.java
+++ b/commons/src/main/java/org/apache/aurora/common/zookeeper/CandidateImpl.java
@@ -68,44 +68,12 @@ public class CandidateImpl implements Candidate {
       };
 
   private final Group group;
-  private final Function<Iterable<String>, String> judge;
-  private final Supplier<byte[]> dataSupplier;
 
   /**
-   * Equivalent to {@link #CandidateImpl(Group, com.google.common.base.Function, Supplier)} using a
-   * judge that always picks the lowest numbered candidate ephemeral node - by proxy the oldest or
-   * 1st candidate and a default supplier that provides the ip address of this host according to
-   * {@link java.net.InetAddress#getLocalHost()} as the leader identifying data.
+   * Creates a candidate that can be used to offer leadership for the given {@code group}.
    */
   public CandidateImpl(Group group) {
-    this(group, MOST_RECENT_JUDGE, IP_ADDRESS_DATA_SUPPLIER);
-  }
-
-  /**
-   * Creates a candidate that can be used to offer leadership for the given {@code group} using
-   * a judge that always picks the lowest numbered candidate ephemeral node - by proxy the oldest
-   * or 1st. The dataSupplier should produce bytes that identify this process as leader. These bytes
-   * will become available to all participants via the {@link Candidate#getLeaderData()} method.
-   */
-  public CandidateImpl(Group group, Supplier<byte[]> dataSupplier) {
-    this(group, MOST_RECENT_JUDGE, dataSupplier);
-  }
-
-  /**
-   * Creates a candidate that can be used to offer leadership for the given {@code group}.  The
-   * {@code judge} is used to pick the current leader from all group members whenever the group
-   * membership changes. To form a well-behaved election group with one leader, all candidates
-   * should use the same judge. The dataSupplier should produce bytes that identify this process
-   * as leader. These bytes will become available to all participants via the
-   * {@link Candidate#getLeaderData()} method.
-   */
-  public CandidateImpl(
-      Group group,
-      Function<Iterable<String>, String> judge,
-      Supplier<byte[]> dataSupplier) {
     this.group = Preconditions.checkNotNull(group);
-    this.judge = Preconditions.checkNotNull(judge);
-    this.dataSupplier = Preconditions.checkNotNull(dataSupplier);
   }
 
   @Override
@@ -122,7 +90,7 @@ public class CandidateImpl implements Candidate {
   public Supplier<Boolean> offerLeadership(final Leader leader)
       throws JoinException, WatchException, InterruptedException {
 
-    final Membership membership = group.join(dataSupplier, new Command() {
+    final Membership membership = group.join(IP_ADDRESS_DATA_SUPPLIER, new Command() {
       @Override public void execute() {
         leader.onDefeated();
       }
@@ -176,6 +144,6 @@ public class CandidateImpl implements Candidate {
 
   @Nullable
   private String getLeader(Iterable<String> memberIds) {
-    return Iterables.isEmpty(memberIds) ? null : judge.apply(memberIds);
+    return Iterables.isEmpty(memberIds) ? null : MOST_RECENT_JUDGE.apply(memberIds);
   }
 }