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 2012/09/06 14:19:20 UTC

svn commit: r1381570 - /accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java

Author: ecn
Date: Thu Sep  6 12:19:20 2012
New Revision: 1381570

URL: http://svn.apache.org/viewvc?rev=1381570&view=rev
Log:
ACCUMULO-456: applied ctubbsii patch to check for WALogs

Modified:
    accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java

Modified: accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java?rev=1381570&r1=1381569&r2=1381570&view=diff
==============================================================================
--- accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java (original)
+++ accumulo/trunk/server/src/main/java/org/apache/accumulo/server/master/tableOps/ExportTable.java Thu Sep  6 12:19:20 2012
@@ -69,7 +69,7 @@ class ExportInfo implements Serializable
 class WriteExportFiles extends MasterRepo {
   
   private static final long serialVersionUID = 1L;
-  private ExportInfo tableInfo;
+  private final ExportInfo tableInfo;
   
   WriteExportFiles(ExportInfo tableInfo) {
     this.tableInfo = tableInfo;
@@ -98,13 +98,25 @@ class WriteExportFiles extends MasterRep
     
     Scanner metaScanner = conn.createScanner(Constants.METADATA_TABLE_NAME, Constants.NO_AUTHS);
     metaScanner.setRange(new KeyExtent(new Text(tableInfo.tableID), null, null).toMetadataRange());
+    
+    // scan for locations
     metaScanner.fetchColumnFamily(Constants.METADATA_CURRENT_LOCATION_COLUMN_FAMILY);
+    metaScanner.fetchColumnFamily(Constants.METADATA_FUTURE_LOCATION_COLUMN_FAMILY);
     
-    // TODO look for walogs
-    for (Entry<Key,Value> entry : metaScanner) {
+    if (metaScanner.iterator().hasNext()) {
       return 500;
     }
     
+    // use the same range to check for walogs that we used to check for hosted (or future hosted) tablets
+    // this is done as a separate scan after we check for locations, because walogs are okay only if there is no location
+    metaScanner.clearColumns();
+    metaScanner.fetchColumnFamily(Constants.METADATA_LOG_COLUMN_FAMILY);
+    
+    if (metaScanner.iterator().hasNext()) {
+      throw new ThriftTableOperationException(tableInfo.tableID, tableInfo.tableName, TableOperation.EXPORT, TableOperationExceptionType.OTHER,
+          "Write ahead logs found for table");
+    }
+
     return 0;
   }
 
@@ -277,7 +289,7 @@ class WriteExportFiles extends MasterRep
 public class ExportTable extends MasterRepo {
   private static final long serialVersionUID = 1L;
   
-  private ExportInfo tableInfo;
+  private final ExportInfo tableInfo;
 
   public ExportTable(String tableName, String tableId, String exportDir) {
     tableInfo = new ExportInfo();