Author: kturner Date: Fri May 11 15:29:28 2012 New Revision: 1337210 URL: http://svn.apache.org/viewvc?rev=1337210&view=rev Log: ACCUMULO-591 Clear tablet location cache before computing map reduce input splits
Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java?rev=1337210&r1=1337209&r2=1337210&view=diff ============================================================================== --- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java (original) +++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/admin/TableOperationsImpl.java Fri May 11 15:29:28 2012 @@ -848,6 +848,8 @@ public class TableOperationsImpl extends Map<String,Map<KeyExtent,List<Range>>> binnedRanges = new HashMap<String,Map<KeyExtent,List<Range>>>(); String tableId = Tables.getTableId(instance, tableName); TabletLocator tl = TabletLocator.getInstance(instance, credentials, new Text(tableId)); + // its possible that the cache could contain complete, but old information about a tables tablets... so clear it + tl.invalidateCache(); while (!tl.binRanges(Collections.singletonList(range), binnedRanges).isEmpty()) { if (!Tables.exists(instance, tableId)) throw new TableDeletedException(tableId); @@ -858,6 +860,7 @@ public class TableOperationsImpl extends // sleep randomly between 100 and 200ms UtilWaitThread.sleep(100 + (int) (Math.random() * 100)); binnedRanges.clear(); + tl.invalidateCache(); } // group key extents to get <= maxSplits Modified: accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java URL: http://svn.apache.org/viewvc/accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java?rev=1337210&r1=1337209&r2=1337210&view=diff ============================================================================== --- accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java (original) +++ accumulo/trunk/core/src/main/java/org/apache/accumulo/core/client/mapreduce/InputFormatBase.java Fri May 11 15:29:28 2012 @@ -963,6 +963,8 @@ public abstract class InputFormatBase<K, Instance instance = getInstance(conf); String tableId = null; tl = getTabletLocator(conf); + // its possible that the cache could contain complete, but old information about a tables tablets... so clear it + tl.invalidateCache(); while (!tl.binRanges(ranges, binnedRanges).isEmpty()) { if (!(instance instanceof MockInstance)) { if (tableId == null) @@ -975,6 +977,7 @@ public abstract class InputFormatBase<K, binnedRanges.clear(); log.warn("Unable to locate bins for specified ranges. Retrying."); UtilWaitThread.sleep(100 + (int) (Math.random() * 100)); // sleep randomly between 100 and 200 ms + tl.invalidateCache(); } } } catch (Exception e) {