Repository: phoenix Updated Branches: refs/heads/4.11-HBase-1.2 ee95ec617 -> 878419038
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/87841903 Tree: http://git-wip-us.apache.org/repos/asf/phoenix/tree/87841903 Diff: http://git-wip-us.apache.org/repos/asf/phoenix/diff/87841903 Branch: refs/heads/4.11-HBase-1.2 Commit: 878419038abcdda2bd78d666f4df32163fca07bf Parents: ee95ec6 Author: Samarth Jain <[email protected]> Authored: Fri Jul 14 14:29:08 2017 -0700 Committer: Samarth Jain <[email protected]> Committed: Fri Jul 14 14:29:08 2017 -0700 ---------------------------------------------------------------------- .../query/ConnectionQueryServicesImpl.java | 25 ++++++++++++++++---- 1 file changed, 20 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/phoenix/blob/87841903/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 a545b87..c749d70 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; @@ -309,6 +310,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); @@ -3356,18 +3362,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();
