You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@phoenix.apache.org by sa...@apache.org on 2015/07/15 21:18:19 UTC

phoenix git commit: PHOENIX-2118 Remove/modfiy usages of Guava StopWatch and deprecated ComparisonChain methods

Repository: phoenix
Updated Branches:
  refs/heads/4.x-HBase-0.98 481a802ee -> 53317b048


PHOENIX-2118 Remove/modfiy usages of Guava StopWatch and deprecated ComparisonChain methods


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

Branch: refs/heads/4.x-HBase-0.98
Commit: 53317b04824d88cd4a597e7f79c0de7107f1b105
Parents: 481a802
Author: Samarth <sa...@salesforce.com>
Authored: Wed Jul 15 12:18:07 2015 -0700
Committer: Samarth <sa...@salesforce.com>
Committed: Wed Jul 15 12:18:07 2015 -0700

----------------------------------------------------------------------
 .../phoenix/monitoring/MetricsStopWatch.java    |  8 +-
 .../query/ConnectionQueryServicesImpl.java      |  4 +-
 .../java/org/apache/phoenix/query/KeyRange.java | 13 +---
 .../apache/phoenix/util/PhoenixStopWatch.java   | 81 ++++++++++++++++++++
 4 files changed, 91 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/phoenix/blob/53317b04/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricsStopWatch.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricsStopWatch.java b/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricsStopWatch.java
index bffb9ad..ee260a8 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricsStopWatch.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/monitoring/MetricsStopWatch.java
@@ -17,23 +17,23 @@
  */
 package org.apache.phoenix.monitoring;
 
-import com.google.common.base.Stopwatch;
+import org.apache.phoenix.util.PhoenixStopWatch;
 
 /**
  * 
  * Stop watch that is cognizant of the fact whether or not metrics is enabled.
  * If metrics isn't enabled it doesn't do anything. Otherwise, it delegates
- * calls to a {@code Stopwatch}.
+ * calls to a {@code PhoenixStopWatch}.
  *
  */
 final class MetricsStopWatch {
     
     private final boolean isMetricsEnabled;
-    private final Stopwatch stopwatch;
+    private final PhoenixStopWatch stopwatch;
     
     MetricsStopWatch(boolean isMetricsEnabled) {
         this.isMetricsEnabled = isMetricsEnabled;
-        this.stopwatch = new Stopwatch();
+        this.stopwatch = new PhoenixStopWatch();
     }
     
     void start()  {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/53317b04/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
index cb405b1..0db66fe 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/ConnectionQueryServicesImpl.java
@@ -158,6 +158,7 @@ import org.apache.phoenix.util.JDBCUtil;
 import org.apache.phoenix.util.MetaDataUtil;
 import org.apache.phoenix.util.PhoenixContextExecutor;
 import org.apache.phoenix.util.PhoenixRuntime;
+import org.apache.phoenix.util.PhoenixStopWatch;
 import org.apache.phoenix.util.PropertiesUtil;
 import org.apache.phoenix.util.ReadOnlyProps;
 import org.apache.phoenix.util.SchemaUtil;
@@ -167,7 +168,6 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.base.Joiner;
-import com.google.common.base.Stopwatch;
 import com.google.common.base.Throwables;
 import com.google.common.cache.Cache;
 import com.google.common.cache.CacheBuilder;
@@ -757,7 +757,7 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement
                         QueryServicesOptions.DEFAULT_DELAY_FOR_SCHEMA_UPDATE_CHECK);
         boolean success = false;
         int numTries = 1;
-        Stopwatch watch = new Stopwatch();
+        PhoenixStopWatch watch = new PhoenixStopWatch();
         watch.start();
         do {
             try {

http://git-wip-us.apache.org/repos/asf/phoenix/blob/53317b04/phoenix-core/src/main/java/org/apache/phoenix/query/KeyRange.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/query/KeyRange.java b/phoenix-core/src/main/java/org/apache/phoenix/query/KeyRange.java
index bca55e8..0612046 100644
--- a/phoenix-core/src/main/java/org/apache/phoenix/query/KeyRange.java
+++ b/phoenix-core/src/main/java/org/apache/phoenix/query/KeyRange.java
@@ -80,23 +80,18 @@ public class KeyRange implements Writable {
         }
     };
     public static final Comparator<KeyRange> COMPARATOR = new Comparator<KeyRange>() {
-        @SuppressWarnings("deprecation")
         @Override public int compare(KeyRange o1, KeyRange o2) {
             return ComparisonChain.start()
-//                    .compareFalseFirst(o1.lowerUnbound(), o2.lowerUnbound())
-                    .compare(o2.lowerUnbound(), o1.lowerUnbound())
+                     .compareFalseFirst(o2.lowerUnbound(), o1.lowerUnbound())
                     .compare(o1.getLowerRange(), o2.getLowerRange(), Bytes.BYTES_COMPARATOR)
                     // we want o1 lower inclusive to come before o2 lower inclusive, but
                     // false comes before true, so we have to negate
-//                    .compareTrueFirst(o1.isLowerInclusive(), o2.isLowerInclusive())
-                    .compare(o2.isLowerInclusive(), o1.isLowerInclusive())
+                    .compareFalseFirst(o2.isLowerInclusive(), o1.isLowerInclusive())
                     // for the same lower bounding, we want a finite upper bound to
                     // be ordered before an infinite upper bound
-//                    .compareTrueFirst(o1.upperUnbound(), o2.upperUnbound())
-                    .compare(o1.upperUnbound(), o2.upperUnbound())
+                    .compareFalseFirst(o1.upperUnbound(), o2.upperUnbound())
                     .compare(o1.getUpperRange(), o2.getUpperRange(), Bytes.BYTES_COMPARATOR)
-//                    .compareFalseFirst(o1.isUpperInclusive(), o2.isUpperInclusive())
-                    .compare(o2.isUpperInclusive(), o1.isUpperInclusive())
+                    .compareFalseFirst(o2.isUpperInclusive(), o1.isUpperInclusive())
                     .result();
         }
     };

http://git-wip-us.apache.org/repos/asf/phoenix/blob/53317b04/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixStopWatch.java
----------------------------------------------------------------------
diff --git a/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixStopWatch.java b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixStopWatch.java
new file mode 100644
index 0000000..9001b0a
--- /dev/null
+++ b/phoenix-core/src/main/java/org/apache/phoenix/util/PhoenixStopWatch.java
@@ -0,0 +1,81 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you 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.phoenix.util;
+
+/**
+ * Bare-bones implementation of a stop watch that only measures time in milliseconds. If you want to be fancy then
+ * please use the guava Stopwatch. However, be warned that the Guava's Stopwatch is a beta class and is subject to
+ * incompatible changes and removal. So save the future upgrade pain and use this class instead.
+ */
+public class PhoenixStopWatch {
+    private boolean isRunning;
+    private long startTime;
+    private long elapsedTimeMs;
+
+    /**
+     * Creates a new stop watch without starting it.
+     */
+    public PhoenixStopWatch() {}
+
+    /**
+     * Starts the stopwatch.
+     * 
+     * @return this {@code PhoenixStopWatch} instance
+     * @throws IllegalStateException
+     *             if the stopwatch is already running.
+     */
+    public PhoenixStopWatch start() {
+        long currentTime = System.currentTimeMillis();
+        if (isRunning) { throw new IllegalStateException("Watch is already running"); }
+        startTime = currentTime;
+        isRunning = true;
+        return this;
+    }
+
+    /**
+     * Stops the stopwatch. Future calls to {@link #elapsedMillis()} will return the fixed duration that had elapsed up
+     * to this point.
+     * 
+     * @return this {@code PhoenixStopWatch} instance
+     * @throws IllegalStateException
+     *             if the stopwatch is already stopped.
+     */
+    public PhoenixStopWatch stop() {
+        long currentTime = System.currentTimeMillis();
+        if (!isRunning) { throw new IllegalStateException("Watch wasn't started"); }
+        elapsedTimeMs = currentTime - startTime;
+        startTime = 0;
+        isRunning = false;
+        return this;
+    }
+
+    /**
+     * Returns the current elapsed time shown on this stopwatch, expressed in milliseconds.
+     */
+    public long elapsedMillis() {
+        return elapsedTimeMs;
+    }
+
+    /**
+     * Returns {@code true} if {@link #start()} has been called on this stopwatch, and {@link #stop()} has not been
+     * called since the last call to {@code start()}.
+     */
+    public boolean isRunning() {
+        return isRunning;
+    }
+}