You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hbase.apache.org by la...@apache.org on 2012/08/25 01:35:00 UTC
svn commit: r1377148 - in /hbase/branches/0.94/src:
main/java/org/apache/hadoop/hbase/client/
main/java/org/apache/hadoop/hbase/util/
test/java/org/apache/hadoop/hbase/client/
Author: larsh
Date: Fri Aug 24 23:34:59 2012
New Revision: 1377148
URL: http://svn.apache.org/viewvc?rev=1377148&view=rev
Log:
HBASE-6638
Modified:
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HTable.java
hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/Threads.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HTable.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HTable.java?rev=1377148&r1=1377147&r2=1377148&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HTable.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/client/HTable.java Fri Aug 24 23:34:59 2012
@@ -56,6 +56,7 @@ import org.apache.hadoop.hbase.ipc.ExecR
import org.apache.hadoop.hbase.util.Addressing;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.hbase.util.Pair;
+import org.apache.hadoop.hbase.util.Threads;
/**
* <p>Used to communicate with a single HBase table.
@@ -167,7 +168,7 @@ public class HTable implements HTableInt
this.pool = new ThreadPoolExecutor(1, maxThreads,
keepAliveTime, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
- new DaemonThreadFactory());
+ Threads.newDaemonThreadFactory("hbase-table"));
((ThreadPoolExecutor)this.pool).allowCoreThreadTimeOut(true);
this.finishSetup();
@@ -1101,35 +1102,6 @@ public class HTable implements HTableInt
return this.pool;
}
- static class DaemonThreadFactory implements ThreadFactory {
- static final AtomicInteger poolNumber = new AtomicInteger(1);
- final ThreadGroup group;
- final AtomicInteger threadNumber = new AtomicInteger(1);
- final String namePrefix;
-
- DaemonThreadFactory() {
- SecurityManager s = System.getSecurityManager();
- group = (s != null)? s.getThreadGroup() :
- Thread.currentThread().getThreadGroup();
- namePrefix = "hbase-table-pool" +
- poolNumber.getAndIncrement() +
- "-thread-";
- }
-
- public Thread newThread(Runnable r) {
- Thread t = new Thread(group, r,
- namePrefix + threadNumber.getAndIncrement(),
- 0);
- if (!t.isDaemon()) {
- t.setDaemon(true);
- }
- if (t.getPriority() != Thread.NORM_PRIORITY) {
- t.setPriority(Thread.NORM_PRIORITY);
- }
- return t;
- }
- }
-
/**
* Enable or disable region cache prefetch for the table. It will be
* applied for the given table's all HTable instances who share the same
Modified: hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/Threads.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/Threads.java?rev=1377148&r1=1377147&r2=1377148&view=diff
==============================================================================
--- hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/Threads.java (original)
+++ hbase/branches/0.94/src/main/java/org/apache/hadoop/hbase/util/Threads.java Fri Aug 24 23:34:59 2012
@@ -36,6 +36,7 @@ import org.apache.hadoop.util.Reflection
*/
public class Threads {
protected static final Log LOG = LogFactory.getLog(Threads.class);
+ private static final AtomicInteger poolNumber = new AtomicInteger(1);
/**
* Utility method that sets name, daemon status and starts passed thread.
@@ -180,21 +181,50 @@ public class Threads {
/**
- * Returns a {@link java.util.concurrent.ThreadFactory} that names each
- * created thread uniquely, with a common prefix.
- *
- * @param prefix The prefix of every created Thread's name
+ * Returns a {@link java.util.concurrent.ThreadFactory} that names each created thread uniquely,
+ * with a common prefix.
+ * @param prefix The prefix of every created Thread's name
* @return a {@link java.util.concurrent.ThreadFactory} that names threads
*/
public static ThreadFactory getNamedThreadFactory(final String prefix) {
+ SecurityManager s = System.getSecurityManager();
+ final ThreadGroup threadGroup = (s != null) ? s.getThreadGroup() : Thread.currentThread()
+ .getThreadGroup();
+
return new ThreadFactory() {
+ final AtomicInteger threadNumber = new AtomicInteger(1);
+ private final int poolNumber = Threads.poolNumber.getAndIncrement();
+ final ThreadGroup group = threadGroup;
+
+ @Override
+ public Thread newThread(Runnable r) {
+ final String name = prefix + "pool-" + poolNumber + "-thread-"
+ + threadNumber.getAndIncrement();
+ return new Thread(group, r, name);
+ }
+ };
+ }
- private final AtomicInteger threadNumber = new AtomicInteger(1);
-
+ /**
+ * Get a named {@link ThreadFactory} that just builds daemon threads
+ * @param prefix name prefix for all threads created from the factory
+ * @return a thread factory that creates named, daemon threads
+ */
+ public static ThreadFactory newDaemonThreadFactory(final String prefix) {
+ final ThreadFactory namedFactory = getNamedThreadFactory(prefix);
+ return new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
- return new Thread(r, prefix + threadNumber.getAndIncrement());
+ Thread t = namedFactory.newThread(r);
+ if (!t.isDaemon()) {
+ t.setDaemon(true);
+ }
+ if (t.getPriority() != Thread.NORM_PRIORITY) {
+ t.setPriority(Thread.NORM_PRIORITY);
+ }
+ return t;
}
+
};
}
}
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java?rev=1377148&r1=1377147&r2=1377148&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestFromClientSide.java Fri Aug 24 23:34:59 2012
@@ -63,7 +63,6 @@ import org.apache.hadoop.hbase.HTableDes
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.LargeTests;
import org.apache.hadoop.hbase.ServerName;
-import org.apache.hadoop.hbase.client.HTable.DaemonThreadFactory;
import org.apache.hadoop.hbase.client.metrics.ScanMetrics;
import org.apache.hadoop.hbase.coprocessor.CoprocessorHost;
import org.apache.hadoop.hbase.coprocessor.MultiRowMutationEndpoint;
@@ -86,6 +85,7 @@ import org.apache.hadoop.hbase.regionser
import org.apache.hadoop.hbase.regionserver.HRegionServer;
import org.apache.hadoop.hbase.regionserver.Store;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.Threads;
import org.apache.hadoop.io.DataInputBuffer;
import org.junit.After;
import org.junit.AfterClass;
@@ -3880,7 +3880,7 @@ public class TestFromClientSide {
ExecutorService pool = new ThreadPoolExecutor(1, Integer.MAX_VALUE,
60, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
- new DaemonThreadFactory());
+ Threads.newDaemonThreadFactory("test-from-client-table"));
((ThreadPoolExecutor)pool).allowCoreThreadTimeOut(true);
HTable t = new HTable(tableName, conn, pool);
HBaseAdmin ha = new HBaseAdmin(conn);
Modified: hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java
URL: http://svn.apache.org/viewvc/hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java?rev=1377148&r1=1377147&r2=1377148&view=diff
==============================================================================
--- hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java (original)
+++ hbase/branches/0.94/src/test/java/org/apache/hadoop/hbase/client/TestHCM.java Fri Aug 24 23:34:59 2012
@@ -35,8 +35,8 @@ import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.*;
-import org.apache.hadoop.hbase.client.HTable.DaemonThreadFactory;
import org.apache.hadoop.hbase.util.Bytes;
+import org.apache.hadoop.hbase.util.Threads;
import org.junit.AfterClass;
import org.junit.Assert;
import org.junit.BeforeClass;
@@ -148,7 +148,7 @@ public class TestHCM {
ThreadPoolExecutor pool = new ThreadPoolExecutor(1, 10,
60, TimeUnit.SECONDS,
new SynchronousQueue<Runnable>(),
- new DaemonThreadFactory());
+ Threads.newDaemonThreadFactory("test-hcm-table"));
HTable table = new HTable(TABLE_NAME1, conn, pool);
table.close();