You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by mm...@apache.org on 2017/09/25 15:46:13 UTC
[accumulo] branch 1.7 updated: ACCUMULO-4702 Removed Beta Guava
dependencies (#299)
This is an automated email from the ASF dual-hosted git repository.
mmiller pushed a commit to branch 1.7
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/1.7 by this push:
new 2962878 ACCUMULO-4702 Removed Beta Guava dependencies (#299)
2962878 is described below
commit 2962878f4297fd81d4790f0be2e92ecb3fd69e82
Author: Mike Miller <mm...@apache.org>
AuthorDate: Mon Sep 25 11:46:11 2017 -0400
ACCUMULO-4702 Removed Beta Guava dependencies (#299)
Code compiles against Guava 23 and passes beta library-detectors plugin
---
.../core/file/rfile/VisMetricsGatherer.java | 20 +++++++-----
.../java/org/apache/accumulo/fate/ZooStore.java | 2 +-
.../apache/accumulo/fate/util/UtilWaitThread.java | 36 ++++++++++++++++++++++
.../accumulo/minicluster/MiniAccumuloRunner.java | 7 +++--
.../main/java/org/apache/accumulo/proxy/Proxy.java | 4 +--
5 files changed, 55 insertions(+), 14 deletions(-)
diff --git a/core/src/main/java/org/apache/accumulo/core/file/rfile/VisMetricsGatherer.java b/core/src/main/java/org/apache/accumulo/core/file/rfile/VisMetricsGatherer.java
index 8c8c949..b648335 100644
--- a/core/src/main/java/org/apache/accumulo/core/file/rfile/VisMetricsGatherer.java
+++ b/core/src/main/java/org/apache/accumulo/core/file/rfile/VisMetricsGatherer.java
@@ -19,6 +19,8 @@ package org.apache.accumulo.core.file.rfile;
import static java.nio.charset.StandardCharsets.UTF_8;
import java.io.PrintStream;
+import java.security.MessageDigest;
+import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
@@ -30,9 +32,6 @@ import org.apache.accumulo.core.data.Key;
import org.apache.accumulo.core.data.Value;
import org.apache.hadoop.io.Text;
-import com.google.common.hash.HashCode;
-import com.google.common.hash.HashFunction;
-import com.google.common.hash.Hashing;
import com.google.common.util.concurrent.AtomicLongMap;
/**
@@ -127,11 +126,16 @@ public class VisMetricsGatherer implements MetricsGatherer<Map<String,ArrayList<
out.printf("%-27s", metricWord);
out.println("Number of keys" + "\t " + "Percent of keys" + "\t" + "Number of blocks" + "\t" + "Percent of blocks");
for (Entry<String,Long> entry : metric.get(lGName).asMap().entrySet()) {
- HashFunction hf = Hashing.md5();
- HashCode hc = hf.newHasher().putString(entry.getKey(), UTF_8).hash();
- if (hash)
- out.printf("%-20s", hc.toString().substring(0, 8));
- else
+ if (hash) {
+ String md5String = "";
+ try {
+ byte[] md5Bytes = MessageDigest.getInstance("MD5").digest(entry.getKey().getBytes(UTF_8));
+ md5String = new String(md5Bytes, UTF_8);
+ } catch (NoSuchAlgorithmException e) {
+ out.println("Failed to convert key to MD5 hash: " + e.getMessage());
+ }
+ out.printf("%-20s", md5String.substring(0, 8));
+ } else
out.printf("%-20s", entry.getKey());
out.print("\t\t" + entry.getValue() + "\t\t\t");
out.printf("%.2f", ((double) entry.getValue() / numEntries.get(i)) * 100);
diff --git a/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java b/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
index ac18e83..68f1efd 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/ZooStore.java
@@ -16,8 +16,8 @@
*/
package org.apache.accumulo.fate;
-import static com.google.common.util.concurrent.Uninterruptibles.sleepUninterruptibly;
import static java.nio.charset.StandardCharsets.UTF_8;
+import static org.apache.accumulo.fate.util.UtilWaitThread.sleepUninterruptibly;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
diff --git a/fate/src/main/java/org/apache/accumulo/fate/util/UtilWaitThread.java b/fate/src/main/java/org/apache/accumulo/fate/util/UtilWaitThread.java
index de31fb0..8a14ded 100644
--- a/fate/src/main/java/org/apache/accumulo/fate/util/UtilWaitThread.java
+++ b/fate/src/main/java/org/apache/accumulo/fate/util/UtilWaitThread.java
@@ -16,6 +16,10 @@
*/
package org.apache.accumulo.fate.util;
+import static java.util.concurrent.TimeUnit.NANOSECONDS;
+
+import java.util.concurrent.TimeUnit;
+
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -29,4 +33,36 @@ public class UtilWaitThread {
log.error("{}", e.getMessage(), e);
}
}
+
+ /**
+ * Copied from Guava release 23. The Uniterruptibles class was annotated as Beta by Google, therefore unstable to use. The following javadoc was copied from
+ * com.google.common.util.concurrent.Uninterruptibles:
+ *
+ * Utilities for treating interruptible operations as uninterruptible. In all cases, if a thread is interrupted during such a call, the call continues to
+ * block until the result is available or the timeout elapses, and only then re-interrupts the thread.
+ *
+ * @author Anthony Zana
+ * @since 10.0
+ */
+ public static void sleepUninterruptibly(long sleepFor, TimeUnit unit) {
+ boolean interrupted = false;
+ try {
+ long remainingNanos = unit.toNanos(sleepFor);
+ long end = System.nanoTime() + remainingNanos;
+ while (true) {
+ try {
+ // TimeUnit.sleep() treats negative timeouts just like zero.
+ NANOSECONDS.sleep(remainingNanos);
+ return;
+ } catch (InterruptedException e) {
+ interrupted = true;
+ remainingNanos = end - System.nanoTime();
+ }
+ }
+ } finally {
+ if (interrupted) {
+ Thread.currentThread().interrupt();
+ }
+ }
+ }
}
diff --git a/minicluster/src/main/java/org/apache/accumulo/minicluster/MiniAccumuloRunner.java b/minicluster/src/main/java/org/apache/accumulo/minicluster/MiniAccumuloRunner.java
index e88248c..9e34d2a 100644
--- a/minicluster/src/main/java/org/apache/accumulo/minicluster/MiniAccumuloRunner.java
+++ b/minicluster/src/main/java/org/apache/accumulo/minicluster/MiniAccumuloRunner.java
@@ -21,6 +21,7 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
+import java.nio.file.Files;
import java.util.Date;
import java.util.HashMap;
import java.util.Map;
@@ -35,7 +36,6 @@ import org.slf4j.LoggerFactory;
import com.beust.jcommander.IStringConverter;
import com.beust.jcommander.Parameter;
-import com.google.common.io.Files;
/**
* A runner for starting up a {@link MiniAccumuloCluster} from the command line using an optional configuration properties file. An example property file looks
@@ -152,8 +152,9 @@ public class MiniAccumuloRunner {
if (opts.prop.containsKey(DIRECTORY_PROP))
miniDir = new File(opts.prop.getProperty(DIRECTORY_PROP));
- else
- miniDir = Files.createTempDir();
+ else {
+ miniDir = Files.createTempDirectory(System.currentTimeMillis() + "").toFile();
+ }
String rootPass = opts.prop.containsKey(ROOT_PASSWORD_PROP) ? opts.prop.getProperty(ROOT_PASSWORD_PROP) : "secret";
diff --git a/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java b/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java
index e385f47..f3129ca 100644
--- a/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java
+++ b/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java
@@ -20,6 +20,7 @@ import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.file.Files;
import java.util.Properties;
import org.apache.accumulo.core.cli.Help;
@@ -53,7 +54,6 @@ import org.slf4j.LoggerFactory;
import com.beust.jcommander.IStringConverter;
import com.beust.jcommander.Parameter;
import com.google.auto.service.AutoService;
-import com.google.common.io.Files;
@AutoService(KeywordExecutable.class)
public class Proxy implements KeywordExecutable {
@@ -139,7 +139,7 @@ public class Proxy implements KeywordExecutable {
if (useMini) {
log.info("Creating mini cluster");
- final File folder = Files.createTempDir();
+ final File folder = Files.createTempDirectory(System.currentTimeMillis() + "").toFile();
final MiniAccumuloCluster accumulo = new MiniAccumuloCluster(folder, "secret");
accumulo.start();
opts.prop.setProperty("instance", accumulo.getConfig().getInstanceName());
--
To stop receiving notification emails like this one, please contact
['"commits@accumulo.apache.org" <co...@accumulo.apache.org>'].