Repository: phoenix Updated Branches: refs/heads/4.x-HBase-1.2 60602f7b1 -> 6637d823d
PHOENIX-4024 Renew lease thread names should be unique across various ConnectionQueryServices instances Project: http://git-wip-us.apache.org/repos/asf/phoenix/repo Commit: http://git-wip-us.apache.org/repos/asf/phoenix/commit/6637d823 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/6637d823 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/6637d823 Branch: refs/heads/4.x-HBase-1.2 Commit: 6637d823d7476b55ca820fba549e41ae732ab064 Parents: 60602f7 Author: Samarth Jain <[email protected]> Authored: Fri Jul 14 14:24:57 2017 -0700 Committer: Samarth Jain <[email protected]> Committed: Fri Jul 14 14:24:57 2017 -0700 ---------------------------------------------------------------------- .../query/ConnectionQueryServicesImpl.java | 25 ++++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/6637d823/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 3e8eb07..1789318 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 @@ -93,6 +93,7 @@ import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeoutException; import java.util.concurrent.atomic.AtomicBoolean; +import java.util.concurrent.atomic.AtomicInteger; import javax.annotation.concurrent.GuardedBy; @@ -305,6 +306,11 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement // List of queues instead of a single queue to provide reduced contention via lock striping private final List<LinkedBlockingQueue<WeakReference<PhoenixConnection>>> connectionQueues; private ScheduledExecutorService renewLeaseExecutor; + /* + * We can have multiple instances of ConnectionQueryServices. By making the thread factory + * static, renew lease thread names will be unique across them. + */ + private static final ThreadFactory renewLeaseThreadFactory = new RenewLeaseThreadFactory(); private final boolean renewLeaseEnabled; private final boolean isAutoUpgradeEnabled; private final AtomicBoolean upgradeRequired = new AtomicBoolean(false); @@ -3326,18 +3332,27 @@ public class ConnectionQueryServicesImpl extends DelegateQueryServices implement private void scheduleRenewLeaseTasks() { if (isRenewingLeasesEnabled()) { - ThreadFactory threadFactory = - new ThreadFactoryBuilder().setDaemon(true) - .setNameFormat("PHOENIX-SCANNER-RENEW-LEASE" + "-thread-%s").build(); renewLeaseExecutor = - Executors.newScheduledThreadPool(renewLeasePoolSize, threadFactory); + Executors.newScheduledThreadPool(renewLeasePoolSize, renewLeaseThreadFactory); for (LinkedBlockingQueue<WeakReference<PhoenixConnection>> q : connectionQueues) { renewLeaseExecutor.scheduleAtFixedRate(new RenewLeaseTask(q), 0, - renewLeaseTaskFrequency, TimeUnit.MILLISECONDS); + renewLeaseTaskFrequency, TimeUnit.MILLISECONDS); } } } + private static class RenewLeaseThreadFactory implements ThreadFactory { + private static final AtomicInteger threadNumber = new AtomicInteger(1); + private static final String NAME_PREFIX = "PHOENIX-SCANNER-RENEW-LEASE-thread-"; + + @Override + public Thread newThread(Runnable r) { + Thread t = new Thread(r, NAME_PREFIX + threadNumber.getAndIncrement()); + t.setDaemon(true); + return t; + } + } + private static int getSaltBuckets(TableAlreadyExistsException e) { PTable table = e.getTable(); Integer sequenceSaltBuckets = table == null ? null : table.getBucketNum();
