You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by el...@apache.org on 2014/01/11 01:15:31 UTC
[1/5] git commit: ACCUMULO-2174 Provide a better VFS tmpdir default
that won't collide across processes
Updated Branches:
refs/heads/1.6.0-SNAPSHOT d1b53eda9 -> 9f5637417
refs/heads/master c95030cc9 -> af151d698
ACCUMULO-2174 Provide a better VFS tmpdir default that won't collide across processes
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/db56d8d2
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/db56d8d2
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/db56d8d2
Branch: refs/heads/1.6.0-SNAPSHOT
Commit: db56d8d21dc636e6d271ae4c710ed27196a24506
Parents: 56230eb
Author: Josh Elser <el...@apache.org>
Authored: Fri Jan 10 17:51:29 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Jan 10 18:34:46 2014 -0500
----------------------------------------------------------------------
.../classloader/vfs/AccumuloVFSClassLoader.java | 8 +++--
.../classloader/vfs/UniqueFileReplicator.java | 32 ++++++++++++--------
2 files changed, 24 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/db56d8d2/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 eb653bc..90c6358 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
@@ -18,6 +18,7 @@ package org.apache.accumulo.start.classloader.vfs;
import java.io.File;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
import java.lang.ref.WeakReference;
import java.net.URL;
import java.net.URLClassLoader;
@@ -259,8 +260,9 @@ public class AccumuloVFSClassLoader {
vfs.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
vfs.setFilesCache(new SoftRefFilesCache());
String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, "");
- File cacheDir = new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + System.getProperty("user.name", "nouser"));
- if (!("".equals(cacheDirPath)))
+ String procName = ManagementFactory.getRuntimeMXBean().getName();
+ File cacheDir = new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
+ if (!cacheDirPath.isEmpty())
cacheDir = new File(cacheDirPath);
vfs.setReplicator(new UniqueFileReplicator(cacheDir));
vfs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
@@ -364,7 +366,7 @@ public class AccumuloVFSClassLoader {
return contextManager;
}
-
+
public static void close() {
for (WeakReference<DefaultFileSystemManager> vfsInstance : vfsInstances) {
DefaultFileSystemManager ref = vfsInstance.get();
http://git-wip-us.apache.org/repos/asf/accumulo/blob/db56d8d2/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
index cc19b6e..cdc5248 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
@@ -30,18 +30,20 @@ import org.apache.commons.vfs2.provider.FileReplicator;
import org.apache.commons.vfs2.provider.UriParser;
import org.apache.commons.vfs2.provider.VfsComponent;
import org.apache.commons.vfs2.provider.VfsComponentContext;
+import org.apache.log4j.Logger;
/**
*
*/
public class UniqueFileReplicator implements VfsComponent, FileReplicator {
-
+
private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
+ private static final Logger log = Logger.getLogger(UniqueFileReplicator.class);
private File tempDir;
private VfsComponentContext context;
private List<File> tmpFiles = Collections.synchronizedList(new ArrayList<File>());
-
+
public UniqueFileReplicator(File tempDir) {
this.tempDir = tempDir;
}
@@ -49,38 +51,38 @@ public class UniqueFileReplicator implements VfsComponent, FileReplicator {
@Override
public File replicateFile(FileObject srcFile, FileSelector selector) throws FileSystemException {
String baseName = srcFile.getName().getBaseName();
-
+
try {
tempDir.mkdirs();
String safeBasename = UriParser.encode(baseName, TMP_RESERVED_CHARS).replace('%', '_');
File file = File.createTempFile("vfsr_", "_" + safeBasename, tempDir);
file.deleteOnExit();
-
+
final FileObject destFile = context.toFileObject(file);
destFile.copyFrom(srcFile, selector);
-
+
return file;
} catch (IOException e) {
throw new FileSystemException(e);
}
}
-
+
@Override
public void setLogger(Log logger) {
// TODO Auto-generated method stub
-
+
}
-
+
@Override
public void setContext(VfsComponentContext context) {
this.context = context;
}
-
+
@Override
public void init() throws FileSystemException {
-
+
}
-
+
@Override
public void close() {
synchronized (tmpFiles) {
@@ -88,7 +90,11 @@ public class UniqueFileReplicator implements VfsComponent, FileReplicator {
tmpFile.delete();
}
}
-
- tempDir.delete();
+
+ if (tempDir.exists()) {
+ int numChildren = tempDir.list().length;
+ if (0 == numChildren && !tempDir.delete())
+ log.warn("Cannot delete empty directory: " + tempDir);
+ }
}
}
[2/5] git commit: ACCUMULO-2174 Provide a better VFS tmpdir default
that won't collide across processes
Posted by el...@apache.org.
ACCUMULO-2174 Provide a better VFS tmpdir default that won't collide across processes
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/db56d8d2
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/db56d8d2
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/db56d8d2
Branch: refs/heads/master
Commit: db56d8d21dc636e6d271ae4c710ed27196a24506
Parents: 56230eb
Author: Josh Elser <el...@apache.org>
Authored: Fri Jan 10 17:51:29 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Jan 10 18:34:46 2014 -0500
----------------------------------------------------------------------
.../classloader/vfs/AccumuloVFSClassLoader.java | 8 +++--
.../classloader/vfs/UniqueFileReplicator.java | 32 ++++++++++++--------
2 files changed, 24 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/db56d8d2/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 eb653bc..90c6358 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
@@ -18,6 +18,7 @@ package org.apache.accumulo.start.classloader.vfs;
import java.io.File;
import java.io.IOException;
+import java.lang.management.ManagementFactory;
import java.lang.ref.WeakReference;
import java.net.URL;
import java.net.URLClassLoader;
@@ -259,8 +260,9 @@ public class AccumuloVFSClassLoader {
vfs.setFileContentInfoFactory(new FileContentInfoFilenameFactory());
vfs.setFilesCache(new SoftRefFilesCache());
String cacheDirPath = AccumuloClassLoader.getAccumuloString(VFS_CACHE_DIR, "");
- File cacheDir = new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + System.getProperty("user.name", "nouser"));
- if (!("".equals(cacheDirPath)))
+ String procName = ManagementFactory.getRuntimeMXBean().getName();
+ File cacheDir = new File(System.getProperty("java.io.tmpdir"), "accumulo-vfs-cache-" + procName + "-" + System.getProperty("user.name", "nouser"));
+ if (!cacheDirPath.isEmpty())
cacheDir = new File(cacheDirPath);
vfs.setReplicator(new UniqueFileReplicator(cacheDir));
vfs.setCacheStrategy(CacheStrategy.ON_RESOLVE);
@@ -364,7 +366,7 @@ public class AccumuloVFSClassLoader {
return contextManager;
}
-
+
public static void close() {
for (WeakReference<DefaultFileSystemManager> vfsInstance : vfsInstances) {
DefaultFileSystemManager ref = vfsInstance.get();
http://git-wip-us.apache.org/repos/asf/accumulo/blob/db56d8d2/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
----------------------------------------------------------------------
diff --git a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
index cc19b6e..cdc5248 100644
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
@@ -30,18 +30,20 @@ import org.apache.commons.vfs2.provider.FileReplicator;
import org.apache.commons.vfs2.provider.UriParser;
import org.apache.commons.vfs2.provider.VfsComponent;
import org.apache.commons.vfs2.provider.VfsComponentContext;
+import org.apache.log4j.Logger;
/**
*
*/
public class UniqueFileReplicator implements VfsComponent, FileReplicator {
-
+
private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
+ private static final Logger log = Logger.getLogger(UniqueFileReplicator.class);
private File tempDir;
private VfsComponentContext context;
private List<File> tmpFiles = Collections.synchronizedList(new ArrayList<File>());
-
+
public UniqueFileReplicator(File tempDir) {
this.tempDir = tempDir;
}
@@ -49,38 +51,38 @@ public class UniqueFileReplicator implements VfsComponent, FileReplicator {
@Override
public File replicateFile(FileObject srcFile, FileSelector selector) throws FileSystemException {
String baseName = srcFile.getName().getBaseName();
-
+
try {
tempDir.mkdirs();
String safeBasename = UriParser.encode(baseName, TMP_RESERVED_CHARS).replace('%', '_');
File file = File.createTempFile("vfsr_", "_" + safeBasename, tempDir);
file.deleteOnExit();
-
+
final FileObject destFile = context.toFileObject(file);
destFile.copyFrom(srcFile, selector);
-
+
return file;
} catch (IOException e) {
throw new FileSystemException(e);
}
}
-
+
@Override
public void setLogger(Log logger) {
// TODO Auto-generated method stub
-
+
}
-
+
@Override
public void setContext(VfsComponentContext context) {
this.context = context;
}
-
+
@Override
public void init() throws FileSystemException {
-
+
}
-
+
@Override
public void close() {
synchronized (tmpFiles) {
@@ -88,7 +90,11 @@ public class UniqueFileReplicator implements VfsComponent, FileReplicator {
tmpFile.delete();
}
}
-
- tempDir.delete();
+
+ if (tempDir.exists()) {
+ int numChildren = tempDir.list().length;
+ if (0 == numChildren && !tempDir.delete())
+ log.warn("Cannot delete empty directory: " + tempDir);
+ }
}
}
[3/5] git commit: Merge branch '1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Posted by el...@apache.org.
Merge branch '1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Conflicts:
start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/9f563741
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/9f563741
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/9f563741
Branch: refs/heads/master
Commit: 9f56374178a6daa0c804251db68231e65fcb7ed3
Parents: d1b53ed db56d8d
Author: Josh Elser <el...@apache.org>
Authored: Fri Jan 10 18:43:11 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Jan 10 18:43:11 2014 -0500
----------------------------------------------------------------------
.../classloader/vfs/AccumuloVFSClassLoader.java | 8 +++---
.../classloader/vfs/UniqueFileReplicator.java | 26 ++++++++++----------
2 files changed, 18 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/9f563741/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/9f563741/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
----------------------------------------------------------------------
diff --cc start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
index f60e165,cdc5248..29407f9
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
@@@ -36,11 -36,10 +36,10 @@@ import org.apache.log4j.Logger
*
*/
public class UniqueFileReplicator implements VfsComponent, FileReplicator {
-
- private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
+ private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
private static final Logger log = Logger.getLogger(UniqueFileReplicator.class);
--
++
private File tempDir;
private VfsComponentContext context;
private List<File> tmpFiles = Collections.synchronizedList(new ArrayList<File>());
@@@ -52,10 -51,9 +51,10 @@@
@Override
public File replicateFile(FileObject srcFile, FileSelector selector) throws FileSystemException {
String baseName = srcFile.getName().getBaseName();
-
+
try {
- tempDir.mkdirs();
+ if (!tempDir.mkdirs())
+ log.warn("Unexpected error creating directory " + tempDir);
String safeBasename = UriParser.encode(baseName, TMP_RESERVED_CHARS).replace('%', '_');
File file = File.createTempFile("vfsr_", "_" + safeBasename, tempDir);
file.deleteOnExit();
@@@ -89,10 -87,10 +88,11 @@@
public void close() {
synchronized (tmpFiles) {
for (File tmpFile : tmpFiles) {
- tmpFile.delete();
+ if (!tmpFile.delete())
+ log.warn("File does not exist: " + tmpFile);
}
}
+
if (tempDir.exists()) {
int numChildren = tempDir.list().length;
if (0 == numChildren && !tempDir.delete())
[4/5] git commit: Merge branch '1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Posted by el...@apache.org.
Merge branch '1.5.1-SNAPSHOT' into 1.6.0-SNAPSHOT
Conflicts:
start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/9f563741
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/9f563741
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/9f563741
Branch: refs/heads/1.6.0-SNAPSHOT
Commit: 9f56374178a6daa0c804251db68231e65fcb7ed3
Parents: d1b53ed db56d8d
Author: Josh Elser <el...@apache.org>
Authored: Fri Jan 10 18:43:11 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Jan 10 18:43:11 2014 -0500
----------------------------------------------------------------------
.../classloader/vfs/AccumuloVFSClassLoader.java | 8 +++---
.../classloader/vfs/UniqueFileReplicator.java | 26 ++++++++++----------
2 files changed, 18 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/9f563741/start/src/main/java/org/apache/accumulo/start/classloader/vfs/AccumuloVFSClassLoader.java
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/accumulo/blob/9f563741/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
----------------------------------------------------------------------
diff --cc start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
index f60e165,cdc5248..29407f9
--- a/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
+++ b/start/src/main/java/org/apache/accumulo/start/classloader/vfs/UniqueFileReplicator.java
@@@ -36,11 -36,10 +36,10 @@@ import org.apache.log4j.Logger
*
*/
public class UniqueFileReplicator implements VfsComponent, FileReplicator {
-
- private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
+ private static final char[] TMP_RESERVED_CHARS = new char[] {'?', '/', '\\', ' ', '&', '"', '\'', '*', '#', ';', ':', '<', '>', '|'};
private static final Logger log = Logger.getLogger(UniqueFileReplicator.class);
--
++
private File tempDir;
private VfsComponentContext context;
private List<File> tmpFiles = Collections.synchronizedList(new ArrayList<File>());
@@@ -52,10 -51,9 +51,10 @@@
@Override
public File replicateFile(FileObject srcFile, FileSelector selector) throws FileSystemException {
String baseName = srcFile.getName().getBaseName();
-
+
try {
- tempDir.mkdirs();
+ if (!tempDir.mkdirs())
+ log.warn("Unexpected error creating directory " + tempDir);
String safeBasename = UriParser.encode(baseName, TMP_RESERVED_CHARS).replace('%', '_');
File file = File.createTempFile("vfsr_", "_" + safeBasename, tempDir);
file.deleteOnExit();
@@@ -89,10 -87,10 +88,11 @@@
public void close() {
synchronized (tmpFiles) {
for (File tmpFile : tmpFiles) {
- tmpFile.delete();
+ if (!tmpFile.delete())
+ log.warn("File does not exist: " + tmpFile);
}
}
+
if (tempDir.exists()) {
int numChildren = tempDir.list().length;
if (0 == numChildren && !tempDir.delete())
[5/5] git commit: Merge branch '1.6.0-SNAPSHOT'
Posted by el...@apache.org.
Merge branch '1.6.0-SNAPSHOT'
Project: http://git-wip-us.apache.org/repos/asf/accumulo/repo
Commit: http://git-wip-us.apache.org/repos/asf/accumulo/commit/af151d69
Tree: http://git-wip-us.apache.org/repos/asf/accumulo/tree/af151d69
Diff: http://git-wip-us.apache.org/repos/asf/accumulo/diff/af151d69
Branch: refs/heads/master
Commit: af151d69893fc2f864b77b42ee97742d0af8f89b
Parents: c95030c 9f56374
Author: Josh Elser <el...@apache.org>
Authored: Fri Jan 10 19:14:33 2014 -0500
Committer: Josh Elser <el...@apache.org>
Committed: Fri Jan 10 19:14:33 2014 -0500
----------------------------------------------------------------------
.../classloader/vfs/AccumuloVFSClassLoader.java | 8 +++---
.../classloader/vfs/UniqueFileReplicator.java | 26 ++++++++++----------
2 files changed, 18 insertions(+), 16 deletions(-)
----------------------------------------------------------------------