From ac6312f72540d9e3b44df5e89cc71aa3e4847d7e Mon Sep 17 00:00:00 2001 From: Dave Marion Date: Tue, 30 Jun 2026 14:50:04 +0000 Subject: [PATCH] Reset Thread interrupted state after catching InterruptedException This is a follow-on change to #6438 that modifies the main branch using the same maven plugin that was applied to the 2.1 branch. --- .../ResourceGroupOperationsImpl.java | 1 + .../core/clientImpl/ScannerIterator.java | 3 +++ .../core/clientImpl/TableOperationsImpl.java | 2 ++ .../org/apache/accumulo/core/fate/Fate.java | 1 + .../accumulo/core/fate/FateExecutor.java | 1 + .../core/fate/zookeeper/FateLock.java | 9 +++++++ .../core/fate/zookeeper/MetaFateStore.java | 21 +++++++++++++++ .../accumulo/core/lock/ServiceLock.java | 3 +++ .../accumulo/core/lock/ServiceLockPaths.java | 3 +++ .../metadata/schema/RootTabletMetadata.java | 3 +++ .../accumulo/core/zookeeper/ZooCache.java | 9 +++++++ .../clientImpl/ClientTabletCacheImplTest.java | 1 + .../bulk/ConcurrentKeyExtentCacheTest.java | 2 +- .../accumulo/core/util/LockMapTest.java | 1 + .../mapred/AccumuloRecordReader.java | 1 + .../mapreduce/AccumuloRecordReader.java | 1 + .../MiniAccumuloClusterControl.java | 9 +++++++ .../MiniAccumuloClusterImpl.java | 9 +++++++ .../accumulo/server/init/Initialize.java | 7 +++++ .../server/init/ZooKeeperInitializer.java | 6 +++++ .../server/manager/FateLocations.java | 6 +++++ .../AsyncConditionalTabletsMutatorImpl.java | 6 +++++ .../ConditionalTabletsMutatorImpl.java | 1 + .../server/util/FindCompactionTmpFiles.java | 4 +++ .../apache/accumulo/server/util/ZooZap.java | 3 +++ .../server/util/adminCommand/Fate.java | 3 +++ .../util/upgrade/PreUpgradeValidation.java | 6 +++++ .../accumulo/manager/BalanceManager.java | 1 + .../org/apache/accumulo/manager/Manager.java | 14 ++++++++++ .../manager/ManagerClientServiceHandler.java | 3 +++ .../accumulo/manager/TabletGroupWatcher.java | 2 ++ .../coordinator/CompactionCoordinator.java | 2 ++ .../coordinator/commit/CommitCompaction.java | 1 + .../accumulo/manager/fate/FateManager.java | 5 ++++ .../accumulo/manager/fate/FateNotifier.java | 1 + .../accumulo/manager/fate/FateWorker.java | 3 +++ .../accumulo/manager/fate/FateWorkerEnv.java | 2 ++ .../tableOps/bulkVer2/CleanUpBulkImport.java | 1 + .../tableOps/bulkVer2/TabletRefresher.java | 4 +++ .../tableOps/compact/CompactionDriver.java | 3 +++ .../manager/upgrade/Upgrader11to12.java | 27 +++++++++++++++++++ .../monitor/next/InformationFetcher.java | 7 +++++ .../apache/accumulo/tserver/ScanServer.java | 1 + .../accumulo/tserver/TabletClientHandler.java | 3 +++ .../tserver/log/TabletServerLogger.java | 2 ++ .../accumulo/tserver/tablet/Tablet.java | 1 + .../accumulo/test/ScanConsistencyIT.java | 2 +- .../accumulo/test/WriteAfterCloseIT.java | 1 + .../ExternalCompactionTestUtils.java | 1 + .../apache/accumulo/test/fate/FateITBase.java | 1 + .../apache/accumulo/test/fate/TestLock.java | 3 +++ .../accumulo/test/fate/meta/MetaFateIT.java | 3 +++ .../test/functional/FateConcurrencyIT.java | 3 +++ .../test/manager/SuspendedTabletsIT.java | 3 +++ .../test/performance/NullTserver.java | 3 +++ .../ScanServerUpgrade11to12TestIT.java | 3 +++ .../apache/accumulo/test/util/SlowOps.java | 2 ++ 57 files changed, 228 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/ResourceGroupOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/ResourceGroupOperationsImpl.java index 0693a180006..c339aeafebb 100644 --- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ResourceGroupOperationsImpl.java +++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ResourceGroupOperationsImpl.java @@ -208,6 +208,7 @@ public Map modifyProperties(ResourceGroupId group, "Unable to modify resource group properties for because of concurrent modification"); retry.waitForNextAttempt(log, "Modify resource group properties"); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } finally { diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java index a869f175fc9..7c6c94c803f 100644 --- a/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java +++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/ScannerIterator.java @@ -189,6 +189,9 @@ private List getNextBatch() { throw new IllegalStateException(ee); } catch (AccumuloException | AccumuloSecurityException | TableNotFoundException | ScanTimedOutException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java index a11ac8cb17e..edd7aa98453 100644 --- a/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java +++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/TableOperationsImpl.java @@ -642,6 +642,7 @@ private SplitsToTablets mapSplitsToTablets(String tableName, TableId tableId, try { retry.waitForNextAttempt(log, "Find tablet in " + tableId + " containing " + split); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } tablet = tabLocator.findTablet(context, split, false, LocationNeed.NOT_REQUIRED); @@ -2007,6 +2008,7 @@ public Locations locate(String tableName, Collection ranges) String.format("locating tablets in table %s(%s) for %d ranges", tableName, tableId, rangeList.size())); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } diff --git a/core/src/main/java/org/apache/accumulo/core/fate/Fate.java b/core/src/main/java/org/apache/accumulo/core/fate/Fate.java index 8f016db6402..77e07076b51 100644 --- a/core/src/main/java/org/apache/accumulo/core/fate/Fate.java +++ b/core/src/main/java/org/apache/accumulo/core/fate/Fate.java @@ -426,6 +426,7 @@ public void shutdown(long timeout, TimeUnit timeUnit) { anyFateExecutorIsAlive(), deadResCleanerIsAlive()); } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } diff --git a/core/src/main/java/org/apache/accumulo/core/fate/FateExecutor.java b/core/src/main/java/org/apache/accumulo/core/fate/FateExecutor.java index de4bf9c9953..54e9e302ec9 100644 --- a/core/src/main/java/org/apache/accumulo/core/fate/FateExecutor.java +++ b/core/src/main/java/org/apache/accumulo/core/fate/FateExecutor.java @@ -348,6 +348,7 @@ public void run() { break; } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } diff --git a/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/FateLock.java b/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/FateLock.java index fcd02f3bd40..3ad927faba5 100644 --- a/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/FateLock.java +++ b/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/FateLock.java @@ -209,6 +209,9 @@ public long addEntry(FateLockEntry entry) { } } } catch (KeeperException | InterruptedException ex) { + if (ex instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(ex); } } @@ -233,6 +236,9 @@ public long addEntry(FateLockEntry entry) { } } } catch (KeeperException | InterruptedException ex) { + if (ex instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(ex); } return result; @@ -252,6 +258,9 @@ public void removeEntry(FateLockEntry data, long entry) { // the path had other lock nodes, no big deal } } catch (KeeperException | InterruptedException ex) { + if (ex instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(ex); } } diff --git a/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/MetaFateStore.java b/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/MetaFateStore.java index a7cf3236af7..6af880c0ed4 100644 --- a/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/MetaFateStore.java +++ b/core/src/main/java/org/apache/accumulo/core/fate/zookeeper/MetaFateStore.java @@ -132,6 +132,9 @@ public FateId create() { } catch (NodeExistsException nee) { // exist, so just try another random # } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -184,6 +187,9 @@ private Optional> createAndReserve(FateKey fateKey) { return Optional.empty(); } } catch (InterruptedException | KeeperException | AcceptableThriftTableOperationException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -461,6 +467,9 @@ private void _delete(Set requiredStatus) { "Deletion of ZK node fate data for {} was not able to be completed atomically... Retrying", fateId); } catch (InterruptedException | KeeperException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -562,6 +571,9 @@ private FateData getFateData(FateId fateId) { return new FateData<>(TStatus.UNKNOWN, null, null, createEmptyRepoDeque(), createEmptyTxInfo()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -573,6 +585,9 @@ private FateData getFateData(FateId fateId, Stat stat) { return new FateData<>(TStatus.UNKNOWN, null, null, createEmptyRepoDeque(), createEmptyTxInfo()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -616,6 +631,9 @@ public Optional getFateOperation() { } return stream.filter(s -> statuses.contains(s.getStatus())); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -667,6 +685,9 @@ private byte[] mutate(FateId fateId, UnaryOperator> fateDataOp) } }); } catch (InterruptedException | AcceptableThriftTableOperationException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLock.java b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLock.java index fb4219026a3..e6b0ba09a87 100644 --- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLock.java +++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLock.java @@ -156,6 +156,9 @@ public ServiceLock(ZooSession zookeeper, ServiceLockPath path, UUID uuid) { watchingBasePath = true; this.vmLockPrefix = new Prefix(ZLOCK_PREFIX + uuid.toString() + "#"); } catch (KeeperException | InterruptedException ex) { + if (ex instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } LOG.error("Error setting initial watch", ex); throw new IllegalStateException(ex); } diff --git a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java index 2bc97fb1f75..d197ef22569 100644 --- a/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java +++ b/core/src/main/java/org/apache/accumulo/core/lock/ServiceLockPaths.java @@ -497,6 +497,9 @@ private Set get(final String serverType, try { future.get(); } catch (InterruptedException | ExecutionException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/core/src/main/java/org/apache/accumulo/core/metadata/schema/RootTabletMetadata.java b/core/src/main/java/org/apache/accumulo/core/metadata/schema/RootTabletMetadata.java index 740bd330c0b..b5dfb172b54 100644 --- a/core/src/main/java/org/apache/accumulo/core/metadata/schema/RootTabletMetadata.java +++ b/core/src/main/java/org/apache/accumulo/core/metadata/schema/RootTabletMetadata.java @@ -73,6 +73,9 @@ public static RootTabletMetadata read(ClientContext ctx) { byte[] bytes = zooReader.getData(RootTable.ZROOT_TABLET); return new RootTabletMetadata(new String(bytes, UTF_8)); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooCache.java b/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooCache.java index bc7e12c854a..1d85c358dfd 100644 --- a/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooCache.java +++ b/core/src/main/java/org/apache/accumulo/core/zookeeper/ZooCache.java @@ -254,6 +254,9 @@ synchronized boolean setupWatchers() { zkClientTracker.get()); return true; } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException("Error setting up persistent recursive watcher", e); } @@ -316,6 +319,9 @@ public T retry() { log.warn("Zookeeper error, will retry", e); } } catch (InterruptedException | ZcInterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.info("Zookeeper error, will retry", e); } @@ -323,6 +329,7 @@ public T retry() { // do not hold lock while sleeping Thread.sleep(sleepTime); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); log.debug("Wait in retry() was interrupted.", e); } if (sleepTime < 10_000) { @@ -389,6 +396,7 @@ public List run() throws KeeperException, InterruptedException { } catch (KeeperException e) { throw new ZcException(e); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new ZcInterruptedException(e); } }); @@ -454,6 +462,7 @@ public byte[] run() throws KeeperException, InterruptedException { log.trace("{} zookeeper did not contain {}", cacheId, zPath); return ZcNode.NON_EXISTENT; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new ZcInterruptedException(e); } if (log.isTraceEnabled()) { diff --git a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java index 2f4d89ddadf..cf4bd0aa0aa 100644 --- a/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java +++ b/core/src/test/java/org/apache/accumulo/core/clientImpl/ClientTabletCacheImplTest.java @@ -1960,6 +1960,7 @@ public void testMultithreadedLookups() throws Exception { } } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } finally { activeLookups.decrementAndGet(); diff --git a/core/src/test/java/org/apache/accumulo/core/clientImpl/bulk/ConcurrentKeyExtentCacheTest.java b/core/src/test/java/org/apache/accumulo/core/clientImpl/bulk/ConcurrentKeyExtentCacheTest.java index 5a1ac90c691..d1bcd166526 100644 --- a/core/src/test/java/org/apache/accumulo/core/clientImpl/bulk/ConcurrentKeyExtentCacheTest.java +++ b/core/src/test/java/org/apache/accumulo/core/clientImpl/bulk/ConcurrentKeyExtentCacheTest.java @@ -81,7 +81,7 @@ protected Stream lookupExtents(Text row) { try { Thread.sleep(3); } catch (InterruptedException ex) { - // ignore exception + Thread.currentThread().interrupt(); } return extents.subList(index, extents.size()).stream().limit(73); } diff --git a/core/src/test/java/org/apache/accumulo/core/util/LockMapTest.java b/core/src/test/java/org/apache/accumulo/core/util/LockMapTest.java index d6782850983..769d1dd6294 100644 --- a/core/src/test/java/org/apache/accumulo/core/util/LockMapTest.java +++ b/core/src/test/java/org/apache/accumulo/core/util/LockMapTest.java @@ -128,6 +128,7 @@ public void testConcurrency() throws Exception { // If only one thread executes per key, then set1 and set2 should always be true return set1 && set2; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } }); diff --git a/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapred/AccumuloRecordReader.java b/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapred/AccumuloRecordReader.java index ab9797879e2..3999672708c 100644 --- a/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapred/AccumuloRecordReader.java +++ b/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapred/AccumuloRecordReader.java @@ -387,6 +387,7 @@ public static InputSplit[] getSplits(JobConf job, Class callingClass) throws String.format("locating tablets in table %s(%s) for %d ranges", tableName, tableId, ranges.size())); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } unhostedRanges.get("").clear(); diff --git a/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapreduce/AccumuloRecordReader.java b/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapreduce/AccumuloRecordReader.java index 19c03d808f5..27dd9e64f05 100644 --- a/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapreduce/AccumuloRecordReader.java +++ b/hadoop-mapreduce/src/main/java/org/apache/accumulo/hadoopImpl/mapreduce/AccumuloRecordReader.java @@ -420,6 +420,7 @@ public static List getSplits(JobContext context, Class callingCla String.format("locating tablets in table %s(%s) for %d ranges", tableName, tableId, ranges.size())); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } unhostedRanges.get("").clear(); diff --git a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterControl.java b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterControl.java index 55c4bad8652..deb8794740b 100644 --- a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterControl.java +++ b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterControl.java @@ -154,6 +154,9 @@ public synchronized void start(ServerType server, Map configOverr ResourceGroupPropKey.of(ResourceGroupId.of(rg)) .createZNode(cluster.getServerContext().getZooSession().asReaderWriter()); } catch (KeeperException | InterruptedException e1) { + if (e1 instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException( "Unable to create resource group configuration node for " + rg); } @@ -215,6 +218,9 @@ public synchronized void start(ServerType server, Map configOverr ResourceGroupPropKey.of(ResourceGroupId.of(rg)) .createZNode(cluster.getServerContext().getZooSession().asReaderWriter()); } catch (KeeperException | InterruptedException e1) { + if (e1 instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException( "Unable to create resource group configuration node for " + rg); } @@ -242,6 +248,9 @@ public synchronized void start(ServerType server, Map configOverr ResourceGroupPropKey.of(ResourceGroupId.of(rg)) .createZNode(cluster.getServerContext().getZooSession().asReaderWriter()); } catch (KeeperException | InterruptedException e1) { + if (e1 instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException( "Unable to create resource group configuration node for " + rg); } diff --git a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java index cd881eac576..c88be11aa31 100644 --- a/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java +++ b/minicluster/src/main/java/org/apache/accumulo/miniclusterImpl/MiniAccumuloClusterImpl.java @@ -726,6 +726,9 @@ public void failedToAcquireLock(Exception e) { zrw.putPersistentData(miniZDirPath, new byte[0], NodeExistsPolicy.SKIP); zrw.putPersistentData(miniZInstancePath, new byte[0], NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating path in ZooKeeper", e); } ServiceLockData sld = @@ -1000,6 +1003,9 @@ public synchronized void stop() throws IOException, InterruptedException { try { miniLock.unlock(); } catch (InterruptedException | KeeperException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.error("Error unlocking ServiceLock for MiniAccumuloClusterImpl", e); } miniLock = null; @@ -1151,6 +1157,9 @@ public void stopProcessesWithTimeout(final ServerType type, final List try { f.get(); } catch (ExecutionException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.warn("{} did not fully stop after {} seconds", type, unit.toSeconds(timeout), e); } return true; diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java index 0e3afaaffb3..6b8e6ef1705 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java +++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java @@ -462,6 +462,9 @@ private static boolean addResourceGroups(InitialConfiguration initConfig, ResourceGroupPropKey.of(rgid).createZNode(zrw); log.info("Added resource group {}", trimmed); } catch (IllegalStateException | KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.error("Error creating resource group: " + trimmed, e); return false; } @@ -489,6 +492,9 @@ private static boolean removeResourceGroups(InitialConfiguration initConfig, ResourceGroupPropKey.of(rgid).removeZNode(zs); log.info("Removed resource group {}", trimmed); } catch (IllegalStateException | KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.error("Error removing resource group: " + trimmed, e); return false; } @@ -625,6 +631,7 @@ public void execute(final String[] args) { log.error("Problem trying to get Volume configuration", e); success = false; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); log.error("Thread was interrupted when trying to get Volume configuration", e); success = false; } catch (KeeperException e) { diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java b/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java index 7bb8446d43e..14cead9fabb 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java +++ b/server/base/src/main/java/org/apache/accumulo/server/init/ZooKeeperInitializer.java @@ -221,6 +221,9 @@ public void initScanRefTableState(ServerContext context) { Namespace.ACCUMULO.id(), SystemTables.SCAN_REF.tableName(), TableState.ONLINE, ZooUtil.NodeExistsPolicy.FAIL); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } } @@ -231,6 +234,9 @@ public void initFateTableState(ServerContext context) { Namespace.ACCUMULO.id(), SystemTables.FATE.tableName(), TableState.ONLINE, ZooUtil.NodeExistsPolicy.FAIL); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } } diff --git a/server/base/src/main/java/org/apache/accumulo/server/manager/FateLocations.java b/server/base/src/main/java/org/apache/accumulo/server/manager/FateLocations.java index 4a71ff2e085..7319aa894ea 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/manager/FateLocations.java +++ b/server/base/src/main/java/org/apache/accumulo/server/manager/FateLocations.java @@ -90,6 +90,9 @@ public static void storeLocations(ZooReaderWriter zoo, zoo.putPersistentData(Constants.ZMANAGER_FATE_ASSIGNMENTS, serialize(assignments), nodeExistsPolicy); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Unable to set fate locations in zookeeper", e); } } @@ -100,6 +103,9 @@ public static void storeLocations(ServerContext context, context.getZooSession().setData(Constants.ZMANAGER_FATE_ASSIGNMENTS, serialize(assignments), -1); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Unable to set fate locations in zookeeper", e); } } diff --git a/server/base/src/main/java/org/apache/accumulo/server/metadata/AsyncConditionalTabletsMutatorImpl.java b/server/base/src/main/java/org/apache/accumulo/server/metadata/AsyncConditionalTabletsMutatorImpl.java index 8b76607d709..517e80db36f 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/metadata/AsyncConditionalTabletsMutatorImpl.java +++ b/server/base/src/main/java/org/apache/accumulo/server/metadata/AsyncConditionalTabletsMutatorImpl.java @@ -62,6 +62,9 @@ public Ample.OperationRequirements mutateTablet(KeyExtent extent) { try { backgroundProcessing.get().values().forEach(resultsConsumer); } catch (InterruptedException | ExecutionException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -89,6 +92,9 @@ public void close() { try { backgroundProcessing.get().values().forEach(resultsConsumer); } catch (InterruptedException | ExecutionException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java index 2329126e653..b4435f1fb1a 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java +++ b/server/base/src/main/java/org/apache/accumulo/server/metadata/ConditionalTabletsMutatorImpl.java @@ -193,6 +193,7 @@ private Iterator writeMutations(ConditionalWriter cond } retry.waitForNextAttempt(log, "handle conditional mutations with unknown status"); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java b/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java index 7064b12de37..b4ccf99425a 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/FindCompactionTmpFiles.java @@ -111,6 +111,9 @@ public static Set findTempFiles(ServerContext context, String tableId) try { future.get(); } catch (InterruptedException | ExecutionException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException("Error getting list of tmp files", e); } } @@ -236,6 +239,7 @@ public static DeleteStats deleteTempFiles(ServerContext context, Set files delSvc.awaitTermination(10, TimeUnit.MINUTES); return stats; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java index c592cee2771..7f7d65be314 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/ZooZap.java @@ -248,6 +248,9 @@ private static void removeSingletonLock(ZooReaderWriter zoo, ServiceLockPath pat try { zapDirectory(zoo, path, ops); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java index a3caf0f9757..f2c785c3b96 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/adminCommand/Fate.java @@ -302,6 +302,9 @@ private ServiceLock createAdminLock(ServerContext context) throws InterruptedExc zrw.putPersistentData(parentLockPath, new byte[0], ZooUtil.NodeExistsPolicy.SKIP); zrw.putPersistentData(lockPath, new byte[0], ZooUtil.NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating path in ZooKeeper", e); } diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/upgrade/PreUpgradeValidation.java b/server/base/src/main/java/org/apache/accumulo/server/util/upgrade/PreUpgradeValidation.java index a5594a67985..c1349786e2c 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/upgrade/PreUpgradeValidation.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/upgrade/PreUpgradeValidation.java @@ -76,6 +76,9 @@ private void validateACLs(ServerContext context) { aclErrorOccurred.set(true); } } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.error("Error getting ACL for path: {}", path, e); aclErrorOccurred.set(true); } @@ -87,6 +90,9 @@ private void validateACLs(ServerContext context) { + "for instructions on how to fix."); } } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException("Upgrade Failed! Error validating nodes under current root node.", e); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/BalanceManager.java b/server/manager/src/main/java/org/apache/accumulo/manager/BalanceManager.java index 5687f367774..9baae8d74dd 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/BalanceManager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/BalanceManager.java @@ -325,6 +325,7 @@ private void waitForBalance(Set levels) { try { balancedNotifier.wait(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); log.debug(e.toString(), e); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java index 0e253ff7eb9..c7c1a3cc051 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/Manager.java @@ -252,6 +252,7 @@ TServerStatus getTserverStatus(TServerStatus last) { try { tserverStatusNtfyObj.wait(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } @@ -290,6 +291,9 @@ public Map> getCompactionHints(DataLevel level) { try { allConfig = CompactionConfigStorage.getAllConfig(getContext(), tablePredicate); } catch (InterruptedException | KeeperException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } return Maps.transformValues(allConfig, CompactionConfig::getExecutionHints); @@ -957,6 +961,9 @@ public void run() { // manager processes to work on stuff. getAssistantManagerLock(); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Unable to get manager lock ", e); } @@ -1106,6 +1113,7 @@ boolean canSuspendTablets() { log.debug("Manager main thread is waiting for upgrade to complete"); Thread.sleep(1000); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException("Interrupted while waiting for upgrade to complete", e); } } @@ -1355,6 +1363,9 @@ private void startFateMaintenance() { ThreadPools.watchCriticalScheduledTask(getContext().getScheduledExecutor() .scheduleWithFixedDelay(userCleaner::ageOff, 10, 4 * 60, MINUTES)); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Exception setting up FaTE cleanup thread", e); } } @@ -1653,6 +1664,9 @@ public Set shutdownServers() { getContext().getZooSession().asReader().getChildren(Constants.ZSHUTTING_DOWN_TSERVERS); return children.stream().map(TServerInstance::new).collect(Collectors.toSet()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java index 9ed0badc5a1..0d374c804cb 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/ManagerClientServiceHandler.java @@ -480,6 +480,9 @@ public void createResourceGroupNode(TInfo tinfo, TCredentials c, String resource final ResourceGroupPropKey key = ResourceGroupPropKey.of(rgid); key.createZNode(context.getZooSession().asReaderWriter()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } Manager.log.error("Problem creating resource group config node in zookeeper", e); throw new TException(e.getMessage()); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java index c69bc2d0d5d..fb2eaa62a9f 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/TabletGroupWatcher.java @@ -344,6 +344,7 @@ public void run() { } } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } @@ -378,6 +379,7 @@ synchronized void waitForFullScan(long millis) { try { wait(millis); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java index 74f63a0e09b..bbe9dd22ea1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/CompactionCoordinator.java @@ -268,6 +268,7 @@ public void shutdown() { try { localThread.join(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); LOG.error("Exception stopping compaction coordinator thread", e); } } @@ -309,6 +310,7 @@ public void run() { try { shutdown.await(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); LOG.warn("Interrupted waiting for shutdown latch.", e); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java index a1eb21efc99..15c07d3140a 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/compaction/coordinator/commit/CommitCompaction.java @@ -155,6 +155,7 @@ private TabletMetadata commitCompaction(ServerContext ctx, ExternalCompactionId retry.waitForNextAttempt(LOG, "Failed to commit " + ecid + " for tablet " + getExtent()); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateManager.java b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateManager.java index 64f1371a9ed..1e7dedc9cc1 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateManager.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateManager.java @@ -189,6 +189,7 @@ public synchronized void stop(FateInstanceType fateType, Duration timeout) { assignmentThread.join(); } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } // Try to set every assistant manager to an empty set of partitions. This will cause them all to @@ -221,6 +222,9 @@ public synchronized void stop(FateInstanceType fateType, Duration timeout) { try { yield new MetaFateStore<>(context.getZooSession(), null, null); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -236,6 +240,7 @@ public synchronized void stop(FateInstanceType fateType, Duration timeout) { try { Thread.sleep(Math.min(100, timer.timeLeft(TimeUnit.MILLISECONDS))); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateNotifier.java b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateNotifier.java index 5789832277a..6b6d9af25eb 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateNotifier.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateNotifier.java @@ -139,6 +139,7 @@ public void run() { } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } catch (TException e) { log.warn("Failed to send notification that fate was seeded", e); diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorker.java b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorker.java index f60fc453c0a..d4c544137ee 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorker.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorker.java @@ -88,6 +88,9 @@ public synchronized void setLock(ServiceLock lock) { new MetaFateStore<>(context.getZooSession(), lock.getLockID(), isLockHeld); this.fates.put(FateInstanceType.META, fateFactory.create(fateWorkerEnv, metaStore, context)); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } UserFateStore store = diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java index 01cf2baea20..f442948054d 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/fate/FateWorkerEnv.java @@ -74,6 +74,7 @@ public void stop() { try { eventSendThread.join(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } @@ -104,6 +105,7 @@ public void run() { } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java index b9229bf8f67..d1ca90e67b0 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/CleanUpBulkImport.java @@ -132,6 +132,7 @@ private static void removeBulkLoadEntries(Ample ample, TableId tableId, FateId f String.format("%s tableId:%s conditional mutations to delete load markers failed.", fateId, tableId)); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } else { diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java index 1f7b1e8965f..f6295502317 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/bulkVer2/TabletRefresher.java @@ -124,6 +124,9 @@ public static void refreshTablets(ExecutorService threadPool, String logId, Serv try { nonRefreshedExtents = future.get(); } catch (InterruptedException | ExecutionException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } if (nonRefreshedExtents.isEmpty()) { @@ -190,6 +193,7 @@ public static void refreshTablets(ExecutorService threadPool, String logId, Serv retry.waitForNextAttempt(log, logId + " waiting for " + refreshesNeeded.size() + " tservers to refresh their tablets metadata"); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException(e); } } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java index 543797dd516..9b5b484b4a8 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/tableOps/compact/CompactionDriver.java @@ -316,6 +316,9 @@ public int updateAndCheckTablets(FateEnv env, FateId fateId) } } } catch (InterruptedException | KeeperException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } diff --git a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java index 29e1ac53cf5..f4f8b9f6e6c 100644 --- a/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java +++ b/server/manager/src/main/java/org/apache/accumulo/manager/upgrade/Upgrader11to12.java @@ -306,6 +306,9 @@ private static void addAssistantManager(ServerContext context) { context.getZooSession().asReaderWriter().putPersistentData(Constants.ZMANAGER_ASSISTANT_LOCK, new byte[0], ZooUtil.NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -315,6 +318,9 @@ private static void addShuttingDownTservers(ServerContext context) { context.getZooSession().asReaderWriter().putPersistentData(Constants.ZSHUTTING_DOWN_TSERVERS, new byte[0], ZooUtil.NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -324,6 +330,9 @@ private static void addCompactionsNode(ServerContext context) { context.getZooSession().asReaderWriter().putPersistentData(Constants.ZCOMPACTIONS, new byte[0], ZooUtil.NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -485,6 +494,9 @@ private void removeUnusedZKNodes(ServerContext context) { zrw.delete(zTablePath + ZTABLE_COMPACT_CANCEL_ID); } } catch (KeeperException | InterruptedException e1) { + if (e1 instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e1); } } @@ -599,6 +611,9 @@ private void validateEmptyZKWorkerServerPaths(ServerContext context) { } } } catch (InterruptedException | KeeperException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -771,6 +786,9 @@ void removeZTracersNode(ServerContext context) { context.getZooSession().asReaderWriter().recursiveDelete(ZTRACERS, ZooUtil.NodeMissingPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error removing ZTRACERS node", e); } } @@ -873,6 +891,9 @@ void updateRootTabletFileReferences(ServerContext context) { LOG.info("Root metadata in ZooKeeper after upgrade: {}", rtm.toJson()); } } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error upgrading file references in root tablet", e); } } @@ -900,6 +921,9 @@ void createNamespaceMappings(ServerContext context) { zrw.delete(namespaceNamePath); } } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating namespace mappings", e); } } @@ -934,6 +958,9 @@ private void addDefaultResourceGroupConfigNode(ServerContext context) { try { ResourceGroupPropKey.DEFAULT.createZNode(context.getZooSession().asReaderWriter()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating default resource group config node", e); } } diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java index 91cd5982411..4db14965228 100644 --- a/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java +++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/next/InformationFetcher.java @@ -438,6 +438,9 @@ public void run() { FateStatus status = admin.getStatus(stores, zk, zTableLocksPath, null, null, null, false); summary.processFateTransactions(status.getTransactions()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } @@ -649,6 +652,9 @@ public InformationFetcher(ServerContext ctx, Supplier connectionCount) { try { this.readOnlyMFS = new MetaFateStore<>(ctx.getZooSession(), null, null); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException("Exception creating MetaFateStore", e); } this.readOnlyUFS = new UserFateStore<>(ctx, SystemTables.FATE.tableName(), null, null); @@ -721,6 +727,7 @@ private long countMetadataTabletsNoLocation() { try { countThread.join(30_000); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new RuntimeException( "Interrupted while waiting for thread counting metadata tablet locations"); } diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java index c400bde29cd..ce043e0e6b0 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ScanServer.java @@ -422,6 +422,7 @@ public void run() { sessionManager.getActiveScans().isEmpty() && tabletMetadataCache.estimatedSize() == 0); updateAllowedTables(false); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); LOG.info("Interrupt Exception received, shutting down"); gracefulShutdown(getContext().rpcCreds()); } diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java index 3a5c334f033..31ed033261c 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletClientHandler.java @@ -865,6 +865,9 @@ public List conditionalUpdate(TInfo tinfo, long sessID, return future.get(); } catch (ExecutionException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } log.warn("Exception returned for conditionalUpdate. tableId: {}, opid: {}", cs == null ? null : cs.tableId, opid, e); throw new TException(e); diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java index 5b4276d6eeb..7ef72feee0e 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/TabletServerLogger.java @@ -282,6 +282,7 @@ private synchronized void startLogMaker() { try { nextLog.offer(e, 12, TimeUnit.HOURS); } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); // This is a critical thread, so dying will log this then halt the VM. throw new IllegalStateException("Next log maker thread interrupted", ex); } @@ -330,6 +331,7 @@ private synchronized void startLogMaker() { log.info("Our WAL was not used for 12 hours: {}", alog.getLogEntry()); } } catch (InterruptedException e) { + Thread.currentThread().interrupt(); // This is a critical thread, so dying will log this then halt the VM. throw new IllegalStateException("Next log maker thread interrupted", e); } diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java index 9d49a1779c0..73ed820f055 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Tablet.java @@ -964,6 +964,7 @@ void completeClose(boolean saveState) throws IOException { runningScans.size()); this.wait(50); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); log.error("Interrupted waiting to completeClose for extent {}", extent, e); } } diff --git a/test/src/main/java/org/apache/accumulo/test/ScanConsistencyIT.java b/test/src/main/java/org/apache/accumulo/test/ScanConsistencyIT.java index e78f0fd888b..df101e52533 100644 --- a/test/src/main/java/org/apache/accumulo/test/ScanConsistencyIT.java +++ b/test/src/main/java/org/apache/accumulo/test/ScanConsistencyIT.java @@ -206,7 +206,7 @@ private static void runTest(AccumuloClient client, FileSystem fileSystem, String } } } catch (InterruptedException e) { - // ignore + Thread.currentThread().interrupt(); } catch (Exception e) { log.warn("Failed to scan metadata table", e); } diff --git a/test/src/main/java/org/apache/accumulo/test/WriteAfterCloseIT.java b/test/src/main/java/org/apache/accumulo/test/WriteAfterCloseIT.java index 2f42f0a00a1..f4cf53c130a 100644 --- a/test/src/main/java/org/apache/accumulo/test/WriteAfterCloseIT.java +++ b/test/src/main/java/org/apache/accumulo/test/WriteAfterCloseIT.java @@ -100,6 +100,7 @@ public List check(Environment env, Mutation mutation) { try { Thread.sleep(SLEEP_TIME); } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); throw new IllegalStateException("Interrupted during sleep", ex); } } diff --git a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompactionTestUtils.java b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompactionTestUtils.java index 778ca66f8c7..5aef52e531d 100644 --- a/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompactionTestUtils.java +++ b/test/src/main/java/org/apache/accumulo/test/compaction/ExternalCompactionTestUtils.java @@ -251,6 +251,7 @@ public static Map getRunningCompactions(ClientContex tec -> running.put(tec.getJob().getExternalCompactionId(), tec)); return running; } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException(e); } } diff --git a/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java b/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java index 0a226ec798c..c044b9dd879 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/FateITBase.java @@ -802,6 +802,7 @@ private static void inCall() throws InterruptedException { // wait for the signal to exit the method finishCall.await(); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); LOG.debug("InterruptedException occurred inCall."); interruptedException.set(e); throw e; diff --git a/test/src/main/java/org/apache/accumulo/test/fate/TestLock.java b/test/src/main/java/org/apache/accumulo/test/fate/TestLock.java index 598aed5c7e7..62ad467ea61 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/TestLock.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/TestLock.java @@ -79,6 +79,9 @@ public ServiceLock createTestLock(ServerContext context) throws InterruptedExcep zrw.putPersistentData(parentLockPath, new byte[0], NodeExistsPolicy.SKIP); zrw.putPersistentData(lockPath, new byte[0], NodeExistsPolicy.SKIP); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating path in ZooKeeper", e); } diff --git a/test/src/main/java/org/apache/accumulo/test/fate/meta/MetaFateIT.java b/test/src/main/java/org/apache/accumulo/test/fate/meta/MetaFateIT.java index cfd28ecda1d..48868f8338b 100644 --- a/test/src/main/java/org/apache/accumulo/test/fate/meta/MetaFateIT.java +++ b/test/src/main/java/org/apache/accumulo/test/fate/meta/MetaFateIT.java @@ -76,6 +76,9 @@ protected TStatus getTxStatus(ServerContext sctx, FateId fateId) { try { return getTxStatus(sctx.getZooSession(), fateId); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(e); } } diff --git a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java index 4fc51cd22c5..5eec44fb2b7 100644 --- a/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java +++ b/test/src/main/java/org/apache/accumulo/test/functional/FateConcurrencyIT.java @@ -398,6 +398,9 @@ private boolean lookupFateInAccumulo(final String tableName) throws KeeperExcept } } catch (TableNotFoundException | InterruptedException ex) { + if (ex instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException(ex); } diff --git a/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java b/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java index d298105e73d..f7f6c529168 100644 --- a/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java +++ b/test/src/main/java/org/apache/accumulo/test/manager/SuspendedTabletsIT.java @@ -335,6 +335,9 @@ public void eliminateTabletServers(ClientContext ctx, TabletLocations locs, int ((MiniAccumuloClusterImpl) getCluster()).getClusterControl() .killProcess(ServerType.TABLET_SERVER, proc); } catch (ProcessNotFoundException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException("Error killing process: " + proc, e); } }); diff --git a/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java b/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java index 73adbe90e3f..76d84509b73 100644 --- a/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java +++ b/test/src/main/java/org/apache/accumulo/test/performance/NullTserver.java @@ -353,6 +353,9 @@ public void failedToAcquireLock(Exception e) { try { zk.asReaderWriter().mkdirs(slp.toString()); } catch (KeeperException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new IllegalStateException("Error creating path in ZooKeeper", e); } ServiceLockData sld = new ServiceLockData(nullTServerUUID, "localhost", ThriftService.TSERV, diff --git a/test/src/main/java/org/apache/accumulo/test/upgrade/ScanServerUpgrade11to12TestIT.java b/test/src/main/java/org/apache/accumulo/test/upgrade/ScanServerUpgrade11to12TestIT.java index 2d064e56ec6..345b90da818 100644 --- a/test/src/main/java/org/apache/accumulo/test/upgrade/ScanServerUpgrade11to12TestIT.java +++ b/test/src/main/java/org/apache/accumulo/test/upgrade/ScanServerUpgrade11to12TestIT.java @@ -111,6 +111,9 @@ private void testMetadataScanServerRefRemoval() { log.info("Removed constraints from table {}", tableName); Thread.sleep(10_000); } catch (AccumuloException | AccumuloSecurityException | InterruptedException e) { + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } throw new RuntimeException(e); } diff --git a/test/src/main/java/org/apache/accumulo/test/util/SlowOps.java b/test/src/main/java/org/apache/accumulo/test/util/SlowOps.java index 83a47d9f442..f3f319aa232 100644 --- a/test/src/main/java/org/apache/accumulo/test/util/SlowOps.java +++ b/test/src/main/java/org/apache/accumulo/test/util/SlowOps.java @@ -232,6 +232,7 @@ private boolean blockUntilCompactionRunning() { } }); } catch (InterruptedException e) { + Thread.currentThread().interrupt(); throw new IllegalStateException("Interruped while getting compactions from compactors", e); } @@ -242,6 +243,7 @@ private boolean blockUntilCompactionRunning() { try { Thread.sleep(SECONDS.toMillis(3)); } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); throw new IllegalStateException("interrupted during sleep", ex); } } while (!timer.hasElapsed(maxWait));