You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ct...@apache.org on 2014/12/18 22:55:39 UTC

[1/7] accumulo git commit: ACCUMULO-3265 Add bootstrap_config.sh to README

Repository: accumulo
Updated Branches:
  refs/heads/1.6 8f852e2ef -> d2aeb5ef2
  refs/heads/master aa73e7f45 -> 79c0a5eac


ACCUMULO-3265 Add bootstrap_config.sh to README


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/e572d56b
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/e572d56b
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/e572d56b

Branch: refs/heads/1.6
Commit: e572d56ba5437410be5d1936e8f1d7c2fcf792ab
Parents: 8f852e2
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Dec 18 16:44:16 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:44:16 2014 -0500

----------------------------------------------------------------------
 README | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e572d56b/README
----------------------------------------------------------------------
diff --git a/README b/README
index b44c45f..39ef45a 100644
--- a/README
+++ b/README
@@ -232,11 +232,21 @@ Additionally, it is strongly recommended that you enable 'dfs.datanode.synconclo
 file to ensure that, in the face of unexpected power loss to a datanode, files are 
 wholly synced to disk.
 
-The example accumulo configuration files are placed in directories based on the 
-memory footprint for the accumulo processes.  If you are using native libraries
-for you tablet server in-memory map, then you can use the files in "native-standalone".
-If you get warnings about not being able to load the native libraries, you can
-use the configuration files in "standalone".
+Accumulo's own configuration files can be bootstrapped with the
+$ACCUMULO_HOME/bin/bootstrap_config.sh script. This script will allow you to
+select options which correspond closely to your particular environment. The
+configuration files produced by this script are examples. You should always
+inspect any configuration files you use to ensure they are appropriate for your
+environment, and to tailor them to your needs, as they are not guaranteed to be
+suitable for all users and all environments.
+
+Some example accumulo configuration files are placed in directories based on the
+memory footprint for the accumulo processes. These are pre-generated from
+particular selections from the bootstrap_config.sh script for your convenience.
+If you are using native libraries for you tablet server in-memory map, then you
+can use the files in "native-standalone".  If you get warnings about not being
+able to load the native libraries, you can use the configuration files in
+"standalone".
 
 For testing on a single computer, use a fairly small configuration:
 


[2/7] accumulo git commit: ACCUMULO-3265 Add bootstrap_config.sh to README

Posted by ct...@apache.org.
ACCUMULO-3265 Add bootstrap_config.sh to README


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/e572d56b
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/e572d56b
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/e572d56b

Branch: refs/heads/master
Commit: e572d56ba5437410be5d1936e8f1d7c2fcf792ab
Parents: 8f852e2
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Dec 18 16:44:16 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:44:16 2014 -0500

----------------------------------------------------------------------
 README | 20 +++++++++++++++-----
 1 file changed, 15 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/e572d56b/README
----------------------------------------------------------------------
diff --git a/README b/README
index b44c45f..39ef45a 100644
--- a/README
+++ b/README
@@ -232,11 +232,21 @@ Additionally, it is strongly recommended that you enable 'dfs.datanode.synconclo
 file to ensure that, in the face of unexpected power loss to a datanode, files are 
 wholly synced to disk.
 
-The example accumulo configuration files are placed in directories based on the 
-memory footprint for the accumulo processes.  If you are using native libraries
-for you tablet server in-memory map, then you can use the files in "native-standalone".
-If you get warnings about not being able to load the native libraries, you can
-use the configuration files in "standalone".
+Accumulo's own configuration files can be bootstrapped with the
+$ACCUMULO_HOME/bin/bootstrap_config.sh script. This script will allow you to
+select options which correspond closely to your particular environment. The
+configuration files produced by this script are examples. You should always
+inspect any configuration files you use to ensure they are appropriate for your
+environment, and to tailor them to your needs, as they are not guaranteed to be
+suitable for all users and all environments.
+
+Some example accumulo configuration files are placed in directories based on the
+memory footprint for the accumulo processes. These are pre-generated from
+particular selections from the bootstrap_config.sh script for your convenience.
+If you are using native libraries for you tablet server in-memory map, then you
+can use the files in "native-standalone".  If you get warnings about not being
+able to load the native libraries, you can use the configuration files in
+"standalone".
 
 For testing on a single computer, use a fairly small configuration:
 


[6/7] accumulo git commit: ACCUMULO-3383 Remove unused import

Posted by ct...@apache.org.
ACCUMULO-3383 Remove unused import


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d2aeb5ef
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d2aeb5ef
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d2aeb5ef

Branch: refs/heads/1.6
Commit: d2aeb5ef2443d3f320906f6d3fd99f60b5bd9d8a
Parents: 97f16db
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Dec 18 16:50:30 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:50:30 2014 -0500

----------------------------------------------------------------------
 .../accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java      | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d2aeb5ef/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
index bd1f943..5d6f002 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
@@ -25,7 +25,6 @@ import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.accumulo.start.classloader.AccumuloClassLoader;
 import org.apache.accumulo.start.classloader.vfs.providers.HdfsFileObject;


[5/7] accumulo git commit: ACCUMULO-3383 Remove unused import

Posted by ct...@apache.org.
ACCUMULO-3383 Remove unused import


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/d2aeb5ef
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/d2aeb5ef
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/d2aeb5ef

Branch: refs/heads/master
Commit: d2aeb5ef2443d3f320906f6d3fd99f60b5bd9d8a
Parents: 97f16db
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Dec 18 16:50:30 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:50:30 2014 -0500

----------------------------------------------------------------------
 .../accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java      | 1 -
 1 file changed, 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/d2aeb5ef/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
index bd1f943..5d6f002 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
@@ -25,7 +25,6 @@ import java.net.URLClassLoader;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
-import java.util.concurrent.atomic.AtomicInteger;
 
 import org.apache.accumulo.start.classloader.AccumuloClassLoader;
 import org.apache.accumulo.start.classloader.vfs.providers.HdfsFileObject;


[3/7] accumulo git commit: ACCUMULO-3383 Fix for AccumuloVFSClassloader conflicting cache directories

Posted by ct...@apache.org.
ACCUMULO-3383 Fix for AccumuloVFSClassloader conflicting cache directories

 . AccumuloVFSClassloader no longer creates conflicting local cache directory names when vfs.cache.dir property is set.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/97f16db4
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/97f16db4
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/97f16db4

Branch: refs/heads/master
Commit: 97f16db4d31db63b46985da07228b89f0c346270
Parents: e572d56
Author: Drew Farris <dr...@apache.org>
Authored: Sat Dec 13 23:36:24 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:47:32 2014 -0500

----------------------------------------------------------------------
 .../classloader/vfs/AccumuloVFSClassLoader.java |  8 +-
 .../vfs/AccumuloVFSClassLoaderTest.java         | 80 ++++++++++++++++++++
 2 files changed, 82 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/97f16db4/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
index 983ad7c..bd1f943 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
@@ -92,8 +92,6 @@ public class AccumuloVFSClassLoader {
 
   public static final String VFS_CACHE_DIR = "general.vfs.cache.dir";
   
-  public static final AtomicInteger uniqueDirectoryGenerator = new AtomicInteger(0);
-
   private static ClassLoader parent = null;
   private static volatile ReloadingClassLoader loader = null;
   private static final Object lock = new Object();
@@ -279,10 +277,7 @@ public class AccumuloVFSClassLoader {
     vfs.addMimeTypeMap("application/zip", "zip");
     vfs.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
     vfs.setFilesCache(new SoftRefFilesCache());
-    String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, "");
     File cacheDir = computeTopCacheDir(); 
-    if (!cacheDirPath.isEmpty())
-      cacheDir = new File(cacheDirPath, "" + uniqueDirectoryGenerator.getAndIncrement());
     vfs.setReplicator(new UniqueFileReplicator(cacheDir));
     vfs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
     vfs.init();
@@ -291,8 +286,9 @@ public class AccumuloVFSClassLoader {
   }
 
   private static File computeTopCacheDir() {
+    String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, System.getProperty("java.io.tmpdir"));
     String procName = ManagementFactory.getRuntimeMXBean().getName();
-    return new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
+    return new File(cacheDirPath, "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
   }
 
   public interface Printer {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/97f16db4/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
----------------------------------------------------------------------
diff --git a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
index e7c369e..522c870 100644
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
@@ -23,6 +23,7 @@ import java.net.URLClassLoader;
 
 import org.apache.accumulo.start.classloader.AccumuloClassLoader;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
 import org.apache.commons.vfs2.impl.VFSClassLoader;
 import org.junit.After;
 import org.junit.Assert;
@@ -126,4 +127,83 @@ public class AccumuloVFSClassLoaderTest {
     Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
   }
 
+  @Test
+  public void testDefaultCacheDirectory() throws Exception {
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+
+    File conf = folder1.newFile("accumulo-site.xml");
+    FileWriter out = new FileWriter(conf);
+    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    out.append("<configuration>\n");
+    out.append("<property>\n");
+    out.append("<name>general.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("<property>\n");
+    out.append("<name>general.vfs.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("</configuration>\n");
+    out.close();
+
+    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF", conf.toURI().toURL().toString());
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
+    AccumuloVFSClassLoader.getClassLoader();
+    AccumuloReloadingVFSClassLoader loader = Whitebox.getInternalState(AccumuloVFSClassLoader.class, "loader");
+    DefaultFileSystemManager manager = Whitebox.getInternalState(loader, "vfs");
+    UniqueFileReplicator replicator = Whitebox.getInternalState(manager, "fileReplicator");
+    File tempDir = Whitebox.getInternalState(replicator, "tempDir");
+    String tempDirParent = tempDir.getParent();
+    String tempDirName = tempDir.getName();
+    String javaIoTmpDir = System.getProperty("java.io.tmpdir");
+
+    // trim off any final separator, because java.io.File does the same.
+    if (javaIoTmpDir.endsWith(File.separator)) {
+      javaIoTmpDir = javaIoTmpDir.substring(0, javaIoTmpDir.length() - File.separator.length());
+    }
+
+    Assert.assertTrue(javaIoTmpDir.equals(tempDirParent));
+    Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+    Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+  }
+
+  @Test
+  public void testCacheDirectoryConfigured() throws Exception {
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+    String cacheDir = "/some/random/cache/dir";
+
+    File conf = folder1.newFile("accumulo-site.xml");
+    FileWriter out = new FileWriter(conf);
+    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    out.append("<configuration>\n");
+    out.append("<property>\n");
+    out.append("<name>general.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("<property>\n");
+    out.append("<name>" + AccumuloVFSClassLoader.VFS_CACHE_DIR + "</name>\n");
+    out.append("<value>" + cacheDir + "</value>\n");
+    out.append("</property>\n");
+    out.append("</configuration>\n");
+    out.close();
+
+    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF", conf.toURI().toURL().toString());
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
+    AccumuloVFSClassLoader.getClassLoader();
+    AccumuloReloadingVFSClassLoader loader = Whitebox.getInternalState(AccumuloVFSClassLoader.class, "loader");
+    DefaultFileSystemManager manager = Whitebox.getInternalState(loader, "vfs");
+    UniqueFileReplicator replicator = Whitebox.getInternalState(manager, "fileReplicator");
+    File tempDir = Whitebox.getInternalState(replicator, "tempDir");
+    String tempDirParent = tempDir.getParent();
+    String tempDirName = tempDir.getName();
+    Assert.assertTrue(cacheDir.equals(tempDirParent));
+    Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+    Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+  }
 }


[7/7] accumulo git commit: Merge branch '1.6'

Posted by ct...@apache.org.
Merge branch '1.6'


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/79c0a5ea
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/79c0a5ea
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/79c0a5ea

Branch: refs/heads/master
Commit: 79c0a5eacb47fb6ba1223bc931619c9d498dd2d1
Parents: aa73e7f d2aeb5e
Author: Christopher Tubbs <ct...@apache.org>
Authored: Thu Dec 18 16:53:38 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:53:38 2014 -0500

----------------------------------------------------------------------
 README                                          | 20 +++--
 .../classloader/vfs/AccumuloVFSClassLoader.java |  9 +--
 .../vfs/AccumuloVFSClassLoaderTest.java         | 80 ++++++++++++++++++++
 3 files changed, 97 insertions(+), 12 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/79c0a5ea/README
----------------------------------------------------------------------

http://git-wip-us.apache.org/repos/asf/accumulo/blob/79c0a5ea/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------


[4/7] accumulo git commit: ACCUMULO-3383 Fix for AccumuloVFSClassloader conflicting cache directories

Posted by ct...@apache.org.
ACCUMULO-3383 Fix for AccumuloVFSClassloader conflicting cache directories

 . AccumuloVFSClassloader no longer creates conflicting local cache directory names when vfs.cache.dir property is set.


Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/97f16db4
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/97f16db4
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/97f16db4

Branch: refs/heads/1.6
Commit: 97f16db4d31db63b46985da07228b89f0c346270
Parents: e572d56
Author: Drew Farris <dr...@apache.org>
Authored: Sat Dec 13 23:36:24 2014 -0500
Committer: Christopher Tubbs <ct...@apache.org>
Committed: Thu Dec 18 16:47:32 2014 -0500

----------------------------------------------------------------------
 .../classloader/vfs/AccumuloVFSClassLoader.java |  8 +-
 .../vfs/AccumuloVFSClassLoaderTest.java         | 80 ++++++++++++++++++++
 2 files changed, 82 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/accumulo/blob/97f16db4/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
index 983ad7c..bd1f943 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
@@ -92,8 +92,6 @@ public class AccumuloVFSClassLoader {
 
   public static final String VFS_CACHE_DIR = "general.vfs.cache.dir";
   
-  public static final AtomicInteger uniqueDirectoryGenerator = new AtomicInteger(0);
-
   private static ClassLoader parent = null;
   private static volatile ReloadingClassLoader loader = null;
   private static final Object lock = new Object();
@@ -279,10 +277,7 @@ public class AccumuloVFSClassLoader {
     vfs.addMimeTypeMap("application/zip", "zip");
     vfs.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
     vfs.setFilesCache(new SoftRefFilesCache());
-    String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, "");
     File cacheDir = computeTopCacheDir(); 
-    if (!cacheDirPath.isEmpty())
-      cacheDir = new File(cacheDirPath, "" + uniqueDirectoryGenerator.getAndIncrement());
     vfs.setReplicator(new UniqueFileReplicator(cacheDir));
     vfs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
     vfs.init();
@@ -291,8 +286,9 @@ public class AccumuloVFSClassLoader {
   }
 
   private static File computeTopCacheDir() {
+    String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, System.getProperty("java.io.tmpdir"));
     String procName = ManagementFactory.getRuntimeMXBean().getName();
-    return new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
+    return new File(cacheDirPath, "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
   }
 
   public interface Printer {

http://git-wip-us.apache.org/repos/asf/accumulo/blob/97f16db4/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
----------------------------------------------------------------------
diff --git a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
index e7c369e..522c870 100644
--- a/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
+++ b/start/src/test/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoaderTest.java
@@ -23,6 +23,7 @@ import java.net.URLClassLoader;
 
 import org.apache.accumulo.start.classloader.AccumuloClassLoader;
 import org.apache.commons.io.FileUtils;
+import org.apache.commons.vfs2.impl.DefaultFileSystemManager;
 import org.apache.commons.vfs2.impl.VFSClassLoader;
 import org.junit.After;
 import org.junit.Assert;
@@ -126,4 +127,83 @@ public class AccumuloVFSClassLoaderTest {
     Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
   }
 
+  @Test
+  public void testDefaultCacheDirectory() throws Exception {
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+
+    File conf = folder1.newFile("accumulo-site.xml");
+    FileWriter out = new FileWriter(conf);
+    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    out.append("<configuration>\n");
+    out.append("<property>\n");
+    out.append("<name>general.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("<property>\n");
+    out.append("<name>general.vfs.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("</configuration>\n");
+    out.close();
+
+    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF", conf.toURI().toURL().toString());
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
+    AccumuloVFSClassLoader.getClassLoader();
+    AccumuloReloadingVFSClassLoader loader = Whitebox.getInternalState(AccumuloVFSClassLoader.class, "loader");
+    DefaultFileSystemManager manager = Whitebox.getInternalState(loader, "vfs");
+    UniqueFileReplicator replicator = Whitebox.getInternalState(manager, "fileReplicator");
+    File tempDir = Whitebox.getInternalState(replicator, "tempDir");
+    String tempDirParent = tempDir.getParent();
+    String tempDirName = tempDir.getName();
+    String javaIoTmpDir = System.getProperty("java.io.tmpdir");
+
+    // trim off any final separator, because java.io.File does the same.
+    if (javaIoTmpDir.endsWith(File.separator)) {
+      javaIoTmpDir = javaIoTmpDir.substring(0, javaIoTmpDir.length() - File.separator.length());
+    }
+
+    Assert.assertTrue(javaIoTmpDir.equals(tempDirParent));
+    Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+    Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+  }
+
+  @Test
+  public void testCacheDirectoryConfigured() throws Exception {
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+    String cacheDir = "/some/random/cache/dir";
+
+    File conf = folder1.newFile("accumulo-site.xml");
+    FileWriter out = new FileWriter(conf);
+    out.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
+    out.append("<configuration>\n");
+    out.append("<property>\n");
+    out.append("<name>general.classpaths</name>\n");
+    out.append("<value></value>\n");
+    out.append("</property>\n");
+    out.append("<property>\n");
+    out.append("<name>" + AccumuloVFSClassLoader.VFS_CACHE_DIR + "</name>\n");
+    out.append("<value>" + cacheDir + "</value>\n");
+    out.append("</property>\n");
+    out.append("</configuration>\n");
+    out.close();
+
+    Whitebox.setInternalState(AccumuloClassLoader.class, "SITE_CONF", conf.toURI().toURL().toString());
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "lock", new Object());
+    AccumuloVFSClassLoader.getClassLoader();
+    AccumuloReloadingVFSClassLoader loader = Whitebox.getInternalState(AccumuloVFSClassLoader.class, "loader");
+    DefaultFileSystemManager manager = Whitebox.getInternalState(loader, "vfs");
+    UniqueFileReplicator replicator = Whitebox.getInternalState(manager, "fileReplicator");
+    File tempDir = Whitebox.getInternalState(replicator, "tempDir");
+    String tempDirParent = tempDir.getParent();
+    String tempDirName = tempDir.getName();
+    Assert.assertTrue(cacheDir.equals(tempDirParent));
+    Assert.assertTrue(tempDirName.startsWith("accumulo-vfs-cache-"));
+    Assert.assertTrue(tempDirName.endsWith(System.getProperty("user.name", "nouser")));
+
+    Whitebox.setInternalState(AccumuloVFSClassLoader.class, "loader", (AccumuloReloadingVFSClassLoader) null);
+  }
 }