You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2015/07/02 22:25:29 UTC
[2/8] accumulo git commit: ACCUMULO-3928 getMinCIdleThreshold might
throw an exception if the table is deleted.
ACCUMULO-3928 getMinCIdleThreshold might throw an exception if the table is deleted.
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/2fa41d00
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/2fa41d00
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/2fa41d00
Branch: refs/heads/1.7
Commit: 2fa41d0099de0cff0722dff8e1f0340cd63777b3
Parents: 985c906
Author: Josh Elser <el...@apache.org>
Authored: Thu Jul 2 14:05:44 2015 -0400
Committer: Josh Elser <el...@apache.org>
Committed: Thu Jul 2 15:26:38 2015 -0400
----------------------------------------------------------------------
.../tabletserver/LargestFirstMemoryManager.java | 24 +++++++++++++++++---
1 file changed, 21 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/2fa41d00/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
----------------------------------------------------------------------
diff --git a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
index 1281c33..260685e 100644
--- a/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
+++ b/server/base/src/main/java/org/apache/accumulo/server/tabletserver/LargestFirstMemoryManager.java
@@ -22,6 +22,7 @@ import java.util.List;
import java.util.Map.Entry;
import java.util.TreeMap;
+import org.apache.accumulo.core.client.TableNotFoundException;
import org.apache.accumulo.core.conf.Property;
import org.apache.accumulo.core.data.KeyExtent;
import org.apache.accumulo.server.conf.ServerConfiguration;
@@ -170,10 +171,27 @@ public class LargestFirstMemoryManager implements MemoryManager {
ingestMemory += memTabletSize;
if (minorCompactingSize == 0 && memTabletSize > 0) {
TabletInfo tabletInfo = new TabletInfo(ts.getExtent(), memTabletSize, idleTime, timeMemoryLoad);
- largestMemTablets.put(timeMemoryLoad, tabletInfo);
- if (idleTime > getMinCIdleThreshold(ts.getExtent())) {
- largestIdleMemTablets.put(timeMemoryLoad, tabletInfo);
+ try {
+ // If the table was deleted, getMinCIdleThreshold will throw an exception
+ if (idleTime > getMinCIdleThreshold(ts.getExtent())) {
+ largestIdleMemTablets.put(timeMemoryLoad, tabletInfo);
+ }
+ } catch (IllegalArgumentException e) {
+ Throwable cause = e.getCause();
+ if (null != cause && cause instanceof TableNotFoundException) {
+ if (log.isTraceEnabled()) {
+ log.trace("Ignoring extent for deleted table: " + ts.getExtent());
+ }
+
+ // The table might have been deleted during the iteration of the tablets
+ // We just want to eat this exception, do nothing with this tablet, and continue
+ continue;
+ }
+
+ throw e;
}
+ // Only place the tablet into largestMemTablets map when the table still exists
+ largestMemTablets.put(timeMemoryLoad, tabletInfo);
}
compactionMemory += minorCompactingSize;