You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2013/03/22 15:13:15 UTC

svn commit: r1459788 - in /accumulo/branches/1.5/core/src: main/java/org/apache/accumulo/core/util/TableDiskUsage.java test/java/org/apache/accumulo/core/util/shell/ShellTest.java

Author: ecn
Date: Fri Mar 22 14:13:15 2013
New Revision: 1459788

URL: http://svn.apache.org/r1459788
Log:
ACCUMULO-1192 applying Kevin Faro's patch to fix du on an empty table

Modified:
    accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/util/TableDiskUsage.java
    accumulo/branches/1.5/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java

Modified: accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/util/TableDiskUsage.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/util/TableDiskUsage.java?rev=1459788&r1=1459787&r2=1459788&view=diff
==============================================================================
--- accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/util/TableDiskUsage.java (original)
+++ accumulo/branches/1.5/core/src/main/java/org/apache/accumulo/core/util/TableDiskUsage.java Fri Mar 22 14:13:15 2013
@@ -144,12 +144,17 @@ public class TableDiskUsage {
       tdu.addTable(tableId);
     
     HashSet<String> tablesReferenced = new HashSet<String>(tableIds);
+    HashSet<String> emptyTableIds = new HashSet<String>();
     
     for (String tableId : tableIds) {
       Scanner mdScanner = conn.createScanner(Constants.METADATA_TABLE_NAME, Constants.NO_AUTHS);
       mdScanner.fetchColumnFamily(Constants.METADATA_DATAFILE_COLUMN_FAMILY);
       mdScanner.setRange(new KeyExtent(new Text(tableId), null, null).toMetadataRange());
       
+      if(!mdScanner.iterator().hasNext()) {
+        emptyTableIds.add(tableId);
+      }
+      
       for (Entry<Key,Value> entry : mdScanner) {
         String file = entry.getKey().getColumnQualifier().toString();
         if (file.startsWith("../")) {
@@ -215,6 +220,14 @@ public class TableDiskUsage {
       
       usage.put(tableNames, entry.getValue());
     }
+
+    if(!emptyTableIds.isEmpty()) {
+      TreeSet<String> emptyTables = new TreeSet<String>();
+      for (String tableId : emptyTableIds) {
+        emptyTables.add(reverseTableIdMap.get(tableId));
+      }
+      usage.put(emptyTables, 0L);
+    }
     
     for (Entry<TreeSet<String>,Long> entry : usage.entrySet())
       printer.print(String.format("%,24d %s", entry.getValue(), entry.getKey()));

Modified: accumulo/branches/1.5/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java
URL: http://svn.apache.org/viewvc/accumulo/branches/1.5/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java?rev=1459788&r1=1459787&r2=1459788&view=diff
==============================================================================
--- accumulo/branches/1.5/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java (original)
+++ accumulo/branches/1.5/core/src/test/java/org/apache/accumulo/core/util/shell/ShellTest.java Fri Mar 22 14:13:15 2013
@@ -165,4 +165,21 @@ public class ShellTest {
     //exec("createuser root", false, "user exists");
   }
   
+  @Test
+  public void duTest() throws IOException {
+    Shell.log.debug("Starting DU test --------------------------");
+    exec("createtable t", true);
+    exec("du t", true, "0 [t]");
+    exec("deletetable t -f", true, "Table: [t] has been deleted");
+  }
+  
+  @Test
+  public void duPatternTest() throws IOException {
+    Shell.log.debug("Starting DU with pattern test --------------------------");
+    exec("createtable t", true);
+    exec("createtable tt", true);
+    exec("du -p t.*", true, "0 [t, tt]");
+    exec("deletetable t -f", true, "Table: [t] has been deleted");
+    exec("deletetable tt -f", true, "Table: [tt] has been deleted");
+  }
 }