You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by ma...@apache.org on 2020/07/22 02:13:17 UTC
[lucene-solr] branch reference_impl updated: @283 Interrupt,
interrupt, interrupt.
This is an automated email from the ASF dual-hosted git repository.
markrmiller pushed a commit to branch reference_impl
in repository https://gitbox.apache.org/repos/asf/lucene-solr.git
The following commit(s) were added to refs/heads/reference_impl by this push:
new 5a80141 @283 Interrupt, interrupt, interrupt.
5a80141 is described below
commit 5a80141ef3cb44e78b6ceb017d75ba92a6728452
Author: markrmiller@gmail.com <ma...@gmail.com>
AuthorDate: Tue Jul 21 21:13:05 2020 -0500
@283 Interrupt, interrupt, interrupt.
---
.../client/solrj/embedded/JettySolrRunner.java | 2 +-
.../java/org/apache/solr/cloud/ActionThrottle.java | 3 ++-
.../apache/solr/cloud/CloudConfigSetService.java | 2 +-
.../src/java/org/apache/solr/cloud/CloudUtil.java | 2 +-
.../src/java/org/apache/solr/cloud/Overseer.java | 2 +-
.../org/apache/solr/cloud/OverseerTaskQueue.java | 1 +
.../org/apache/solr/cloud/RecoveryStrategy.java | 19 +++++++-------
.../java/org/apache/solr/cloud/ZkController.java | 30 ++++++++++------------
.../java/org/apache/solr/cloud/ZkShardTerms.java | 4 +--
.../apache/solr/cloud/ZkSolrResourceLoader.java | 2 +-
.../OverseerCollectionMessageHandler.java | 6 ++---
.../solr/cloud/api/collections/SplitShardCmd.java | 2 +-
.../solr/cloud/autoscaling/ExecutePlanAction.java | 2 +-
.../autoscaling/InactiveMarkersPlanAction.java | 2 +-
.../solr/cloud/autoscaling/NodeAddedTrigger.java | 1 +
.../solr/cloud/autoscaling/NodeLostTrigger.java | 1 +
.../cloud/autoscaling/OverseerTriggerThread.java | 12 +++------
.../solr/cloud/autoscaling/ScheduledTriggers.java | 2 +-
.../apache/solr/cloud/autoscaling/TriggerBase.java | 2 +-
.../autoscaling/sim/GenericDistributedQueue.java | 3 ++-
.../cloud/autoscaling/sim/SimCloudManager.java | 2 +-
.../autoscaling/sim/SimClusterStateProvider.java | 3 ++-
.../java/org/apache/solr/core/CoreContainer.java | 2 +-
.../src/java/org/apache/solr/core/SolrCore.java | 4 +--
.../src/java/org/apache/solr/core/SolrCores.java | 8 +++---
.../src/java/org/apache/solr/core/ZkContainer.java | 4 +--
.../org/apache/solr/filestore/PackageStoreAPI.java | 2 +-
.../apache/solr/handler/CdcrReplicatorManager.java | 10 +++-----
.../solr/handler/CdcrReplicatorScheduler.java | 4 +--
.../apache/solr/handler/CdcrRequestHandler.java | 10 ++++----
.../solr/handler/CdcrUpdateLogSynchronizer.java | 4 +--
.../java/org/apache/solr/handler/IndexFetcher.java | 2 +-
.../org/apache/solr/handler/SolrConfigHandler.java | 5 +---
.../solr/handler/admin/CollectionsHandler.java | 2 +-
.../solr/handler/admin/MetricsHistoryHandler.java | 2 +-
.../solr/handler/admin/RequestApplyUpdatesOp.java | 3 ++-
.../solr/handler/admin/ZookeeperInfoHandler.java | 8 +++---
.../solr/handler/component/CloudReplicaSource.java | 2 ++
.../org/apache/solr/metrics/SolrMetricManager.java | 3 +++
.../reporters/solr/SolrClusterReporter.java | 3 ++-
.../src/java/org/apache/solr/pkg/PackageAPI.java | 6 ++---
.../request/PerSegmentSingleValuedFaceting.java | 3 ++-
.../org/apache/solr/schema/ManagedIndexSchema.java | 2 +-
.../solr/schema/ManagedIndexSchemaFactory.java | 12 +++------
.../apache/solr/schema/ZkIndexSchemaReader.java | 9 +++----
.../org/apache/solr/search/ValueSourceParser.java | 2 ++
.../apache/solr/security/AuditLoggerPlugin.java | 11 ++++----
.../security/DelegationTokenKerberosFilter.java | 2 ++
.../apache/solr/servlet/SolrDispatchFilter.java | 1 +
.../org/apache/solr/store/hdfs/HdfsDirectory.java | 5 ++--
.../apache/solr/store/hdfs/HdfsLockFactory.java | 4 ++-
.../apache/solr/update/DefaultSolrCoreState.java | 2 +-
.../apache/solr/update/DirectUpdateHandler2.java | 2 +-
.../java/org/apache/solr/update/HdfsUpdateLog.java | 4 ++-
.../org/apache/solr/update/SolrCmdDistributor.java | 2 +-
.../org/apache/solr/update/TimedVersionBucket.java | 5 ++--
.../src/java/org/apache/solr/update/UpdateLog.java | 4 +--
.../java/org/apache/solr/update/VersionBucket.java | 3 +++
.../processor/DistributedZkUpdateProcessor.java | 15 ++++++-----
.../org/apache/solr/util/ConcurrentLRUCache.java | 5 +++-
.../src/java/org/apache/solr/util/ExportTool.java | 2 ++
.../src/java/org/apache/solr/util/FSHDFSUtils.java | 2 ++
.../src/java/org/apache/solr/util/FileUtils.java | 4 ++-
.../java/org/apache/solr/util/SimplePostTool.java | 2 ++
.../src/java/org/apache/solr/util/SolrCLI.java | 12 +++++----
.../java/org/apache/solr/util/TestInjection.java | 18 ++++++-------
66 files changed, 170 insertions(+), 152 deletions(-)
diff --git a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
index 469d0d4..a42c9bb 100644
--- a/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
+++ b/solr/core/src/java/org/apache/solr/client/solrj/embedded/JettySolrRunner.java
@@ -783,7 +783,7 @@ public class JettySolrRunner implements Closeable {
try {
reader.waitForLiveNodes(10, TimeUnit.SECONDS, (o, n) -> !n.contains(nodeName));
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "interrupted");
} catch (TimeoutException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
diff --git a/solr/core/src/java/org/apache/solr/cloud/ActionThrottle.java b/solr/core/src/java/org/apache/solr/cloud/ActionThrottle.java
index 1724b53..85c37a3 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ActionThrottle.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ActionThrottle.java
@@ -20,6 +20,7 @@ import java.lang.invoke.MethodHandles;
import java.util.concurrent.TimeUnit;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.util.TimeSource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -84,7 +85,7 @@ public class ActionThrottle {
try {
timeSource.sleep(sleep);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/CloudConfigSetService.java b/solr/core/src/java/org/apache/solr/cloud/CloudConfigSetService.java
index ef88c71..25631f1 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CloudConfigSetService.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CloudConfigSetService.java
@@ -79,7 +79,7 @@ public class CloudConfigSetService extends ConfigSetService {
log.warn("Unexpected exception when getting modification time of {}", zkPath, e);
return null; // debatable; we'll see an error soon if there's a real problem
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
}
if (stat == null) { // not found
diff --git a/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java b/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
index 585fbf5..5321b1d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
+++ b/solr/core/src/java/org/apache/solr/cloud/CloudUtil.java
@@ -144,7 +144,7 @@ public class CloudUtil {
log.info("Error fetching key names");
return Collections.EMPTY_MAP;
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR,"Unable to read crypto keys",e );
} catch (KeeperException e) {
throw new SolrException(ErrorCode.SERVER_ERROR,"Unable to read crypto keys",e );
diff --git a/solr/core/src/java/org/apache/solr/cloud/Overseer.java b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
index ed085ce..e0e4c2f 100644
--- a/solr/core/src/java/org/apache/solr/cloud/Overseer.java
+++ b/solr/core/src/java/org/apache/solr/cloud/Overseer.java
@@ -260,7 +260,7 @@ public class Overseer implements SolrCloseable {
fallbackQueue.poll();
}
} catch (InterruptedException e1) {
- ParWork.propegateInterrupt(e1);
+ ParWork.propegateInterrupt(e);
return;
} catch (Exception e1) {
exp.addSuppressed(e1);
diff --git a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
index f91e596..d016a5a 100644
--- a/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/OverseerTaskQueue.java
@@ -71,6 +71,7 @@ public class OverseerTaskQueue extends ZkDistributedQueue {
try {
Thread.sleep(250);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
log.error("Interrupted while waiting for overseer queue to drain before shutdown!");
}
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
index 8aa00d5..29d96db 100644
--- a/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
+++ b/solr/core/src/java/org/apache/solr/cloud/RecoveryStrategy.java
@@ -368,8 +368,7 @@ public class RecoveryStrategy implements Runnable, Closeable {
try {
doRecovery(core);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- SolrException.log(log, "", e);
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
} catch (Exception e) {
ParWork.propegateInterrupt(e);
@@ -539,7 +538,7 @@ public class RecoveryStrategy implements Runnable, Closeable {
Thread.sleep(startingRecoveryDelayMilliSeconds);
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
log.warn("Recovery was interrupted.", e);
close = true;
}
@@ -690,7 +689,8 @@ public class RecoveryStrategy implements Runnable, Closeable {
try {
Thread.sleep(waitForUpdatesWithStaleStatePauseMilliSeconds);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
+ throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
// first thing we just try to sync
@@ -754,9 +754,9 @@ public class RecoveryStrategy implements Runnable, Closeable {
log.info("Replication Recovery was successful.");
successfulRecovery = true;
- } catch (InterruptedException e) {
- ParWork.propegateInterrupt(e);
- close = true;
+ } catch (InterruptedException | AlreadyClosedException e) {
+ ParWork.propegateInterrupt(e, true);
+ return;
} catch (Exception e) {
SolrException.log(log, "Error while trying to recover", e);
}
@@ -831,9 +831,8 @@ public class RecoveryStrategy implements Runnable, Closeable {
Thread.sleep(startingRecoveryDelayMilliSeconds);
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- log.warn("Recovery was interrupted.", e);
- close = true;
+ ParWork.propegateInterrupt(e, true);
+ return;
}
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkController.java b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
index d81e482..0a52937 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkController.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkController.java
@@ -520,9 +520,7 @@ public class ZkController implements Closeable {
parWork.addCollect("reconnectListeners");
}
} catch (InterruptedException e) {
- log.warn("ConnectionManager interrupted", e);
- // Restore the interrupted status
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(
SolrException.ErrorCode.SERVER_ERROR, "", e);
} catch (SessionExpiredException e) {
@@ -1023,6 +1021,7 @@ public class ZkController implements Closeable {
success = latch.await(10, TimeUnit.SECONDS);
} catch (InterruptedException e) {
ParWork.propegateInterrupt(e);
+ return;
}
if (!success) {
log.error("Time out waiting to see solr live nodes go down " + children.size());
@@ -1231,9 +1230,7 @@ public class ZkController implements Closeable {
// publishAndWaitForDownStates();
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.error("Interrupted", e);
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR,
"", e);
} catch (KeeperException e) {
@@ -1530,8 +1527,7 @@ public class ZkController implements Closeable {
startReplicationFromLeader(coreName, false);
}
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
} catch (KeeperException | IOException e) {
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
@@ -2065,7 +2061,7 @@ public class ZkController implements Closeable {
return false;
});
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, "Could not get shard id for core: " + cd.getName());
}
} catch (TimeoutException e1) {
@@ -2129,8 +2125,7 @@ public class ZkController implements Closeable {
log.error("", e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- log.error("", e);
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
} catch (NotInClusterStateException e) {
// make the stack trace less verbose
@@ -2319,8 +2314,7 @@ public class ZkController implements Closeable {
try {
return asyncIdsMap.putIfAbsent(asyncId, new byte[0]);
} catch (InterruptedException e) {
- log.error("Interrupted cleaning asyncId={}", asyncId, e);
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
@@ -2335,8 +2329,7 @@ public class ZkController implements Closeable {
try {
return asyncIdsMap.remove(asyncId);
} catch (InterruptedException e) {
- log.error("Interrupted cleaning asyncId={}", asyncId, e);
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
@@ -2701,7 +2694,8 @@ public class ZkController implements Closeable {
} catch (KeeperException e) {
//ignore , it is not a big deal
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
+ return;
}
boolean resetWatcher = false;
@@ -2756,9 +2750,11 @@ public class ZkController implements Closeable {
}
} catch (KeeperException e) {
log.error("failed to set watcher for conf dir {} ", zkDir);
+ throw new SolrException(ErrorCode.SERVER_ERROR, e);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
log.error("failed to set watcher for conf dir {} ", zkDir);
+ throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
}
@@ -2875,7 +2871,7 @@ public class ZkController implements Closeable {
} catch (AlreadyClosedException e) {
log.info("Not publishing node as DOWN because a resource required to do so is already closed.");
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
log.debug("Publish node as down was interrupted.");
}
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
index 2ecf845..e5710de 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkShardTerms.java
@@ -341,7 +341,7 @@ public class ZkShardTerms implements AutoCloseable{
}
} catch (InterruptedException e) {
- Thread.interrupted();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Error creating shard term node in Zookeeper for collection: " + collection, e);
} catch (KeeperException e) {
@@ -411,7 +411,7 @@ public class ZkShardTerms implements AutoCloseable{
// exists operation is faster than getData operation
zkClient.exists(znodePath, watcher);
} catch (InterruptedException e) {
- Thread.interrupted();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error watching shard term for collection: " + collection, e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
index 39a6318..33b965c 100644
--- a/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
+++ b/solr/core/src/java/org/apache/solr/cloud/ZkSolrResourceLoader.java
@@ -87,7 +87,7 @@ public class ZkSolrResourceLoader extends SolrResourceLoader implements Resource
}
return new ZkByteArrayInputStream(bytes, stat);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Interrupted while opening " + file, e);
} catch (KeeperException.NoNodeException e) {
throw new SolrResourceNotFoundException("Can't find resource '" + resource
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
index eb389d5..c7099d6 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/OverseerCollectionMessageHandler.java
@@ -570,7 +570,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
error = "Timeout waiting for collection state.";
throw new ZkController.NotInClusterStateException(ErrorCode.SERVER_ERROR, error);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, "Interrupted");
}
@@ -593,7 +593,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
String error = "Timeout waiting for new shard.";
throw new ZkController.NotInClusterStateException(ErrorCode.SERVER_ERROR, error);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, "Interrupted");
}
}
@@ -731,7 +731,7 @@ public class OverseerCollectionMessageHandler implements OverseerMessageHandler,
error = "Timeout waiting for collection state.";
throw new SolrException(ErrorCode.SERVER_ERROR, error);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, "Interrupted");
}
return result.get();
diff --git a/solr/core/src/java/org/apache/solr/cloud/api/collections/SplitShardCmd.java b/solr/core/src/java/org/apache/solr/cloud/api/collections/SplitShardCmd.java
index 2c25ae7..d700a99 100644
--- a/solr/core/src/java/org/apache/solr/cloud/api/collections/SplitShardCmd.java
+++ b/solr/core/src/java/org/apache/solr/cloud/api/collections/SplitShardCmd.java
@@ -149,7 +149,7 @@ public class SplitShardCmd implements OverseerCollectionMessageHandler.Cmd {
try {
parentShardLeader = zkStateReader.getLeaderRetry(collectionName, slice.get(), 10000);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Interrupted.");
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ExecutePlanAction.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ExecutePlanAction.java
index 08e66fa..f9562b5 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ExecutePlanAction.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ExecutePlanAction.java
@@ -182,7 +182,7 @@ public class ExecutePlanAction extends TriggerActionBase {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Unexpected exception executing operation: " + operation.getParams(), e);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "ExecutePlanAction was interrupted", e);
} catch (Exception e) {
ParWork.propegateInterrupt(e);
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
index aebca32..95aaa2f 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/InactiveMarkersPlanAction.java
@@ -137,7 +137,7 @@ public class InactiveMarkersPlanAction extends TriggerActionBase {
log.trace(" -- keep {}, delta={}, ttl={}, active={}", markerPath, delta, cleanupTTL, activeMarker);
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return;
} catch (IOException | KeeperException e) {
log.warn("Could not cleanup marker at {}, skipping... ({}}", markerPath, e.getMessage());
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
index cfa2f74..e8d1cab 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeAddedTrigger.java
@@ -89,6 +89,7 @@ public class NodeAddedTrigger extends TriggerBase {
return;
}
} catch (InterruptedException | IOException | KeeperException e) {
+ ParWork.propegateInterrupt(e);
log.debug("-- ignoring marker {} state due to error{}", markerPath, e);
}
// don't add nodes that have since gone away
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
index 64f40e7..5544717 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/NodeLostTrigger.java
@@ -88,6 +88,7 @@ public class NodeLostTrigger extends TriggerBase {
return;
}
} catch (InterruptedException | IOException | KeeperException e) {
+ ParWork.propegateInterrupt(e);
log.debug("-- ignoring marker {} state due to error", markerPath, e);
}
// don't add nodes that have since came back
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
index cc2489e..2313333 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/OverseerTriggerThread.java
@@ -168,8 +168,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
// somebody else has changed the configuration so we must retry
} catch (InterruptedException e) {
// Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("Interrupted", e);
+ ParWork.propegateInterrupt(e);
return;
}
catch (IOException | KeeperException e) {
@@ -191,9 +190,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
} catch (IOException e) {
log.error("IO error: [{}]", e);
} catch (InterruptedException | AlreadyClosedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.info("Interrupted", e);
+ ParWork.propegateInterrupt(e);
return;
} catch (Exception e) {
ParWork.propegateInterrupt(e);
@@ -235,7 +232,6 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
}
} catch (InterruptedException | AlreadyClosedException e) {
ParWork.propegateInterrupt(e);
- log.info("Interrupted", e);
return;
}
@@ -320,9 +316,7 @@ public class OverseerTriggerThread implements Runnable, SolrCloseable {
} catch (IOException e) {
log.warn("IO Error: [{}]", e);
} catch (InterruptedException | AlreadyClosedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("Interrupted", e);
+ ParWork.propegateInterrupt(e);
} catch (Exception e) {
log.error("Unexpected exception", e);
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
index 72b7f18..12becf2 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/ScheduledTriggers.java
@@ -464,7 +464,7 @@ public class ScheduledTriggers implements Closeable {
}
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Thread interrupted", e);
} catch (Exception e) {
ParWork.propegateInterrupt(e);
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerBase.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerBase.java
index 887b511..158d0a3 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerBase.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/TriggerBase.java
@@ -152,7 +152,7 @@ public abstract class TriggerBase implements AutoScaling.Trigger {
} catch (AlreadyExistsException e) {
// ignore
} catch (InterruptedException | KeeperException | IOException e) {
- log.warn("Exception checking ZK path {}", ZkStateReader.SOLR_AUTOSCALING_TRIGGER_STATE_PATH, e);
+ ParWork.propegateInterrupt(e);
throw e;
}
for (TriggerAction action : actions) {
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueue.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueue.java
index 37cebe1..3f1b59d 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueue.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/GenericDistributedQueue.java
@@ -41,6 +41,7 @@ import org.apache.solr.client.solrj.cloud.DistribStateManager;
import org.apache.solr.client.solrj.cloud.autoscaling.VersionedData;
import org.apache.solr.cloud.OverseerTaskQueue;
import org.apache.solr.cloud.Stats;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.util.Pair;
@@ -130,7 +131,7 @@ public class GenericDistributedQueue implements DistributedQueue {
} catch (IOException | KeeperException e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
index ea59a87..9f9e9a2 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimCloudManager.java
@@ -1047,7 +1047,7 @@ public class SimCloudManager implements SolrCloudManager {
try {
return inner.call();
} catch (InterruptedException ignored) {
- log.warn("Callable interupted", ignored);
+ ParWork.propegateInterrupt(ignored);
throw ignored;
} catch (Throwable t) {
// be forgiving of errors that occured as a result of interuption, even if
diff --git a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
index 716e689..d91daa2 100644
--- a/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
+++ b/solr/core/src/java/org/apache/solr/cloud/autoscaling/sim/SimClusterStateProvider.java
@@ -1209,7 +1209,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
try {
cloudManager.getSimNodeStateProvider().simSetNodeValue(n, "cores", cores.intValue() - 1);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException("interrupted");
}
}
@@ -2532,6 +2532,7 @@ public class SimClusterStateProvider implements ClusterStateProvider {
lock.unlock();
}
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new IOException(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/core/CoreContainer.java b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
index 3e6cfab..7fb6976 100644
--- a/solr/core/src/java/org/apache/solr/core/CoreContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/CoreContainer.java
@@ -929,7 +929,7 @@ public class CoreContainer implements Closeable {
try {
future.get();
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
} catch (ExecutionException e) {
log.error("Error waiting for SolrCore to be loaded on startup", e.getCause());
}
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index bc7c907..594ea6d 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -1421,7 +1421,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
try {
Thread.sleep(milliSleep);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR,
"Caught InterruptedException whilst waiting for core " + getName() + " to close: "
+ e.getMessage(), e);
@@ -3231,7 +3231,7 @@ public final class SolrCore implements SolrInfoBean, Closeable {
} catch (KeeperException e) {
log.error("error refreshing solrconfig ", e);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
return false;
}
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCores.java b/solr/core/src/java/org/apache/solr/core/SolrCores.java
index 361dcc1..317decf 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCores.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCores.java
@@ -384,7 +384,7 @@ class SolrCores implements Closeable {
try {
Thread.sleep(250);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
@@ -410,7 +410,7 @@ class SolrCores implements Closeable {
try {
pendingCoreOps.wait(500);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
@@ -485,7 +485,7 @@ class SolrCores implements Closeable {
try {
loadingSignal.wait(1000);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return;
}
}
@@ -506,7 +506,7 @@ class SolrCores implements Closeable {
try {
loadingSignal.wait(1000);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return;
}
}
diff --git a/solr/core/src/java/org/apache/solr/core/ZkContainer.java b/solr/core/src/java/org/apache/solr/core/ZkContainer.java
index 610162b..5804d1e 100644
--- a/solr/core/src/java/org/apache/solr/core/ZkContainer.java
+++ b/solr/core/src/java/org/apache/solr/core/ZkContainer.java
@@ -158,9 +158,7 @@ public class ZkContainer implements Closeable {
if (log.isDebugEnabled()) log.debug("done zkController init");
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.error("", e);
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR,
"", e);
} catch (TimeoutException e) {
diff --git a/solr/core/src/java/org/apache/solr/filestore/PackageStoreAPI.java b/solr/core/src/java/org/apache/solr/filestore/PackageStoreAPI.java
index 2c38fda..2bcb078 100644
--- a/solr/core/src/java/org/apache/solr/filestore/PackageStoreAPI.java
+++ b/solr/core/src/java/org/apache/solr/filestore/PackageStoreAPI.java
@@ -170,7 +170,7 @@ public class PackageStoreAPI {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, e);
}
} catch (InterruptedException e) {
- log.error("Unexpected error", e);
+ ParWork.propegateInterrupt(e);
} catch (KeeperException.NodeExistsException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "A write is already in process , try later");
} catch (KeeperException e) {
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
index b11ed2b..bab9f8f 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorManager.java
@@ -193,8 +193,7 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
} catch (IOException | SolrServerException | SolrException e) {
log.warn("Unable to instantiate the log reader for target collection {}", state.getTargetCollection(), e);
} catch (InterruptedException e) {
- log.warn("Thread interrupted while instantiate the log reader for target collection {}", state.getTargetCollection(), e);
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
@@ -269,8 +268,7 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
targetCollection, shard, leaderCoreUrl);
}
} catch (InterruptedException e) {
- log.error("Interrupted while closing BootstrapStatusRunnable", e);
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
@@ -296,7 +294,7 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
BOOTSTRAP_TIMEOUT_SECONDS - timeOut.timeLeft(TimeUnit.SECONDS), BOOTSTRAP_RETRY_DELAY_MS);
timeOut.sleep(BOOTSTRAP_RETRY_DELAY_MS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
} else if (status == BootstrapStatus.COMPLETED) {
log.info("CDCR bootstrap successful in {} seconds", BOOTSTRAP_TIMEOUT_SECONDS - timeOut.timeLeft(TimeUnit.SECONDS));
@@ -347,7 +345,7 @@ class CdcrReplicatorManager implements CdcrStateManager.CdcrStateObserver {
}
}
} catch (InterruptedException e) {
- log.info("Bootstrap thread interrupted");
+ ParWork.propegateInterrupt(e);
state.reportError(CdcrReplicatorState.ErrorType.INTERNAL);
Thread.currentThread().interrupt();
} catch (IOException | SolrServerException | SolrException e) {
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java
index 1418465..d349be4 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java
@@ -16,6 +16,7 @@
*/
package org.apache.solr.handler;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.SolrNamedThreadFactory;
@@ -103,8 +104,7 @@ class CdcrReplicatorScheduler {
try {
replicatorsPool.awaitTermination(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
- log.warn("Thread interrupted while waiting for CDCR replicator threadpool close.");
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
} finally {
scheduler.shutdownNow();
isStarted = false;
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
index 655f388..9772a19 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrRequestHandler.java
@@ -44,6 +44,7 @@ import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.UpdateRequest;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.cloud.ZkShardTerms;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.DocCollection;
@@ -422,7 +423,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
}
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Error while requesting shard's checkpoints", e);
} catch (ExecutionException e) {
@@ -530,7 +531,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
logReader.next();
lastProcessedVersion = Math.min(lastProcessedVersion, logReader.getLastVersion());
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Error while fetching the last processed version", e);
} catch (IOException e) {
@@ -653,8 +654,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
try {
bootstrapFuture.get();
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- log.warn("Bootstrap was interrupted", e);
+ ParWork.propegateInterrupt(e);
} catch (ExecutionException e) {
log.error("Bootstrap operation failed", e);
}
@@ -711,7 +711,7 @@ public class CdcrRequestHandler extends RequestHandlerBase implements SolrCoreAw
rsp.add(RESPONSE_STATUS, FAILED);
}
} catch (InterruptedException e) {
- // should not happen?
+ ParWork.propegateInterrupt(e);
} catch (ExecutionException e) {
rsp.add(RESPONSE_STATUS, FAILED);
rsp.add(RESPONSE, e);
diff --git a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
index 200357f..c610c5f 100644
--- a/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
+++ b/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
@@ -27,6 +27,7 @@ import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.cloud.ZkController;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.DocCollection;
import org.apache.solr.common.cloud.ZkCoreNodeProps;
@@ -177,8 +178,7 @@ class CdcrUpdateLogSynchronizer implements CdcrStateManager.CdcrStateObserver {
ulog.getBufferToggle().seek(lastVersion);
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): {}", lastVersion, e.getMessage());
+ ParWork.propegateInterrupt(e);
} catch (IOException e) {
log.warn("Couldn't advance replica buffering tlog reader to {} (to remove old tlogs): {}", lastVersion, e.getMessage());
}
diff --git a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
index 5e5c67a..79d2db8 100644
--- a/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
+++ b/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
@@ -946,7 +946,7 @@ public class IndexFetcher {
try {
waitSearcher[0].get();
} catch (InterruptedException | ExecutionException e) {
- SolrException.log(log, e);
+ ParWork.propegateInterrupt(e);
}
}
commitPoint = searcher.get().getIndexReader().getIndexCommit();
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 1721db7..47e948c 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -857,10 +857,7 @@ public class SolrConfigHandler extends RequestHandlerBase implements SolrCoreAwa
failedList.size(), concurrentTasks.size() + 1, prop, expectedVersion, maxWaitSecs, failedList));
} catch (InterruptedException ie) {
- log.warn(formatString(
- "Core was interrupted . trying to set the property {1} to version {2} to propagate to {3} replicas for collection {4}",
- prop, expectedVersion, concurrentTasks.size(), collection));
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(ie);
} finally {
ExecutorUtil.shutdownAndAwaitTermination(parallelExecutor);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
index a61baf1..b126096 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
@@ -1408,7 +1408,7 @@ public class CollectionsHandler extends RequestHandlerBase implements Permission
throw new RuntimeException("Failed while waiting for active collection" + "\n" + e.getMessage() + " \nShards:" + shards + " Replicas:" + totalReplicas + "\nLive Nodes: " + Arrays.toString(liveNodesLastSeen.get().toArray())
+ "\nLast available state: " + state.get());
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
index a29c7e5..2b1afb4 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/MetricsHistoryHandler.java
@@ -334,7 +334,7 @@ public class MetricsHistoryHandler extends RequestHandlerBase implements Permiss
log.warn("Could not obtain overseer's address, skipping.", e);
return null;
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return null;
} catch (KeeperException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/RequestApplyUpdatesOp.java b/solr/core/src/java/org/apache/solr/handler/admin/RequestApplyUpdatesOp.java
index fbb484d..fd2b685 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/RequestApplyUpdatesOp.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/RequestApplyUpdatesOp.java
@@ -19,6 +19,7 @@ package org.apache.solr.handler.admin;
import java.util.concurrent.Future;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.Replica;
import org.apache.solr.common.params.CoreAdminParams;
@@ -57,7 +58,7 @@ class RequestApplyUpdatesOp implements CoreAdminHandler.CoreAdminOp {
it.rsp.add("core", cname);
it.rsp.add("status", "BUFFER_APPLIED");
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
CoreAdminOperation.log().warn("Recovery was interrupted", e);
} catch (Exception e) {
if (e instanceof SolrException)
diff --git a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java
index 648971f..65328d0 100644
--- a/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/admin/ZookeeperInfoHandler.java
@@ -40,6 +40,7 @@ import java.util.regex.Pattern;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.cloud.ZkController;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.OnReconnect;
@@ -561,8 +562,7 @@ public final class ZookeeperInfoHandler extends RequestHandlerBase {
writeKeyValue(json, "warning", e.toString(), false);
log.warn("Keeper Exception", e);
} catch (InterruptedException e) {
- writeKeyValue(json, "warning", e.toString(), false);
- log.warn("InterruptedException", e);
+ ParWork.propegateInterrupt(e);
}
if (stat.getNumChildren() > 0) {
@@ -594,7 +594,7 @@ public final class ZookeeperInfoHandler extends RequestHandlerBase {
writeError(500, e.toString());
return false;
} catch (InterruptedException e) {
- writeError(500, e.toString());
+ ParWork.propegateInterrupt(e);
return false;
} catch (IllegalArgumentException e) {
// path doesn't exist (must have been removed)
@@ -768,7 +768,7 @@ public final class ZookeeperInfoHandler extends RequestHandlerBase {
writeError(500, e.toString());
return false;
} catch (InterruptedException e) {
- writeError(500, e.toString());
+ ParWork.propegateInterrupt(e);
return false;
}
return true;
diff --git a/solr/core/src/java/org/apache/solr/handler/component/CloudReplicaSource.java b/solr/core/src/java/org/apache/solr/handler/component/CloudReplicaSource.java
index 4d3537c..846abe6 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/CloudReplicaSource.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/CloudReplicaSource.java
@@ -29,6 +29,7 @@ import java.util.stream.Collectors;
import org.apache.solr.client.solrj.routing.ReplicaListTransformer;
import org.apache.solr.client.solrj.util.ClientUtils;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ClusterState;
import org.apache.solr.common.cloud.DocCollection;
@@ -188,6 +189,7 @@ class CloudReplicaSource implements ReplicaSource {
try {
shardLeader = zkStateReader.getLeaderRetry(collectionName, sliceName);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE,
"Exception finding leader for shard " + sliceName + " in collection "
+ collectionName, e);
diff --git a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
index 8378943..a0cde3f 100644
--- a/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
+++ b/solr/core/src/java/org/apache/solr/metrics/SolrMetricManager.java
@@ -1012,6 +1012,7 @@ public class SolrMetricManager {
throw new Exception("Could not obtain lock to modify reporters registry: " + registry);
}
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new Exception("Interrupted while trying to obtain lock to modify reporters registry: " + registry);
}
try {
@@ -1053,6 +1054,7 @@ public class SolrMetricManager {
return false;
}
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
log.warn("Interrupted while trying to obtain lock to modify reporters registry: {}", registry);
return false;
}
@@ -1151,6 +1153,7 @@ public class SolrMetricManager {
return Collections.emptyMap();
}
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
log.warn("Interrupted while trying to obtain lock to modify reporters registry: {}", registry);
return Collections.emptyMap();
}
diff --git a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrClusterReporter.java b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrClusterReporter.java
index 1b80267..bdc34fc 100644
--- a/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrClusterReporter.java
+++ b/solr/core/src/java/org/apache/solr/metrics/reporters/solr/SolrClusterReporter.java
@@ -31,6 +31,7 @@ import org.apache.http.client.HttpClient;
import org.apache.solr.cloud.LeaderElector;
import org.apache.solr.cloud.Overseer;
import org.apache.solr.cloud.ZkController;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkNodeProps;
import org.apache.solr.core.CoreContainer;
@@ -261,7 +262,7 @@ public class SolrClusterReporter extends SolrCoreContainerReporter {
log.warn("Could not obtain overseer's address, skipping.", e);
return lastKnownUrl;
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return lastKnownUrl;
}
if (props == null) {
diff --git a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
index 8bc5181..c93a171 100644
--- a/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
+++ b/solr/core/src/java/org/apache/solr/pkg/PackageAPI.java
@@ -33,6 +33,7 @@ import org.apache.solr.api.EndPoint;
import org.apache.solr.api.PayloadObj;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.request.beans.Package;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.annotation.JsonProperty;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -118,9 +119,7 @@ public class PackageAPI {
} catch (KeeperException e) {
log.error("A ZK error has occurred", e);
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("Interrupted", e);
+ ParWork.propegateInterrupt(e);
}
}
@@ -392,6 +391,7 @@ public class PackageAPI {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
}
try {
pkgs = readPkgsFromZk(null, null);
diff --git a/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java b/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
index 4ff769f..cbf82af 100644
--- a/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
+++ b/solr/core/src/java/org/apache/solr/request/PerSegmentSingleValuedFaceting.java
@@ -38,6 +38,7 @@ import org.apache.lucene.util.BytesRefBuilder;
import org.apache.lucene.util.CharsRefBuilder;
import org.apache.lucene.util.PriorityQueue;
import org.apache.lucene.util.UnicodeUtil;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.FacetParams;
import org.apache.solr.common.util.NamedList;
@@ -145,7 +146,7 @@ class PerSegmentSingleValuedFaceting {
completionService.submit(pending.removeFirst());
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, e);
} catch (ExecutionException e) {
Throwable cause = e.getCause();
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index 88e8c9f..37a6803 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -277,7 +277,7 @@ public final class ManagedIndexSchema extends IndexSchema {
} catch (InterruptedException ie) {
log.warn("Core {} was interrupted waiting for schema version {} to propagate to {} replicas for collection {}"
, localCoreNodeName, schemaZkVersion, concurrentTasks.size(), collection);
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(ie);
} finally {
if (!parallelExecutor.isShutdown())
parallelExecutor.shutdown();
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
index 33b9d3f..9ee203e 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchemaFactory.java
@@ -26,6 +26,7 @@ import org.apache.lucene.analysis.util.ResourceLoader;
import org.apache.solr.cloud.ZkController;
import org.apache.solr.cloud.ZkSolrResourceLoader;
import org.apache.solr.common.AlreadyClosedException;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -141,9 +142,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
loadedResource = managedSchemaResourceName;
warnIfNonManagedSchemaExists();
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("", e);
+ ParWork.propegateInterrupt(e);
} catch (KeeperException.NoNodeException e) {
log.info("The schema is configured as managed, but managed schema resource {} not found - loading non-managed schema {} instead"
, managedSchemaResourceName, resourceName);
@@ -232,8 +231,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
try {
exists = zkLoader.getZkController().pathExists(nonManagedSchemaPath);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt(); // Restore the interrupted status
- log.warn("", e); // Log as warning and suppress the exception
+ ParWork.propegateInterrupt(e);
} catch (KeeperException e) {
// log as warning and suppress the exception
log.warn("Error checking for the existence of the non-managed schema {}", resourceName, e);
@@ -419,9 +417,7 @@ public class ManagedIndexSchemaFactory extends IndexSchemaFactory implements Sol
log.error(msg, e);
throw new SolrException(ErrorCode.SERVER_ERROR, msg, e);
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("", e);
+ ParWork.propegateInterrupt(e);
}
} else {
this.zkIndexSchemaReader = null;
diff --git a/solr/core/src/java/org/apache/solr/schema/ZkIndexSchemaReader.java b/solr/core/src/java/org/apache/solr/schema/ZkIndexSchemaReader.java
index 598bb5e..d727c11 100644
--- a/solr/core/src/java/org/apache/solr/schema/ZkIndexSchemaReader.java
+++ b/solr/core/src/java/org/apache/solr/schema/ZkIndexSchemaReader.java
@@ -20,6 +20,7 @@ import java.lang.invoke.MethodHandles;
import java.util.concurrent.TimeUnit;
import org.apache.solr.cloud.ZkSolrResourceLoader;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.OnReconnect;
import org.apache.solr.common.cloud.SolrZkClient;
@@ -98,9 +99,7 @@ public class ZkIndexSchemaReader implements OnReconnect {
log.error(msg, e);
throw new ZooKeeperException(ErrorCode.SERVER_ERROR, msg, e);
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("", e);
+ ParWork.propegateInterrupt(e);
}
return watcher;
@@ -140,9 +139,7 @@ public class ZkIndexSchemaReader implements OnReconnect {
log.error("", e);
throw new ZooKeeperException(ErrorCode.SERVER_ERROR, "", e);
} catch (InterruptedException e) {
- // Restore the interrupted status
- Thread.currentThread().interrupt();
- log.warn("", e);
+ ParWork.propegateInterrupt(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
index 4ebe37f..c84b25b 100644
--- a/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
+++ b/solr/core/src/java/org/apache/solr/search/ValueSourceParser.java
@@ -45,6 +45,7 @@ import org.apache.lucene.search.spell.LevenshteinDistance;
import org.apache.lucene.search.spell.NGramDistance;
import org.apache.lucene.search.spell.StringDistance;
import org.apache.lucene.util.BytesRefBuilder;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.request.SolrRequestInfo;
@@ -165,6 +166,7 @@ public abstract class ValueSourceParser implements NamedListInitializedPlugin {
try {
Thread.sleep(ms);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
return source;
diff --git a/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java b/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
index 68082a7..373a3bf 100644
--- a/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
+++ b/solr/core/src/java/org/apache/solr/security/AuditLoggerPlugin.java
@@ -40,6 +40,7 @@ import com.codahale.metrics.Timer;
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.util.ExecutorUtil;
import org.apache.solr.common.util.SolrNamedThreadFactory;
@@ -175,8 +176,7 @@ public abstract class AuditLoggerPlugin implements Closeable, Runnable, SolrInfo
try {
queue.put(event);
} catch (InterruptedException e) {
- log.warn("Interrupted while waiting to insert AuditEvent into blocking queue");
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
} else {
if (!queue.offer(event)) {
@@ -205,8 +205,7 @@ public abstract class AuditLoggerPlugin implements Closeable, Runnable, SolrInfo
numLogged.mark();
totalTime.inc(timer.stop());
} catch (InterruptedException e) {
- log.warn("Interrupted while waiting for next audit log event");
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
} catch (Exception ex) {
log.error("Exception when attempting to audit log asynchronously", ex);
numErrors.mark();
@@ -338,7 +337,9 @@ public abstract class AuditLoggerPlugin implements Closeable, Runnable, SolrInfo
}
Thread.sleep(1000);
timeSlept ++;
- } catch (InterruptedException ignored) {}
+ } catch (InterruptedException ignored) {
+ ParWork.propegateInterrupt(ignored);
+ }
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/security/DelegationTokenKerberosFilter.java b/solr/core/src/java/org/apache/solr/security/DelegationTokenKerberosFilter.java
index 0184564..0064766 100644
--- a/solr/core/src/java/org/apache/solr/security/DelegationTokenKerberosFilter.java
+++ b/solr/core/src/java/org/apache/solr/security/DelegationTokenKerberosFilter.java
@@ -42,6 +42,7 @@ import org.apache.hadoop.security.UserGroupInformation;
import org.apache.hadoop.security.authentication.server.AuthenticationHandler;
import org.apache.hadoop.security.token.delegation.web.DelegationTokenAuthenticationFilter;
import org.apache.hadoop.security.token.delegation.web.HttpUserGroupInformation;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.cloud.SecurityAwareZkACLProvider;
import org.apache.solr.common.cloud.SolrZkClient;
import org.apache.solr.common.cloud.ZkACLProvider;
@@ -72,6 +73,7 @@ public class DelegationTokenKerberosFilter extends DelegationTokenAuthentication
conf.getServletContext().setAttribute("signer.secret.provider.zookeeper.curator.client",
getCuratorClient(zkClient));
} catch (InterruptedException | KeeperException e) {
+ ParWork.propegateInterrupt(e);
throw new ServletException(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
index 7d3b33f..d09e6dc 100644
--- a/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
+++ b/solr/core/src/java/org/apache/solr/servlet/SolrDispatchFilter.java
@@ -387,6 +387,7 @@ public class SolrDispatchFilter extends BaseSolrFilter {
try {
init.await();
} catch (InterruptedException e) { //well, no wait then
+ ParWork.propegateInterrupt(e);
}
final String msg = "Error processing the request. CoreContainer is either not initialized or shutting down.";
if (cores == null || cores.isShutDown()) {
diff --git a/solr/core/src/java/org/apache/solr/store/hdfs/HdfsDirectory.java b/solr/core/src/java/org/apache/solr/store/hdfs/HdfsDirectory.java
index 6efe2cd..a4550ec 100644
--- a/solr/core/src/java/org/apache/solr/store/hdfs/HdfsDirectory.java
+++ b/solr/core/src/java/org/apache/solr/store/hdfs/HdfsDirectory.java
@@ -40,6 +40,7 @@ import org.apache.lucene.store.IOContext;
import org.apache.lucene.store.IndexInput;
import org.apache.lucene.store.IndexOutput;
import org.apache.lucene.store.LockFactory;
+import org.apache.solr.common.ParWork;
import org.apache.solr.store.blockcache.CustomBufferedIndexInput;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -80,8 +81,8 @@ public class HdfsDirectory extends BaseDirectory {
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
- Thread.interrupted();
- // continue
+ ParWork.propegateInterrupt(e);
+ return;
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/store/hdfs/HdfsLockFactory.java b/solr/core/src/java/org/apache/solr/store/hdfs/HdfsLockFactory.java
index c62b5f4..669b01d 100644
--- a/solr/core/src/java/org/apache/solr/store/hdfs/HdfsLockFactory.java
+++ b/solr/core/src/java/org/apache/solr/store/hdfs/HdfsLockFactory.java
@@ -30,6 +30,7 @@ import org.apache.lucene.store.Lock;
import org.apache.lucene.store.LockFactory;
import org.apache.lucene.store.LockObtainFailedException;
import org.apache.lucene.store.LockReleaseFailedException;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.util.IOUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -76,7 +77,8 @@ public class HdfsLockFactory extends LockFactory {
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
- Thread.interrupted();
+ ParWork.propegateInterrupt(e);
+ break;
}
continue;
}
diff --git a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
index 606f046..7be3229 100644
--- a/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
+++ b/solr/core/src/java/org/apache/solr/update/DefaultSolrCoreState.java
@@ -400,7 +400,7 @@ public final class DefaultSolrCoreState extends SolrCoreState implements Recover
try {
recoveryFuture.get(10, TimeUnit.MINUTES);
} catch (InterruptedException e) {
- SolrZkClient.checkInterrupted(e);
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, e);
} catch (ExecutionException e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
diff --git a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
index 5738de6..473aa52 100644
--- a/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
+++ b/solr/core/src/java/org/apache/solr/update/DirectUpdateHandler2.java
@@ -748,7 +748,7 @@ public class DirectUpdateHandler2 extends UpdateHandler implements SolrCoreState
try {
waitSearcher[0].get();
} catch (InterruptedException | ExecutionException e) {
- SolrException.log(log,e);
+ ParWork.propegateInterrupt(e);
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java b/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
index f11101e..2fc394b 100644
--- a/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/HdfsUpdateLog.java
@@ -32,6 +32,7 @@ import org.apache.hadoop.fs.Path;
import org.apache.hadoop.fs.PathFilter;
import org.apache.hadoop.ipc.RemoteException;
import org.apache.lucene.util.BytesRef;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.util.IOUtils;
@@ -150,7 +151,8 @@ public class HdfsUpdateLog extends UpdateLog {
try {
Thread.sleep(5000);
} catch (InterruptedException e1) {
- Thread.interrupted();
+ ParWork.propegateInterrupt(e);
+ break;
}
continue;
}
diff --git a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
index 07d366c..fe78166 100644
--- a/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
+++ b/solr/core/src/java/org/apache/solr/update/SolrCmdDistributor.java
@@ -551,7 +551,7 @@ public class SolrCmdDistributor implements Closeable {
leaderProps = new ZkCoreNodeProps(zkStateReader.getLeaderRetry(
collection, shardId));
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
return false;
} catch (Exception e) {
// we retry with same info
diff --git a/solr/core/src/java/org/apache/solr/update/TimedVersionBucket.java b/solr/core/src/java/org/apache/solr/update/TimedVersionBucket.java
index 5a8015b..3f66c1e 100644
--- a/solr/core/src/java/org/apache/solr/update/TimedVersionBucket.java
+++ b/solr/core/src/java/org/apache/solr/update/TimedVersionBucket.java
@@ -22,6 +22,7 @@ import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.SolrException;
/** @lucene.internal */
@@ -62,7 +63,7 @@ public class TimedVersionBucket extends VersionBucket {
condition.awaitNanos(nanosTimeout);
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
@@ -71,7 +72,7 @@ public class TimedVersionBucket extends VersionBucket {
try {
return lock.tryLock(lockTimeoutMs, TimeUnit.MILLISECONDS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/update/UpdateLog.java b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
index a140c47..1569bc7 100644
--- a/solr/core/src/java/org/apache/solr/update/UpdateLog.java
+++ b/solr/core/src/java/org/apache/solr/update/UpdateLog.java
@@ -1336,7 +1336,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
} catch (IOException e) {
log.error("Exception reading versions from log",e);
} catch (InterruptedException e) {
- log.warn("Exception reading log", e);
+ ParWork.propegateInterrupt(e);
} finally {
if (logReader != null) logReader.close();
}
@@ -2037,7 +2037,7 @@ public class UpdateLog implements PluginInfoInitialized, SolrMetricProducer {
} catch (TimeoutException e) {
throw new SolrException(ErrorCode.SERVER_ERROR, e);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, e);
}
diff --git a/solr/core/src/java/org/apache/solr/update/VersionBucket.java b/solr/core/src/java/org/apache/solr/update/VersionBucket.java
index 1599c6c..1939aec 100644
--- a/solr/core/src/java/org/apache/solr/update/VersionBucket.java
+++ b/solr/core/src/java/org/apache/solr/update/VersionBucket.java
@@ -16,6 +16,8 @@
*/
package org.apache.solr.update;
+import org.apache.solr.common.ParWork;
+
import java.io.IOException;
import java.util.concurrent.TimeUnit;
@@ -68,6 +70,7 @@ public class VersionBucket {
wait(millis);
}
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new RuntimeException(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
index 9945f71..815e055 100644
--- a/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
+++ b/solr/core/src/java/org/apache/solr/update/processor/DistributedZkUpdateProcessor.java
@@ -191,8 +191,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
try {
leaderReplica = zkController.getZkStateReader().getLeaderRetry(collection, cloudDesc.getShardId());
} catch (InterruptedException e) {
- log.error("processCommit(CommitUpdateCommand=" + cmd + ")", e);
-
+ ParWork.propegateInterrupt(e);
throw new SolrException(ErrorCode.SERVER_ERROR, "Exception finding leader for shard " + cloudDesc.getShardId(), e);
}
@@ -465,6 +464,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
try {
leader = zkController.getZkStateReader().getLeaderRetry(collection, sliceName);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE, "Exception finding leader for shard " + sliceName, e);
}
@@ -552,7 +552,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
}
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
}
if (leaderLogic) {
@@ -603,7 +603,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
}
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
}
@@ -631,6 +631,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
try {
return zkController.getZkStateReader().getLeaderRetry(collection, cloudDesc.getShardId()).getCoreUrl();
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Exception during fetching from leader.", e);
}
}
@@ -773,7 +774,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
throw new ZooKeeperException(SolrException.ErrorCode.SERVER_ERROR, "", e);
}
}
@@ -1019,7 +1020,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
}
}
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
@@ -1073,7 +1074,7 @@ public class DistributedZkUpdateProcessor extends DistributedUpdateProcessor {
try {
Thread.sleep(500);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/util/ConcurrentLRUCache.java b/solr/core/src/java/org/apache/solr/util/ConcurrentLRUCache.java
index e8107d8..d100dd8 100644
--- a/solr/core/src/java/org/apache/solr/util/ConcurrentLRUCache.java
+++ b/solr/core/src/java/org/apache/solr/util/ConcurrentLRUCache.java
@@ -18,6 +18,7 @@ package org.apache.solr.util;
import org.apache.lucene.util.Accountable;
import org.apache.lucene.util.PriorityQueue;
import org.apache.lucene.util.RamUsageEstimator;
+import org.apache.solr.common.ParWork;
import org.apache.solr.common.util.Cache;
import org.apache.solr.common.util.TimeSource;
@@ -877,7 +878,9 @@ public class ConcurrentLRUCache<K,V> implements Cache<K,V>, Accountable {
long waitTimeMs = c.maxIdleTimeNs != Long.MAX_VALUE ? TimeUnit.MILLISECONDS.convert(c.maxIdleTimeNs, TimeUnit.NANOSECONDS) : 0L;
try {
this.wait(waitTimeMs);
- } catch (InterruptedException e) {}
+ } catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
+ }
}
if (stop) break;
c = cache.get();
diff --git a/solr/core/src/java/org/apache/solr/util/ExportTool.java b/solr/core/src/java/org/apache/solr/util/ExportTool.java
index cc18d20..28071c8 100644
--- a/solr/core/src/java/org/apache/solr/util/ExportTool.java
+++ b/solr/core/src/java/org/apache/solr/util/ExportTool.java
@@ -471,6 +471,7 @@ public class ExportTool extends SolrCLI.ToolBase {
try {
doc = queue.poll(30, TimeUnit.SECONDS);
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
if (output != null) output.println("Consumer interrupted");
failed = true;
break;
@@ -517,6 +518,7 @@ public class ExportTool extends SolrCLI.ToolBase {
queue.offer(doc, 10, TimeUnit.SECONDS);
receivedDocs.incrementAndGet();
} catch (InterruptedException e) {
+ ParWork.propegateInterrupt(e);
failed = true;
if (output != null) output.println("Failed to write docs from" + e.getMessage());
}
diff --git a/solr/core/src/java/org/apache/solr/util/FSHDFSUtils.java b/solr/core/src/java/org/apache/solr/util/FSHDFSUtils.java
index d5a9b6d..591fcdd 100644
--- a/solr/core/src/java/org/apache/solr/util/FSHDFSUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/FSHDFSUtils.java
@@ -27,6 +27,7 @@ import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hdfs.DistributedFileSystem;
+import org.apache.solr.common.ParWork;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -120,6 +121,7 @@ public class FSHDFSUtils {
}
}
} catch (InterruptedException ie) {
+ ParWork.propegateInterrupt(ie);
InterruptedIOException iioe = new InterruptedIOException();
iioe.initCause(ie);
throw iioe;
diff --git a/solr/core/src/java/org/apache/solr/util/FileUtils.java b/solr/core/src/java/org/apache/solr/util/FileUtils.java
index 5e7d84a..4e649c6 100644
--- a/solr/core/src/java/org/apache/solr/util/FileUtils.java
+++ b/solr/core/src/java/org/apache/solr/util/FileUtils.java
@@ -27,6 +27,7 @@ import java.nio.file.Files;
import java.nio.file.Path;
import org.apache.commons.io.FileExistsException;
+import org.apache.solr.common.ParWork;
/**
*
@@ -80,7 +81,8 @@ public class FileUtils {
// Pause 5 msec
Thread.sleep(5);
} catch (InterruptedException ie) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(ie);
+ break;
}
}
}
diff --git a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
index c52aba5..ce4254e 100644
--- a/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
+++ b/solr/core/src/java/org/apache/solr/util/SimplePostTool.java
@@ -541,6 +541,7 @@ public class SimplePostTool {
Thread.sleep(delay * 1000);
filesPosted++;
} catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
throw new RuntimeException(e);
}
}
@@ -655,6 +656,7 @@ public class SimplePostTool {
} catch (IOException e) {
warn("Caught exception when trying to open connection to "+u+": "+e.getMessage());
} catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
throw new RuntimeException(e);
}
}
diff --git a/solr/core/src/java/org/apache/solr/util/SolrCLI.java b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
index 9b7a575..3a9df10 100755
--- a/solr/core/src/java/org/apache/solr/util/SolrCLI.java
+++ b/solr/core/src/java/org/apache/solr/util/SolrCLI.java
@@ -686,7 +686,7 @@ public class SolrCLI implements CLIO {
, getUrl, exc.getMessage());
try {
Thread.sleep(10);
- } catch (InterruptedException ie) { Thread.interrupted(); }
+ } catch (InterruptedException ie) { Thread.currentThread().interrupt(); throw new RuntimeException(exc);}
// retry using recursion with one-less attempt available
json = getJson(httpClient, getUrl, attempts, false);
@@ -1313,7 +1313,8 @@ public class SolrCLI implements CLIO {
try {
Thread.sleep(2000L);
} catch (InterruptedException interrupted) {
- timeout = 0; // stop looping
+ ParWork.propegateInterrupt(interrupted);
+ break;
}
}
}
@@ -3424,7 +3425,8 @@ public class SolrCLI implements CLIO {
try {
Thread.sleep(2000);
} catch (InterruptedException ie) {
- Thread.interrupted();
+ ParWork.propegateInterrupt(ie);
+ return;
}
liveNodes = cloudClient.getZkStateReader().getClusterState().getLiveNodes();
numLiveNodes = (liveNodes != null) ? liveNodes.size() : 0;
@@ -3522,8 +3524,7 @@ public class SolrCLI implements CLIO {
try {
handler.waitFor(3000);
} catch (InterruptedException ie) {
- // safe to ignore ...
- Thread.interrupted();
+ ParWork.propegateInterrupt(ie);
}
if (handler.hasResult() && handler.getExitValue() != 0) {
throw new Exception("Failed to start Solr using command: "+startCmd+" Exception : "+handler.getException());
@@ -4020,6 +4021,7 @@ public class SolrCLI implements CLIO {
log.debug("Solr still up. Waiting before trying again to see if it was stopped");
Thread.sleep(1000L);
} catch (InterruptedException interrupted) {
+ ParWork.propegateInterrupt(interrupted);
timeout = 0; // stop looping
}
} catch (Exception se) {
diff --git a/solr/core/src/java/org/apache/solr/util/TestInjection.java b/solr/core/src/java/org/apache/solr/util/TestInjection.java
index 88242ce..a4a3148 100644
--- a/solr/core/src/java/org/apache/solr/util/TestInjection.java
+++ b/solr/core/src/java/org/apache/solr/util/TestInjection.java
@@ -240,7 +240,7 @@ public class TestInjection {
try {
Thread.sleep(delay * 1000);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
@@ -274,7 +274,7 @@ public class TestInjection {
Random taskRand = random();
Thread.sleep(taskRand.nextInt(1000));
} catch (InterruptedException e) {
-
+ ParWork.propegateInterrupt(e);
}
cthread.interrupt();
@@ -367,7 +367,7 @@ public class TestInjection {
try {
Thread.sleep(rndTime);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
@@ -395,7 +395,7 @@ public class TestInjection {
try {
Thread.sleep(rndTime);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
}
@@ -419,7 +419,7 @@ public class TestInjection {
try {
notifyPauseForeverDone.await();
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
} else {
countPrepRecoveryOpPauseForever.set(0);
@@ -459,7 +459,7 @@ public class TestInjection {
log.info("Waiting in ReplicaMutator for up to 60s");
return splitLatch.await(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
return true;
@@ -471,7 +471,7 @@ public class TestInjection {
log.info("Waiting in DirectUpdateHandler2 for up to 60s");
return directUpdateLatch.await(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
return true;
@@ -500,7 +500,7 @@ public class TestInjection {
log.info("Waiting in ReindexCollectionCmd for up to 60s");
return reindexLatch.await(60, TimeUnit.SECONDS);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
return true;
@@ -526,7 +526,7 @@ public class TestInjection {
log.info("Pausing IndexFetcher for {}ms", delayBeforeSlaveCommitRefresh);
Thread.sleep(delayBeforeSlaveCommitRefresh);
} catch (InterruptedException e) {
- Thread.currentThread().interrupt();
+ ParWork.propegateInterrupt(e);
}
}
return true;