ACCUMULO-3181 VolumeChooser usage doesn't always comply with implied API contract
Signed-off-by: Sean Busbey <bus...@cloudera.com> Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/ca083a5b Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/ca083a5b Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/ca083a5b Branch: refs/heads/master Commit: ca083a5b864b57650073204344bd5461d2a3d78e Parents: 6c68de8 Author: Jenna Huston <jenna.husto...@gmail.com> Authored: Thu Oct 9 14:07:33 2014 -0400 Committer: Sean Busbey <bus...@cloudera.com> Committed: Wed Oct 29 02:12:56 2014 -0500 ---------------------------------------------------------------------- .../org/apache/accumulo/server/ServerConstants.java | 4 ---- .../java/org/apache/accumulo/server/fs/VolumeUtil.java | 3 ++- .../org/apache/accumulo/server/init/Initialize.java | 13 ++++++++----- .../java/org/apache/accumulo/server/util/FileUtil.java | 4 ++-- .../apache/accumulo/server/util/MetadataTableUtil.java | 3 ++- .../apache/accumulo/server/util/TabletOperations.java | 2 +- .../main/java/org/apache/accumulo/master/Master.java | 2 +- .../org/apache/accumulo/master/TabletGroupWatcher.java | 6 +++--- .../apache/accumulo/master/tableOps/CreateTable.java | 3 ++- .../org/apache/accumulo/tserver/log/DfsLogger.java | 3 ++- 10 files changed, 23 insertions(+), 20 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/ServerConstants.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/ServerConstants.java b/server/base/src/main/java/org/apache/accumulo/server/ServerConstants.java index 10a864c..880e2db 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/ServerConstants.java +++ b/server/base/src/main/java/org/apache/accumulo/server/ServerConstants.java @@ -143,10 +143,6 @@ public class ServerConstants { return VolumeConfiguration.prefix(getTablesDirs(), MetadataTable.ID); } - public static String[] getTemporaryDirs() { - return VolumeConfiguration.prefix(getBaseUris(), "tmp"); - } - public static synchronized List<Pair<Path,Path>> getVolumeReplacements() { if (replacementsList == null) { http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java index c87074b..ea69f80 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/fs/VolumeUtil.java @@ -248,7 +248,8 @@ public class VolumeUtil { throw new IllegalArgumentException("Unexpected table dir " + dir); } - Path newDir = new Path(vm.choose(ServerConstants.getTablesDirs()) + "/" + dir.getParent().getName() + "/" + dir.getName()); + Path newDir = new Path(vm.choose(ServerConstants.getBaseUris()) + Path.SEPARATOR + ServerConstants.TABLE_DIR + Path.SEPARATOR + dir.getParent().getName() + + Path.SEPARATOR + dir.getName()); log.info("Updating directory for " + extent + " from " + dir + " to " + newDir); if (extent.isRootTablet()) { http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java index fcecc37..14d5e98 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java +++ b/server/base/src/main/java/org/apache/accumulo/server/init/Initialize.java @@ -224,9 +224,10 @@ public class Initialize { UUID uuid = UUID.randomUUID(); // the actual disk locations of the root table and tablets - String[] configuredTableDirs = VolumeConfiguration.prefix(VolumeConfiguration.getVolumeUris(ServerConfiguration.getSiteConfiguration()), - ServerConstants.TABLE_DIR); - final Path rootTablet = new Path(fs.choose(configuredTableDirs) + "/" + RootTable.ID + RootTable.ROOT_TABLET_LOCATION); + String[] configuredVolumes = VolumeConfiguration.getVolumeUris(ServerConfiguration.getSiteConfiguration()); + final Path rootTablet = new Path(fs.choose(configuredVolumes) + Path.SEPARATOR + ServerConstants.TABLE_DIR + Path.SEPARATOR + RootTable.ID + + RootTable.ROOT_TABLET_LOCATION); + try { initZooKeeper(opts, uuid.toString(), instanceNamePath, rootTablet); } catch (Exception e) { @@ -305,8 +306,10 @@ public class Initialize { // the actual disk locations of the metadata table and tablets final Path[] metadataTableDirs = paths(ServerConstants.getMetadataTableDirs()); - String tableMetadataTabletDir = fs.choose(VolumeConfiguration.prefix(ServerConstants.getMetadataTableDirs(), TABLE_TABLETS_TABLET_DIR)); - String defaultMetadataTabletDir = fs.choose(VolumeConfiguration.prefix(ServerConstants.getMetadataTableDirs(), Constants.DEFAULT_TABLET_LOCATION)); + String tableMetadataTabletDir = fs.choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + MetadataTable.ID + + TABLE_TABLETS_TABLET_DIR; + String defaultMetadataTabletDir = fs.choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + MetadataTable.ID + + Constants.DEFAULT_TABLET_LOCATION; // initialize initial metadata config in zookeeper initMetadataConfig(); http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java index 0f7ac22..aa37e35 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/FileUtil.java @@ -79,11 +79,11 @@ public class FileUtil { private static final Logger log = Logger.getLogger(FileUtil.class); private static Path createTmpDir(AccumuloConfiguration acuConf, VolumeManager fs) throws IOException { - String accumuloDir = fs.choose(ServerConstants.getTemporaryDirs()); + String accumuloDir = fs.choose(ServerConstants.getBaseUris()); Path result = null; while (result == null) { - result = new Path(accumuloDir + "/tmp/idxReduce_" + String.format("%09d", new Random().nextInt(Integer.MAX_VALUE))); + result = new Path(accumuloDir + Path.SEPARATOR + "tmp/idxReduce_" + String.format("%09d", new Random().nextInt(Integer.MAX_VALUE))); try { fs.getFileStatus(result); http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java index f908d25..03635cc 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/MetadataTableUtil.java @@ -880,9 +880,10 @@ public class MetadataTableUtil { Key k = entry.getKey(); Mutation m = new Mutation(k.getRow()); m.putDelete(k.getColumnFamily(), k.getColumnQualifier()); - String dir = volumeManager.choose(ServerConstants.getTablesDirs()) + "/" + tableId + String dir = volumeManager.choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + tableId + new String(FastFormat.toZeroPaddedString(dirCount++, 8, 16, Constants.CLONE_PREFIX_BYTES)); TabletsSection.ServerColumnFamily.DIRECTORY_COLUMN.put(m, new Value(dir.getBytes(Constants.UTF8))); + bw.addMutation(m); } http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/base/src/main/java/org/apache/accumulo/server/util/TabletOperations.java ---------------------------------------------------------------------- diff --git a/server/base/src/main/java/org/apache/accumulo/server/util/TabletOperations.java b/server/base/src/main/java/org/apache/accumulo/server/util/TabletOperations.java index b8e7113..2c9fe9c 100644 --- a/server/base/src/main/java/org/apache/accumulo/server/util/TabletOperations.java +++ b/server/base/src/main/java/org/apache/accumulo/server/util/TabletOperations.java @@ -38,7 +38,7 @@ public class TabletOperations { String lowDirectory; UniqueNameAllocator namer = UniqueNameAllocator.getInstance(); - String volume = fs.choose(ServerConstants.getTablesDirs()); + String volume = fs.choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR; while (true) { try { http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/master/src/main/java/org/apache/accumulo/master/Master.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/Master.java b/server/master/src/main/java/org/apache/accumulo/master/Master.java index 52f116f..ce4bc41 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/Master.java +++ b/server/master/src/main/java/org/apache/accumulo/master/Master.java @@ -236,7 +236,7 @@ public class Master implements LiveTServerSet.Listener, TableObserver, CurrentSt if (!zoo.exists(dirZPath)) { Path oldPath = fs.getFullPath(FileType.TABLE, "/" + MetadataTable.ID + "/root_tablet"); if (fs.exists(oldPath)) { - String newPath = fs.choose(ServerConstants.getTablesDirs()) + "/" + RootTable.ID; + String newPath = fs.choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + RootTable.ID; fs.mkdirs(new Path(newPath)); if (!fs.rename(oldPath, new Path(newPath))) { throw new IOException("Failed to move root tablet from " + oldPath + " to " + newPath); http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java index 0a3d1d0..f5ed941 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java +++ b/server/master/src/main/java/org/apache/accumulo/master/TabletGroupWatcher.java @@ -550,9 +550,9 @@ class TabletGroupWatcher extends Daemon { } else { // Recreate the default tablet to hold the end of the table Master.log.debug("Recreating the last tablet to point to " + extent.getPrevEndRow()); - String tdir = master.getFileSystem().choose(ServerConstants.getTablesDirs()) + "/" + extent.getTableId() + Constants.DEFAULT_TABLET_LOCATION; - MetadataTableUtil.addTablet(new KeyExtent(extent.getTableId(), null, extent.getPrevEndRow()), tdir, - SystemCredentials.get(), timeType, this.master.masterLock); + String tdir = master.getFileSystem().choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + extent.getTableId() + + Constants.DEFAULT_TABLET_LOCATION; + MetadataTableUtil.addTablet(new KeyExtent(extent.getTableId(), null, extent.getPrevEndRow()), tdir, SystemCredentials.get(), timeType, this.master.masterLock); } } catch (Exception ex) { throw new AccumuloException(ex); http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java ---------------------------------------------------------------------- diff --git a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java index 5b64053..45164e1 100644 --- a/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java +++ b/server/master/src/main/java/org/apache/accumulo/master/tableOps/CreateTable.java @@ -176,7 +176,8 @@ class ChooseDir extends MasterRepo { @Override public Repo<Master> call(long tid, Master master) throws Exception { // Constants.DEFAULT_TABLET_LOCATION has a leading slash prepended to it so we don't need to add one here - tableInfo.dir = master.getFileSystem().choose(ServerConstants.getTablesDirs()) + "/" + tableInfo.tableId + Constants.DEFAULT_TABLET_LOCATION; + tableInfo.dir = master.getFileSystem().choose(ServerConstants.getBaseUris()) + Constants.HDFS_TABLES_DIR + Path.SEPARATOR + tableInfo.tableId + + Constants.DEFAULT_TABLET_LOCATION; return new CreateDir(tableInfo); } http://git-wip-us.apache.org/repos/asf/accumulo/blob/ca083a5b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java ---------------------------------------------------------------------- diff --git a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java index 2bd0b47..0e02f05 100644 --- a/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java +++ b/server/tserver/src/main/java/org/apache/accumulo/tserver/log/DfsLogger.java @@ -351,7 +351,8 @@ public class DfsLogger { log.debug("DfsLogger.open() begin"); VolumeManager fs = conf.getFileSystem(); - logPath = fs.choose(ServerConstants.getWalDirs()) + "/" + logger + "/" + filename; + logPath = fs.choose(ServerConstants.getBaseUris()) + Path.SEPARATOR + ServerConstants.WAL_DIR + Path.SEPARATOR + logger + Path.SEPARATOR + filename; + metaReference = toString(); try { short replication = (short) conf.getConfiguration().getCount(Property.TSERV_WAL_REPLICATION);