You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by dl...@apache.org on 2021/01/19 13:08:26 UTC
[accumulo] branch main updated: Closes #1689: Don't catch Throwable
(unless it's rethrown) (#1840)
This is an automated email from the ASF dual-hosted git repository.
dlmarion pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/accumulo.git
The following commit(s) were added to refs/heads/main by this push:
new bbd87a6 Closes #1689: Don't catch Throwable (unless it's rethrown) (#1840)
bbd87a6 is described below
commit bbd87a6693fc5cdbbe947b0821a4f05a18cf905b
Author: Dave Marion <dl...@apache.org>
AuthorDate: Tue Jan 19 08:07:07 2021 -0500
Closes #1689: Don't catch Throwable (unless it's rethrown) (#1840)
Changed catch clauses from catching Throwable to catching Exception, unless Throwable was being re-thrown.
---
.../accumulo/core/clientImpl/TableOperationsImpl.java | 8 ++++----
.../core/clientImpl/TabletServerBatchReaderIterator.java | 7 +++++--
.../core/clientImpl/TabletServerBatchWriter.java | 14 +++++++-------
.../java/org/apache/accumulo/fate/zookeeper/ZooLock.java | 6 +++---
.../main/java/org/apache/accumulo/server/ServerUtil.java | 2 +-
.../org/apache/accumulo/server/client/BulkImporter.java | 2 +-
.../accumulo/server/zookeeper/DistributedWorkQueue.java | 2 +-
.../org/apache/accumulo/gc/SimpleGarbageCollector.java | 2 +-
.../src/main/java/org/apache/accumulo/master/Master.java | 6 +++---
.../org/apache/accumulo/master/TabletGroupWatcher.java | 2 +-
.../main/java/org/apache/accumulo/monitor/Monitor.java | 4 ++--
.../org/apache/accumulo/tserver/AssignmentHandler.java | 2 +-
.../java/org/apache/accumulo/tserver/InMemoryMap.java | 2 +-
.../java/org/apache/accumulo/tserver/TabletServer.java | 4 ++--
.../accumulo/tserver/TabletServerResourceManager.java | 4 ++--
.../org/apache/accumulo/tserver/ThriftClientHandler.java | 10 +++++-----
.../org/apache/accumulo/tserver/UnloadTabletHandler.java | 2 +-
.../accumulo/tserver/constraints/ConstraintChecker.java | 16 ++++++----------
.../java/org/apache/accumulo/tserver/log/LogSorter.java | 4 ++--
.../apache/accumulo/tserver/log/RecoveryLogReader.java | 2 +-
.../apache/accumulo/tserver/log/TabletServerLogger.java | 8 ++++----
.../org/apache/accumulo/tserver/scan/LookupTask.java | 2 +-
.../org/apache/accumulo/tserver/scan/NextBatchTask.java | 12 ++++--------
.../java/org/apache/accumulo/tserver/scan/ScanTask.java | 3 +++
.../org/apache/accumulo/tserver/tablet/Compactor.java | 6 +++---
.../accumulo/tserver/tablet/MinorCompactionTask.java | 6 +++---
.../java/org/apache/accumulo/tserver/tablet/Tablet.java | 6 +++---
start/src/main/java/org/apache/accumulo/start/Main.java | 2 +-
.../start/classloader/vfs/AccumuloVFSClassLoader.java | 2 +-
.../apache/accumulo/test/fate/zookeeper/ZooLockIT.java | 2 +-
.../apache/accumulo/test/functional/SplitRecoveryIT.java | 2 +-
.../apache/accumulo/test/functional/ZombieTServer.java | 2 +-
32 files changed, 76 insertions(+), 78 deletions(-)
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 db3b0d1..6cb8eb4 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
@@ -417,10 +417,10 @@ public class TableOperationsImpl extends TableOperationsHelper {
private TableId tableId;
private ExecutorService executor;
private CountDownLatch latch;
- private AtomicReference<Throwable> exception;
+ private AtomicReference<Exception> exception;
SplitEnv(String tableName, TableId tableId, ExecutorService executor, CountDownLatch latch,
- AtomicReference<Throwable> exception) {
+ AtomicReference<Exception> exception) {
this.tableName = tableName;
this.tableId = tableId;
this.executor = executor;
@@ -462,7 +462,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
env.executor.execute(new SplitTask(env, splits.subList(0, mid)));
env.executor.execute(new SplitTask(env, splits.subList(mid + 1, splits.size())));
- } catch (Throwable t) {
+ } catch (Exception t) {
env.exception.compareAndSet(null, t);
}
}
@@ -480,7 +480,7 @@ public class TableOperationsImpl extends TableOperationsHelper {
Collections.sort(splits);
CountDownLatch latch = new CountDownLatch(splits.size());
- AtomicReference<Throwable> exception = new AtomicReference<>(null);
+ AtomicReference<Exception> exception = new AtomicReference<>(null);
ExecutorService executor = ThreadPools.createFixedThreadPool(16, "addSplits", false);
try {
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
index ce900bb..e45e474 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchReaderIterator.java
@@ -389,12 +389,15 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value
fatalException = new TableDeletedException(tableId.canonical());
} catch (SampleNotPresentException e) {
fatalException = e;
- } catch (Throwable t) {
+ } catch (Exception t) {
if (queryThreadPool.isShutdown())
log.debug("Caught exception, but queryThreadPool is shutdown", t);
else
log.warn("Caught exception, but queryThreadPool is not shutdown", t);
fatalException = t;
+ } catch (Throwable t) {
+ fatalException = t;
+ throw t; // let uncaught exception handler deal with the Error
} finally {
semaphore.release();
Thread.currentThread().setName(threadName);
@@ -411,7 +414,7 @@ public class TabletServerBatchReaderIterator implements Iterator<Entry<Key,Value
e.setTableInfo(getTableInfo());
log.debug("{}", e.getMessage(), e);
fatalException = e;
- } catch (Throwable t) {
+ } catch (Exception t) {
log.debug("{}", t.getMessage(), t);
fatalException = t;
}
diff --git a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
index 83f5d98..f90cfca 100644
--- a/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
+++ b/core/src/main/java/org/apache/accumulo/core/clientImpl/TabletServerBatchWriter.java
@@ -92,7 +92,7 @@ import com.google.common.base.Joiner;
* + Flush holds adding of new mutations so it does not wait indefinitely
*
* Considerations
- * + All background threads must catch and note Throwable
+ * + All background threads must catch and note Exception
* + mutations for a single tablet server are only processed by one thread
* concurrently (if new mutations come in for a tablet server while one
* thread is processing mutations for it, no other thread should
@@ -155,7 +155,7 @@ public class TabletServerBatchWriter implements AutoCloseable {
private final FailedMutations failedMutations;
private int unknownErrors = 0;
private boolean somethingFailed = false;
- private Throwable lastUnknownError = null;
+ private Exception lastUnknownError = null;
private static class TimeoutTracker {
@@ -218,8 +218,8 @@ public class TabletServerBatchWriter implements AutoCloseable {
> TabletServerBatchWriter.this.maxLatency)
startProcessing();
}
- } catch (Throwable t) {
- updateUnknownErrors("Max latency task failed " + t.getMessage(), t);
+ } catch (Exception e) {
+ updateUnknownErrors("Max latency task failed " + e.getMessage(), e);
}
}), 0, this.maxLatency / 4, TimeUnit.MILLISECONDS);
}
@@ -524,7 +524,7 @@ public class TabletServerBatchWriter implements AutoCloseable {
log.error("Server side error on {}", server, e);
}
- private synchronized void updateUnknownErrors(String msg, Throwable t) {
+ private synchronized void updateUnknownErrors(String msg, Exception t) {
somethingFailed = true;
unknownErrors++;
this.lastUnknownError = t;
@@ -620,7 +620,7 @@ public class TabletServerBatchWriter implements AutoCloseable {
rf.size());
addFailedMutations(rf);
}
- } catch (Throwable t) {
+ } catch (Exception t) {
updateUnknownErrors("tid=" + Thread.currentThread().getId()
+ " Failed to requeue failed mutations " + t.getMessage(), t);
executor.remove(task);
@@ -804,7 +804,7 @@ public class TabletServerBatchWriter implements AutoCloseable {
}
return;
- } catch (Throwable t) {
+ } catch (Exception t) {
updateUnknownErrors(
"Failed to send tablet server " + location + " its batch : " + t.getMessage(), t);
}
diff --git a/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java b/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
index 872196c..54b6eb3 100644
--- a/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
+++ b/core/src/main/java/org/apache/accumulo/fate/zookeeper/ZooLock.java
@@ -52,7 +52,7 @@ public class ZooLock implements Watcher {
/**
* lost the ability to monitor the lock node, and its status is unknown
*/
- void unableToMonitorLockNode(Throwable e);
+ void unableToMonitorLockNode(Exception e);
}
public interface AsyncLockWatcher extends LockWatcher {
@@ -114,7 +114,7 @@ public class ZooLock implements Watcher {
}
@Override
- public void unableToMonitorLockNode(Throwable e) {
+ public void unableToMonitorLockNode(Exception e) {
lw.unableToMonitorLockNode(e);
}
@@ -288,7 +288,7 @@ public class ZooLock implements Watcher {
else if (asyncLock != null)
failedToAcquireLock();
}
- } catch (Throwable e) {
+ } catch (Exception e) {
lockWatcher.unableToMonitorLockNode(e);
log.error("Failed to stat lock node " + asyncLockPath, e);
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/ServerUtil.java b/server/base/src/main/java/org/apache/accumulo/server/ServerUtil.java
index 9485744..00c53c4 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/ServerUtil.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/ServerUtil.java
@@ -186,7 +186,7 @@ public class ServerUtil {
}
}
}
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("", t);
}
}, 1000, 10 * 60 * 1000, TimeUnit.MILLISECONDS);
diff --git a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
index a23b186..df6d5a3 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/client/BulkImporter.java
@@ -593,7 +593,7 @@ public class BulkImporter {
}
} catch (ThriftSecurityException e) {
throw new AccumuloSecurityException(e.user, e.code, e);
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Encountered unknown exception in assignMapFiles.", t);
throw new AccumuloException(t);
}
diff --git a/server/base/src/main/java/org/apache/accumulo/server/zookeeper/DistributedWorkQueue.java b/server/base/src/main/java/org/apache/accumulo/server/zookeeper/DistributedWorkQueue.java
index be1e7bb..38e4df6 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/zookeeper/DistributedWorkQueue.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/zookeeper/DistributedWorkQueue.java
@@ -152,7 +152,7 @@ public class DistributedWorkQueue {
threadPool.execute(task);
}
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Unexpected error", t);
}
}
diff --git a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
index 738b252..b7a8fc8 100644
--- a/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
+++ b/server/gc/src/main/java/org/apache/accumulo/gc/SimpleGarbageCollector.java
@@ -625,7 +625,7 @@ public class SimpleGarbageCollector extends AbstractServer implements Iface {
}
@Override
- public void unableToMonitorLockNode(final Throwable e) {
+ public void unableToMonitorLockNode(final Exception e) {
// ACCUMULO-3651 Level changed to error and FATAL added to message for slf4j compatibility
Halt.halt(-1, () -> log.error("FATAL: No longer able to monitor lock node ", e));
diff --git a/server/manager/src/main/java/org/apache/accumulo/master/Master.java b/server/manager/src/main/java/org/apache/accumulo/master/Master.java
index f04fbcf..3a9d6ac 100644
--- a/server/manager/src/main/java/org/apache/accumulo/master/Master.java
+++ b/server/manager/src/main/java/org/apache/accumulo/master/Master.java
@@ -781,7 +781,7 @@ public class Master extends AbstractServer
break;
}
}
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Error occurred reading / switching master goal state. Will"
+ " continue with attempt to update status", t);
}
@@ -789,7 +789,7 @@ public class Master extends AbstractServer
try {
wait = updateStatus();
eventListener.waitForEvents(wait);
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Error balancing tablets, will wait for {} (seconds) and then retry ",
WAIT_BETWEEN_ERRORS / ONE_SECOND, t);
sleepUninterruptibly(WAIT_BETWEEN_ERRORS, TimeUnit.MILLISECONDS);
@@ -1354,7 +1354,7 @@ public class Master extends AbstractServer
}
@Override
- public void unableToMonitorLockNode(final Throwable e) {
+ public void unableToMonitorLockNode(final Exception e) {
// ACCUMULO-3651 Changed level to error and added FATAL to message for slf4j compatibility
Halt.halt(-1, () -> log.error("FATAL: No longer able to monitor master lock node", e));
diff --git a/server/manager/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java b/server/manager/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
index be8dbc0..450b623 100644
--- a/server/manager/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
+++ b/server/manager/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java
@@ -493,7 +493,7 @@ abstract class TabletGroupWatcher extends Thread {
Master.log.error(
"Metadata table is inconsistent at {} and all assigned/future tservers are still online.",
row);
- } catch (Throwable e) {
+ } catch (Exception e) {
Master.log.error("Error attempting repair of metadata " + row + ": " + e, e);
}
}
diff --git a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
index 0e625da..df60ab1 100644
--- a/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
+++ b/server/monitor/src/main/java/org/apache/accumulo/monitor/Monitor.java
@@ -423,7 +423,7 @@ public class Monitor extends AbstractServer implements HighlyAvailableService {
server.addServlet(getViewServlet(), "/*");
server.start();
break;
- } catch (Throwable ex) {
+ } catch (Exception ex) {
log.error("Unable to start embedded web server", ex);
}
}
@@ -666,7 +666,7 @@ public class Monitor extends AbstractServer implements HighlyAvailableService {
}
@Override
- public void unableToMonitorLockNode(final Throwable e) {
+ public void unableToMonitorLockNode(final Exception e) {
Halt.halt(-1, () -> log.error("No longer able to monitor Monitor lock node", e));
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
index 3bb08d4..66f09f1 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/AssignmentHandler.java
@@ -188,7 +188,7 @@ class AssignmentHandler implements Runnable {
}
tablet = null; // release this reference
successful = true;
- } catch (Throwable e) {
+ } catch (Exception e) {
log.warn("exception trying to assign tablet {} {}", extent, locationToOpen, e);
if (e.getMessage() != null) {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
index f1dddd6..075a96f 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/InMemoryMap.java
@@ -159,7 +159,7 @@ public class InMemoryMap {
if (useNativeMap && NativeMap.isLoaded()) {
try {
return new NativeMapWrapper();
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Failed to create native map", t);
}
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
index 7899165..bd0ec23 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServer.java
@@ -446,7 +446,7 @@ public class TabletServer extends AbstractServer {
tablet.checkIfMinorCompactionNeededForLogs(closedCopy);
}
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Unexpected exception in {}", Thread.currentThread().getName(), t);
sleepUninterruptibly(1, TimeUnit.SECONDS);
}
@@ -654,7 +654,7 @@ public class TabletServer extends AbstractServer {
}
@Override
- public void unableToMonitorLockNode(final Throwable e) {
+ public void unableToMonitorLockNode(final Exception e) {
Halt.halt(1, () -> log.error("Lost ability to monitor tablet server lock, exiting.", e));
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
index 2db0e39..f011ea5 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/TabletServerResourceManager.java
@@ -541,7 +541,7 @@ public class TabletServerResourceManager {
ArrayList<TabletMemoryReport> tabletStates = new ArrayList<>(tabletReportsCopy.values());
tabletsToMinorCompact = memoryManager.tabletsToMinorCompact(tabletStates);
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Memory manager failed {}", t.getMessage(), t);
}
@@ -581,7 +581,7 @@ public class TabletServerResourceManager {
// log.debug("mma.tabletsToMinorCompact = "+mma.tabletsToMinorCompact);
}
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Minor compactions for memory management failed", t);
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/ThriftClientHandler.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/ThriftClientHandler.java
index 26a4cab..228ec83 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/ThriftClientHandler.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/ThriftClientHandler.java
@@ -401,7 +401,7 @@ class ThriftClientHandler extends ClientServiceHandler implements TabletClientSe
long timeout = server.getConfiguration().getTimeInMillis(Property.TSERV_CLIENT_TIMEOUT);
server.sessionManager.removeIfNotAccessed(scanID, timeout);
return new ScanResult(param, true);
- } catch (Throwable t) {
+ } catch (Exception t) {
server.sessionManager.removeSession(scanID);
log.warn("Failed to get next batch", t);
throw new RuntimeException(t);
@@ -569,7 +569,7 @@ class ThriftClientHandler extends ClientServiceHandler implements TabletClientSe
Map<TKeyExtent,List<TRange>> failures = Collections.emptyMap();
List<TKeyExtent> fullScans = Collections.emptyList();
return new MultiScanResult(results, failures, fullScans, null, null, false, true);
- } catch (Throwable t) {
+ } catch (Exception t) {
server.sessionManager.removeSession(scanID);
log.warn("Failed to get multiscan result", t);
throw new RuntimeException(t);
@@ -769,7 +769,7 @@ class ThriftClientHandler extends ClientServiceHandler implements TabletClientSe
mutationCount += mutations.size();
}
- } catch (Throwable t) {
+ } catch (Exception t) {
error = t;
log.error("Unexpected error preparing for commit", error);
break;
@@ -800,7 +800,7 @@ class ThriftClientHandler extends ClientServiceHandler implements TabletClientSe
break;
} catch (IOException | FSError ex) {
log.warn("logging mutations failed, retrying");
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Unknown exception logging mutations, counts"
+ " for mutations in flight not decremented!", t);
throw new RuntimeException(t);
@@ -1100,7 +1100,7 @@ class ThriftClientHandler extends ClientServiceHandler implements TabletClientSe
break;
} catch (IOException | FSError ex) {
log.warn("logging mutations failed, retrying");
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Unknown exception logging mutations, counts for"
+ " mutations in flight not decremented!", t);
throw new RuntimeException(t);
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
index b3798a9..f77bbfe 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/UnloadTabletHandler.java
@@ -89,7 +89,7 @@ class UnloadTabletHandler implements Runnable {
try {
t.close(!goalState.equals(TUnloadTabletGoal.DELETED));
- } catch (Throwable e) {
+ } catch (Exception e) {
if ((t.isClosing() || t.isClosed()) && e instanceof IllegalStateException) {
log.debug("Failed to unload tablet {}... it was already closing or closed : {}", extent,
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
index 51e4cc6..773f525 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/constraints/ConstraintChecker.java
@@ -18,7 +18,6 @@
*/
package org.apache.accumulo.tserver.constraints;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map.Entry;
@@ -62,7 +61,7 @@ public class ConstraintChecker {
}
}
- } catch (Throwable e) {
+ } catch (Exception e) {
constrains.clear();
constrains.add(new UnsatisfiableConstraint((short) -1,
"Failed to load constraints, not accepting mutations."));
@@ -108,25 +107,22 @@ public class ConstraintChecker {
constraint.getViolationDescription(vcode), 1));
}
}
- } catch (Throwable throwable) {
- log.warn("CONSTRAINT FAILED : {}", throwable.getMessage(), throwable);
+ } catch (Exception e) {
+ log.warn("CONSTRAINT FAILED : {}", e.getMessage(), e);
// constraint failed in some way, do not allow mutation to pass
short vcode;
String msg;
- if (throwable instanceof NullPointerException) {
+ if (e instanceof NullPointerException) {
vcode = -1;
msg = "threw NullPointerException";
- } else if (throwable instanceof ArrayIndexOutOfBoundsException) {
+ } else if (e instanceof ArrayIndexOutOfBoundsException) {
vcode = -2;
msg = "threw ArrayIndexOutOfBoundsException";
- } else if (throwable instanceof NumberFormatException) {
+ } else if (e instanceof NumberFormatException) {
vcode = -3;
msg = "threw NumberFormatException";
- } else if (throwable instanceof IOException) {
- vcode = -4;
- msg = "threw IOException (or subclass of)";
} else {
vcode = -100;
msg = "threw some Exception";
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
index 97de8ea..9155e89 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/LogSorter.java
@@ -152,7 +152,7 @@ public class LogSorter {
fs.create(new Path(destPath, "finished")).close();
log.info("Finished log sort {} {} bytes {} parts in {}ms", name, getBytesCopied(), part,
getSortTime());
- } catch (Throwable t) {
+ } catch (Exception t) {
try {
// parent dir may not exist
fs.mkdirs(new Path(destPath));
@@ -160,7 +160,7 @@ public class LogSorter {
} catch (IOException e) {
log.error("Error creating failed flag file " + name, e);
}
- log.error("Caught throwable", t);
+ log.error("Caught exception", t);
} finally {
Thread.currentThread().setName(formerThreadName);
try {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/RecoveryLogReader.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/RecoveryLogReader.java
index 041f103..4afa85d 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/RecoveryLogReader.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/RecoveryLogReader.java
@@ -67,7 +67,7 @@ public class RecoveryLogReader implements CloseableIterator<Entry<LogFileKey,Log
private static Object create(java.lang.Class<?> klass) {
try {
return klass.getConstructor().newInstance();
- } catch (Throwable t) {
+ } catch (Exception t) {
throw new RuntimeException("Unable to construct objects to use for comparison");
}
}
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 739d5ba..0c4e1c2 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
@@ -363,15 +363,15 @@ public class TabletServerLogger {
currentLog.close();
} catch (DfsLogger.LogClosedException ex) {
// ignore
- } catch (Throwable ex) {
+ } catch (Exception ex) {
log.error("Unable to cleanly close log " + currentLog.getFileName() + ": " + ex, ex);
} finally {
this.tserver.walogClosed(currentLog);
+ currentLog = null;
+ logSizeEstimate.set(0);
}
- currentLog = null;
- logSizeEstimate.set(0);
}
- } catch (Throwable t) {
+ } catch (Exception t) {
throw new IOException(t);
}
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
index 9a2a129..a3c1a34 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/LookupTask.java
@@ -177,7 +177,7 @@ public class LookupTask extends ScanTask<MultiScanResult> {
}
} catch (SampleNotPresentException e) {
addResult(e);
- } catch (Throwable e) {
+ } catch (Exception e) {
log.warn("exception while doing multi-scan ", e);
addResult(e);
} finally {
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
index e3a6de4..a950290 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/NextBatchTask.java
@@ -18,11 +18,11 @@
*/
package org.apache.accumulo.tserver.scan;
+import java.io.IOException;
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.accumulo.core.client.SampleNotPresentException;
import org.apache.accumulo.core.iterators.IterationInterruptedException;
-import org.apache.accumulo.core.util.Halt;
import org.apache.accumulo.tserver.TabletServer;
import org.apache.accumulo.tserver.TooManyFilesException;
import org.apache.accumulo.tserver.session.SingleScanSession;
@@ -89,13 +89,9 @@ public class NextBatchTask extends ScanTask<ScanBatch> {
}
} catch (TooManyFilesException | SampleNotPresentException e) {
addResult(e);
- } catch (OutOfMemoryError ome) {
- Halt.halt("Ran out of memory scanning " + scanSession.extent + " for " + scanSession.client,
- 1);
- addResult(ome);
- } catch (Throwable e) {
- log.warn("exception while scanning tablet "
- + (scanSession == null ? "(unknown)" : scanSession.extent), e);
+ } catch (IOException | RuntimeException e) {
+ log.warn("exception while scanning tablet {} for {}", scanSession.extent, scanSession.client,
+ e);
addResult(e);
} finally {
runState.set(ScanRunState.FINISHED);
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/ScanTask.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/ScanTask.java
index ea17bd2..dc28214 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/ScanTask.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/scan/ScanTask.java
@@ -127,6 +127,9 @@ public abstract class ScanTask<T> implements RunnableFuture<T> {
// returned
resultQueue = null;
+ if (r instanceof Error)
+ throw (Error) r; // don't wrap an Error
+
if (r instanceof Throwable)
throw new ExecutionException((Throwable) r);
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
index 0da9213..58c2e98 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/Compactor.java
@@ -309,7 +309,7 @@ public class Compactor implements Callable<CompactionStats> {
iters.add(iter);
- } catch (Throwable e) {
+ } catch (Exception e) {
ProblemReports.getInstance(context).report(
new ProblemReport(extent.tableId(), ProblemType.FILE_READ, mapFile.getPathStr(), e));
@@ -319,7 +319,7 @@ public class Compactor implements Callable<CompactionStats> {
for (FileSKVIterator reader : readers) {
try {
reader.close();
- } catch (Throwable e2) {
+ } catch (Exception e2) {
log.warn("Failed to close map file", e2);
}
}
@@ -413,7 +413,7 @@ public class Compactor implements Callable<CompactionStats> {
for (FileSKVIterator reader : readers) {
try {
reader.close();
- } catch (Throwable e) {
+ } catch (Exception e) {
log.warn("Failed to close map file", e);
}
}
diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
index 83d060f..5a2243b 100644
--- a/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
+++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/tablet/MinorCompactionTask.java
@@ -111,9 +111,9 @@ class MinorCompactionTask implements Runnable {
if (tablet.needsSplit()) {
tablet.getTabletServer().executeSplit(tablet);
}
- } catch (Throwable t) {
- log.error("Unknown error during minor compaction for extent: " + tablet.getExtent(), t);
- throw new RuntimeException(t);
+ } catch (Exception e) {
+ log.error("Unknown error during minor compaction for extent: {}", tablet.getExtent(), e);
+ throw e;
} finally {
tablet.minorCompactionComplete();
}
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 d235171..cf08e26 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
@@ -387,7 +387,7 @@ public class Tablet {
}
}
- } catch (Throwable t) {
+ } catch (Exception t) {
String msg = "Error recovering tablet " + extent + " from log files";
if (tableConfiguration.getBoolean(Property.TABLE_FAILURES_IGNORE)) {
log.warn(msg, t);
@@ -795,7 +795,7 @@ public class Tablet {
Thread.currentThread().setName(oldName);
try {
getTabletMemory().finalizeMinC();
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Failed to free tablet memory on {}", extent, t);
}
@@ -1298,7 +1298,7 @@ public class Tablet {
try {
getTabletMemory().getMemTable().delete(0);
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Failed to delete mem table : " + t.getMessage() + " for tablet " + extent, t);
}
diff --git a/start/src/main/java/org/apache/accumulo/start/Main.java b/start/src/main/java/org/apache/accumulo/start/Main.java
index 0dcdbec..bec8070 100644
--- a/start/src/main/java/org/apache/accumulo/start/Main.java
+++ b/start/src/main/java/org/apache/accumulo/start/Main.java
@@ -148,7 +148,7 @@ public class Main {
Method main = null;
try {
main = classWithMain.getMethod("main", args.getClass());
- } catch (Throwable t) {
+ } catch (Exception t) {
log.error("Could not run main method on '" + classWithMain.getName() + "'.", t);
}
if (main == null || !Modifier.isPublic(main.getModifiers())
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
index 4a1390a..00c6ec1 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
@@ -391,7 +391,7 @@ public class AccumuloVFSClassLoader {
}
}
out.print("\n");
- } catch (Throwable t) {
+ } catch (Exception t) {
throw new RuntimeException(t);
}
}
diff --git a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooLockIT.java b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooLockIT.java
index 4060e10..d3cb5e3 100644
--- a/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooLockIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/fate/zookeeper/ZooLockIT.java
@@ -105,7 +105,7 @@ public class ZooLockIT extends SharedMiniClusterBase {
}
@Override
- public synchronized void unableToMonitorLockNode(Throwable e) {
+ public synchronized void unableToMonitorLockNode(Exception e) {
changes++;
this.notifyAll();
}
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
index de0120f..a43f2ba 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/SplitRecoveryIT.java
@@ -108,7 +108,7 @@ public class SplitRecoveryIT extends ConfigurableMacBase {
@SuppressFBWarnings(value = "DM_EXIT",
justification = "System.exit() is a bad idea here, but okay for now, since it's a test")
@Override
- public void unableToMonitorLockNode(Throwable e) {
+ public void unableToMonitorLockNode(Exception e) {
System.exit(-1);
}
}, "foo".getBytes(UTF_8));
diff --git a/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java b/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
index f91937d..658b721 100644
--- a/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
+++ b/test/src/main/java/org/apache/accumulo/test/functional/ZombieTServer.java
@@ -138,7 +138,7 @@ public class ZombieTServer {
@SuppressFBWarnings(value = "DM_EXIT",
justification = "System.exit() is a bad idea here, but okay for now, since it's a test")
@Override
- public void unableToMonitorLockNode(Throwable e) {
+ public void unableToMonitorLockNode(Exception e) {
try {
tch.halt(TraceUtil.traceInfo(), null, null);
} catch (Exception ex) {